/* * Copyright (c) 2020 - present Cloudogu GmbH * * This program is free software: you can redistribute it and/or modify it under * the terms of the GNU Affero General Public License as published by the Free * Software Foundation, version 3. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more * details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see https://www.gnu.org/licenses/. */ import React, { FC, useEffect, useState } from "react"; import { useTranslation } from "react-i18next"; import { Checkbox } from "@scm-manager/ui-core"; import { WhitespaceMode } from "./LoadingDiff"; type DiffDropDownProps = { collapseDiffs: () => void; /** * @deprecated Use isIgnoreWhitespaces/setIgnoreWhitespaces instead. */ ignoreWhitespaces?: () => void; renderOnMount: boolean; ignoreWhitespacesMode?: WhitespaceMode; setIgnoreWhitespacesMode?: (hideWhiteSpaceMode: WhitespaceMode) => void; }; const DiffDropDown: FC = ({ collapseDiffs, ignoreWhitespaces, renderOnMount, ignoreWhitespacesMode, setIgnoreWhitespacesMode, }) => { const [t] = useTranslation("repos"); const [isOpen, setOpen] = useState(false); // This is a hack and it needs to be here until we fix the re rendering problem upon changing the whitespaces in the diffs useEffect(() => { if (renderOnMount) { if (setIgnoreWhitespacesMode && ignoreWhitespacesMode) { setIgnoreWhitespacesMode(ignoreWhitespacesMode); } else if (ignoreWhitespaces) { ignoreWhitespaces(); ignoreWhitespaces(); } else { throw new Error("Neither setIgnoreWhitesspaces nor ignoreWhitespaces set for DiffDropDown!"); } } }, []); const handleOpen = () => { setOpen(!isOpen); }; const handleChange: React.ChangeEventHandler = (event) => { if (setIgnoreWhitespacesMode) { setIgnoreWhitespacesMode(event.target.checked ? "ALL" : "NONE"); } }; return (
); }; export default DiffDropDown;