Refactor: put freeze inside more

This commit is contained in:
igorrCarvalho 2024-06-08 19:20:32 -03:00
commit ce4550d2ce
7 changed files with 54 additions and 51 deletions

View file

@ -804,6 +804,10 @@ export const defaultShortcuts = [
name: "Update", name: "Update",
shortcut: `${navigator.userAgent.toUpperCase().includes("MAC") ? "Cmd" : "Ctrl"} + U`, shortcut: `${navigator.userAgent.toUpperCase().includes("MAC") ? "Cmd" : "Ctrl"} + U`,
}, },
{
name: "Freeze",
shortcut: `${navigator.userAgent.toUpperCase().includes("MAC") ? "Cmd" : "Ctrl"} + F`,
},
]; ];
export const unavailableShortcutss = [ export const unavailableShortcutss = [
@ -825,6 +829,7 @@ export const unavailableShortcutss = [
"CTRL + Y", "CTRL + Y",
"CTRL + J", "CTRL + J",
"CTRL + U", "CTRL + U",
"CTRL + F",
]; ];
export const DEFAULT_TABLE_ALERT_MSG = `Oops! It seems there's no data to display right now. Please check back later.`; export const DEFAULT_TABLE_ALERT_MSG = `Oops! It seems there's no data to display right now. Please check back later.`;

View file

@ -148,6 +148,20 @@ export default function NodeToolbarComponent({
downloadNode(flowComponent!); downloadNode(flowComponent!);
} }
function handleFreeze(e: KeyboardEvent) {
e.preventDefault();
setNode(data.id, (old) => ({
...old,
data: {
...old.data,
node: {
...old.data.node,
frozen: old.data?.node?.frozen ? false : true,
},
},
}));
}
const advanced = useShortcutsStore((state) => state.advanced); const advanced = useShortcutsStore((state) => state.advanced);
const minimize = useShortcutsStore((state) => state.minimize); const minimize = useShortcutsStore((state) => state.minimize);
const share = useShortcutsStore((state) => state.share); const share = useShortcutsStore((state) => state.share);
@ -157,6 +171,7 @@ export default function NodeToolbarComponent({
const group = useShortcutsStore((state) => state.group); const group = useShortcutsStore((state) => state.group);
const update = useShortcutsStore((state) => state.update); const update = useShortcutsStore((state) => state.update);
const download = useShortcutsStore((state) => state.download); const download = useShortcutsStore((state) => state.download);
const freeze = useShortcutsStore((state) => state.freeze);
useHotkeys(minimize, handleMinimizeWShortcut); useHotkeys(minimize, handleMinimizeWShortcut);
useHotkeys(update, handleUpdateWShortcut); useHotkeys(update, handleUpdateWShortcut);
@ -167,7 +182,7 @@ export default function NodeToolbarComponent({
useHotkeys(save, handleSaveWShortcut); useHotkeys(save, handleSaveWShortcut);
useHotkeys(docs, handleDocsWShortcut); useHotkeys(docs, handleDocsWShortcut);
useHotkeys(download, handleDownloadWShortcut); useHotkeys(download, handleDownloadWShortcut);
useHotkeys("space", handleCodeWShortcut); useHotkeys(freeze, handleFreeze);
const isMinimal = numberOfHandles <= 1; const isMinimal = numberOfHandles <= 1;
const isGroup = data.node?.flow ? true : false; const isGroup = data.node?.flow ? true : false;
@ -233,6 +248,18 @@ export default function NodeToolbarComponent({
} }
saveComponent(cloneDeep(data), false); saveComponent(cloneDeep(data), false);
break; break;
case "freeze":
setNode(data.id, (old) => ({
...old,
data: {
...old.data,
node: {
...old.data.node,
frozen: old.data?.node?.frozen ? false : true,
},
},
}));
break;
case "code": case "code":
setOpenModal(!openModal); setOpenModal(!openModal);
break; break;
@ -436,36 +463,6 @@ export default function NodeToolbarComponent({
</button> </button>
</ShadTooltip> </ShadTooltip>
<ShadTooltip content="Freeze" side="top">
<button
className={classNames(
"relative -ml-px inline-flex items-center bg-background px-2 py-2 text-foreground shadow-md ring-1 ring-inset ring-ring transition-all duration-500 ease-in-out hover:bg-muted focus:z-10",
)}
onClick={(event) => {
event.preventDefault();
setNode(data.id, (old) => ({
...old,
data: {
...old.data,
node: {
...old.data.node,
frozen: old.data?.node?.frozen ? false : true,
},
},
}));
}}
>
<IconComponent
name="Snowflake"
className={cn(
"h-4 w-4 transition-all",
// TODO UPDATE THIS COLOR TO BE A VARIABLE
frozen ? "animate-wiggle text-ice" : "",
)}
/>
</button>
</ShadTooltip>
<Select onValueChange={handleSelectChange} value=""> <Select onValueChange={handleSelectChange} value="">
<ShadTooltip content="More" side="top"> <ShadTooltip content="More" side="top">
<SelectTrigger> <SelectTrigger>
@ -630,7 +627,18 @@ export default function NodeToolbarComponent({
/> />
</SelectItem> </SelectItem>
)} )}
<SelectItem value="freeze">
<ToolbarSelectItem
shortcut={
shortcuts.find((obj) => obj.name === "Freeze")?.shortcut!
}
isMac={navigator.userAgent.toUpperCase().includes("MAC")}
value={"Freeze"}
icon={"Snowflake"}
dataTestId="group-button-modal"
style={`${frozen ? " text-ice" : ""} transition-all`}
/>
</SelectItem>
<SelectItem value={"delete"} className="focus:bg-red-400/[.20]"> <SelectItem value={"delete"} className="focus:bg-red-400/[.20]">
<div className="font-red flex text-status-red"> <div className="font-red flex text-status-red">
<IconComponent <IconComponent

View file

@ -4,7 +4,7 @@ import { toolbarSelectItemProps } from "../../../../../types/components";
export default function ToolbarSelectItem({ export default function ToolbarSelectItem({
value, value,
icon, icon,
styleObj, style,
dataTestId, dataTestId,
ping, ping,
shortcut, shortcut,
@ -24,17 +24,15 @@ export default function ToolbarSelectItem({
if (!hasShift) shortcutWPlus = filteredShortcut.join("+"); if (!hasShift) shortcutWPlus = filteredShortcut.join("+");
return ( return (
<div className="flex" data-testid={dataTestId}> <div className={`flex ${style}`} data-testid={dataTestId}>
<ForwardedIconComponent <ForwardedIconComponent
name={icon} name={icon}
className={`relative top-0.5 mr-2 h-4 w-4 ${styleObj?.iconClasses} ${ className={`relative top-0.5 mr-2 h-4 w-4 ${
ping && "animate-pulse text-green-500" ping && "animate-pulse text-green-500"
}`} }`}
/> />
<span className={styleObj?.valueClasses}>{value}</span> <span>{value}</span>
<span <span className={`absolute right-2 top-[0.43em] flex `}>
className={`absolute right-2 top-[0.43em] flex ${styleObj?.keyClasses}`}
>
{hasShift ? ( {hasShift ? (
<> <>
{filteredShortcut[0]} {filteredShortcut[0]}

View file

@ -26,8 +26,6 @@ export default function EditShortcutButton({
disable?: boolean; disable?: boolean;
setSelected: (selected: string[]) => void; setSelected: (selected: string[]) => void;
}): JSX.Element { }): JSX.Element {
const isMac = navigator.userAgent.toUpperCase().includes("MAC");
console.log(shortcut[0]?.split(" ")[0].toLowerCase());
let shortcutInitialValue = let shortcutInitialValue =
defaultShortcuts.length > 0 defaultShortcuts.length > 0
? defaultShortcuts.find( ? defaultShortcuts.find(
@ -82,7 +80,6 @@ export default function EditShortcutButton({
fixCombination[0] = "mod"; fixCombination[0] = "mod";
} }
const shortcutName = shortcut[0].split(" ")[0].toLowerCase(); const shortcutName = shortcut[0].split(" ")[0].toLowerCase();
console.log(shortcutName);
setUniqueShortcut(shortcutName, fixCombination.join("").toLowerCase()); setUniqueShortcut(shortcutName, fixCombination.join("").toLowerCase());
console.log(newCombination); console.log(newCombination);
setShortcuts(newCombination, unavailable); setShortcuts(newCombination, unavailable);

View file

@ -16,7 +16,7 @@ export const useShortcutsStore = create<shortcutsStoreType>((set, get) => ({
open: "mod+k", open: "mod+k",
advanced: "mod+shift+a", advanced: "mod+shift+a",
minimize: "mod+shift+q", minimize: "mod+shift+q",
code: "mod+shift+u", code: "space",
copy: "mod+c", copy: "mod+c",
duplicate: "mod+d", duplicate: "mod+d",
share: "mod+shift+s", share: "mod+shift+s",
@ -29,6 +29,7 @@ export const useShortcutsStore = create<shortcutsStoreType>((set, get) => ({
api: "mod+r", api: "mod+r",
update: "mod+u", update: "mod+u",
download: "mod+j", download: "mod+j",
freeze: "mod+f",
updateUniqueShortcut: (name, combination) => { updateUniqueShortcut: (name, combination) => {
set({ set({
[name]: combination, [name]: combination,

View file

@ -781,14 +781,7 @@ export type toolbarSelectItemProps = {
isMac: boolean; isMac: boolean;
value: string; value: string;
icon: string; icon: string;
styleObj?: { style?: string;
iconClasses?: string;
commandClasses?: string;
shiftClasses?: string;
ctrlClasses?: string;
keyClasses?: string;
valueClasses?: string;
};
dataTestId: string; dataTestId: string;
ping?: boolean; ping?: boolean;
shortcut: string; shortcut: string;

View file

@ -39,6 +39,7 @@ export type shortcutsStoreType = {
delete: string; delete: string;
update: string; update: string;
download: string; download: string;
freeze: string;
shortcuts: Array<{ shortcuts: Array<{
name: string; name: string;
shortcut: string; shortcut: string;