diff --git a/src/client/components/ComicDetail.tsx b/src/client/components/ComicDetail.tsx index 4e7048f..e8e6196 100644 --- a/src/client/components/ComicDetail.tsx +++ b/src/client/components/ComicDetail.tsx @@ -9,16 +9,18 @@ import { useDispatch, useSelector } from "react-redux"; import { useParams } from "react-router-dom"; import Card from "./Carda"; import { ComicVineMatchPanel } from "./ComicDetail/ComicVineMatchPanel"; -import { VolumeInformation } from "./ComicDetail/Tabs/VolumeInformation"; -import { RawFileDetails } from "./ComicDetail/RawFileDetails"; import { ArchiveOperations } from "./ComicDetail/Tabs/ArchiveOperations"; import { ComicInfoXML } from "./ComicDetail/Tabs/ComicInfoXML"; import AcquisitionPanel from "./ComicDetail/AcquisitionPanel"; import DownloadsPanel from "./ComicDetail/DownloadsPanel"; +import { VolumeInformation } from "./ComicDetail/Tabs/VolumeInformation"; +import { RawFileDetails } from "./ComicDetail/RawFileDetails"; + +import TabControls from "./ComicDetail/TabControls"; import { EditMetadataPanel } from "./ComicDetail/EditMetadataPanel"; import { Menu } from "./ComicDetail/ActionMenu/Menu"; -import { isEmpty, isUndefined, isNil } from "lodash"; +import { isEmpty, isUndefined, isNil, find, filter, omitBy } from "lodash"; import { RootState } from "threetwo-ui-typings"; import { getComicBookDetailById } from "../actions/comicinfo.actions"; @@ -51,7 +53,7 @@ type ComicDetailProps = {}; export const ComicDetail = ({}: ComicDetailProps): ReactElement => { const [page, setPage] = useState(1); - const [active, setActive] = useState(1); + const [visible, setVisible] = useState(false); const [slidingPanelContentId, setSlidingPanelContentId] = useState(""); const [modalIsOpen, setIsOpen] = useState(false); @@ -248,45 +250,13 @@ export const ComicDetail = ({}: ComicDetailProps): ReactElement => { ]; // filtered Tabs const filteredTabs = tabGroup.filter((tab) => tab.shouldShow); - - // Tabs - const MetadataTabGroup = () => { - return ( - <> -
- -
- {filteredTabs.map(({ id, content }) => { - return active === id ? content : null; - })} - - ); - }; + const filteredTabIds = tabGroup + .map((tab) => { + if (tab.shouldShow) { + return tab.id; + } + }) + .filter((tab) => !isNil(tab)); // Determine which cover image to use: // 1. from the locally imported or @@ -369,7 +339,14 @@ export const ComicDetail = ({}: ComicDetailProps): ReactElement => { - {} + { + + } state.settings.data); const { ADCPPSocket } = useContext(AirDCPPSocketContext); diff --git a/src/client/components/ComicDetail/TabControls.tsx b/src/client/components/ComicDetail/TabControls.tsx new file mode 100644 index 0000000..9aff06b --- /dev/null +++ b/src/client/components/ComicDetail/TabControls.tsx @@ -0,0 +1,48 @@ +import React, { ReactElement, useEffect, useState } from "react"; +import { isEmpty, isNil, isUndefined } from "lodash"; + +export const TabControls = (props): ReactElement => { + const { comicBookDetailData, filteredTabIds, filteredTabs } = props; + const [active, setActive] = useState(filteredTabIds[0]); + console.log(filteredTabIds); + useEffect(() => { + setActive(filteredTabIds[0]); + }, [filteredTabIds]) + return ( + <> +
+ +
+ {filteredTabs.map(({ id, content }) => { + return active === id ? content : null; + })} + + ); +}; + +export default TabControls;