import { faChevronRight, faKey, faMinusSquare, faPencilSquare, faPlusSquare, faSquare } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { SecretInput, Table, TableContainer, Tag, TBody, Td, Th, THead, Tooltip, Tr } from "@app/components/v2"; import { useToggle } from "@app/hooks"; import { DecryptedSecret } from "@app/hooks/api/types"; export enum TDiffModes { NoChange = "no change", Deleted = "deleted", Modified = "modified", Created = "created" } type Props = { mode: TDiffModes; preSecret?: DecryptedSecret; postSecret: DecryptedSecret; }; export type TDiffView = { mode: TDiffModes; pre?: T; post: T; }; export const renderIcon = (mode: TDiffModes) => { if (mode === TDiffModes.NoChange) return ; if (mode === TDiffModes.Deleted) return ; if (mode === TDiffModes.Modified) return ; return ; }; export const SecretItem = ({ mode, preSecret, postSecret }: Props) => { const [isExpanded, setIsExpanded] = useToggle(); const isModified = mode === "modified"; return ( <>
{ if (evt.key === "Enter") setIsExpanded.toggle(); }} >
{renderIcon(mode)}
{mode === "modified" ? ( <>
{preSecret?.key}
v{preSecret?.version}
v{postSecret?.version}
) : ( postSecret.key )}
{isExpanded && (
{isModified ? ( <> ) : ( )} {isModified && ( )} {isModified && ( )} {Boolean(preSecret?.idOverride || postSecret?.idOverride) && ( {isModified && ( )} )} {isModified && ( )} {isModified && ( )}
TypeBefore AfterValue
Key{preSecret?.key}{postSecret.key}
Value
Override
Comment{preSecret?.comment}{postSecret?.comment}
Tags {preSecret?.tags?.map(({ name, id: tagId, tagColor }) => (
{name}
))}
{postSecret?.tags?.map(({ name, id: tagId, tagColor }) => (
{name}
))}
)} ); };