diff --git a/frontend/pages/hosts/components/host-actions.tsx b/frontend/pages/hosts/components/host-actions.tsx new file mode 100644 index 0000000..dd86ee6 --- /dev/null +++ b/frontend/pages/hosts/components/host-actions.tsx @@ -0,0 +1,49 @@ +import React from "react"; +import MenuButton from "@/components/ui/menu-button"; +import { Button, GetProps } from "tamagui"; +import Icons from "@/components/ui/icons"; + +type Props = GetProps & { + onSelect?: (() => void) | null; + onEdit?: (() => void) | null; +}; + +const HostActions = ({ onSelect, onEdit, ...props }: Props) => { + if (!onSelect && !onEdit) { + return null; + } + + return ( + } + {...props} + /> + } + > + {onSelect != null && ( + } + > + Select + + )} + + {onEdit != null && ( + } + > + Edit + + )} + + ); +}; + +export default HostActions; diff --git a/frontend/pages/hosts/components/host-item.tsx b/frontend/pages/hosts/components/host-item.tsx index f41936a..cf174e9 100644 --- a/frontend/pages/hosts/components/host-item.tsx +++ b/frontend/pages/hosts/components/host-item.tsx @@ -10,16 +10,9 @@ type HostItemProps = { selected?: boolean; onMultiTap: () => void; onTap?: () => void; - onEdit?: (() => void) | null; }; -const HostItem = ({ - host, - selected, - onMultiTap, - onTap, - onEdit, -}: HostItemProps) => { +const HostItem = ({ host, selected, onMultiTap, onTap }: HostItemProps) => { return ( - - {onEdit != null && ( - - )} diff --git a/frontend/pages/hosts/components/host-list.tsx b/frontend/pages/hosts/components/host-list.tsx index dd09a85..fb2ac91 100644 --- a/frontend/pages/hosts/components/host-list.tsx +++ b/frontend/pages/hosts/components/host-list.tsx @@ -7,6 +7,7 @@ import { hostFormModal } from "./form"; import { GridLayout } from "@/components/ui/grid-view"; import HostItem from "./host-item"; import { useHosts } from "../hooks/query"; +import HostActions from "./host-actions"; type HostsListProps = { allowEdit?: boolean; @@ -115,7 +116,7 @@ const HostList = ({ 0 ? onSelect : undefined} onMultiTap={(group) => onParentIdChange?.(group.id)} onEdit={allowEdit ? onEdit : undefined} /> @@ -132,9 +133,10 @@ const HostList = ({ 0 ? onSelect : undefined} onMultiTap={onOpenTerminal} onEdit={allowEdit ? onEdit : undefined} + onSelect={onSelectedChange ? onSelect : undefined} /> )} @@ -148,6 +150,7 @@ type ItemListProps = { onTap?: (host: any) => void; onMultiTap?: (host: any) => void; onEdit?: (host: any) => void; + onSelect?: (host: any) => void; }; const ItemList = ({ @@ -156,6 +159,7 @@ const ItemList = ({ onTap, onMultiTap, onEdit, + onSelect, }: ItemListProps) => ( ( - onTap?.(host) : undefined} - onMultiTap={() => onMultiTap?.(host)} - onEdit={onEdit ? () => onEdit?.(host) : undefined} - /> + + onTap?.(host)} + onMultiTap={() => onMultiTap?.(host)} + /> + onSelect?.(host) : undefined} + onEdit={onEdit ? () => onEdit?.(host) : undefined} + /> + )} /> );