2024-07-18 09:20:17 +00:00
|
|
|
import React from "react";
|
2024-05-10 15:18:24 +00:00
|
|
|
import { InjectedRouter } from "react-router";
|
2024-07-18 09:20:17 +00:00
|
|
|
import { Tab, TabList, TabPanel, Tabs } from "react-tabs";
|
2024-05-03 13:22:20 +00:00
|
|
|
|
2024-06-14 21:39:03 +00:00
|
|
|
import { APP_CONTEXT_ALL_TEAMS_ID } from "interfaces/team";
|
2024-05-03 13:22:20 +00:00
|
|
|
|
|
|
|
|
import Modal from "components/Modal";
|
|
|
|
|
import Button from "components/buttons/Button";
|
2024-07-18 09:20:17 +00:00
|
|
|
import TabsWrapper from "components/TabsWrapper";
|
2024-08-06 14:30:00 +00:00
|
|
|
import PremiumFeatureMessage from "components/PremiumFeatureMessage";
|
2024-05-03 13:22:20 +00:00
|
|
|
|
2024-07-18 09:20:17 +00:00
|
|
|
import AppStoreVpp from "../AppStoreVpp";
|
|
|
|
|
import AddPackage from "../AddPackage";
|
2024-05-03 13:22:20 +00:00
|
|
|
|
|
|
|
|
const baseClass = "add-software-modal";
|
|
|
|
|
|
|
|
|
|
interface IAllTeamsMessageProps {
|
|
|
|
|
onExit: () => void;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const AllTeamsMessage = ({ onExit }: IAllTeamsMessageProps) => {
|
|
|
|
|
return (
|
|
|
|
|
<>
|
|
|
|
|
<p>
|
|
|
|
|
Please select a team first. Software can't be added when{" "}
|
|
|
|
|
<b>All teams</b> is selected.
|
|
|
|
|
</p>
|
|
|
|
|
<div className="modal-cta-wrap">
|
|
|
|
|
<Button variant="brand" onClick={onExit}>
|
|
|
|
|
Done
|
|
|
|
|
</Button>
|
|
|
|
|
</div>
|
|
|
|
|
</>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
interface IAddSoftwareModalProps {
|
|
|
|
|
teamId: number;
|
2024-05-10 15:18:24 +00:00
|
|
|
router: InjectedRouter;
|
2024-05-03 13:22:20 +00:00
|
|
|
onExit: () => void;
|
2024-08-02 15:12:43 +00:00
|
|
|
setAddedSoftwareToken: (token: string) => void;
|
2024-08-06 14:30:00 +00:00
|
|
|
isFreeTier?: boolean;
|
2024-05-03 13:22:20 +00:00
|
|
|
}
|
|
|
|
|
|
2024-05-10 15:18:24 +00:00
|
|
|
const AddSoftwareModal = ({
|
|
|
|
|
teamId,
|
|
|
|
|
router,
|
|
|
|
|
onExit,
|
2024-08-02 15:12:43 +00:00
|
|
|
setAddedSoftwareToken,
|
2024-08-06 14:30:00 +00:00
|
|
|
isFreeTier,
|
2024-05-10 15:18:24 +00:00
|
|
|
}: IAddSoftwareModalProps) => {
|
2024-08-06 14:30:00 +00:00
|
|
|
const renderModalContent = () => {
|
|
|
|
|
if (isFreeTier) {
|
|
|
|
|
return (
|
|
|
|
|
<>
|
|
|
|
|
<PremiumFeatureMessage alignment="left" />{" "}
|
|
|
|
|
<div className="modal-cta-wrap">
|
|
|
|
|
<Button variant="brand" onClick={onExit}>
|
|
|
|
|
Done
|
|
|
|
|
</Button>
|
|
|
|
|
</div>
|
|
|
|
|
</>
|
|
|
|
|
);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (teamId === APP_CONTEXT_ALL_TEAMS_ID) {
|
|
|
|
|
return <AllTeamsMessage onExit={onExit} />;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (
|
|
|
|
|
<TabsWrapper className={`${baseClass}__tabs`}>
|
|
|
|
|
<Tabs>
|
|
|
|
|
<TabList>
|
|
|
|
|
<Tab>Package</Tab>
|
|
|
|
|
<Tab>App Store (VPP)</Tab>
|
|
|
|
|
</TabList>
|
|
|
|
|
<TabPanel>
|
|
|
|
|
<AddPackage
|
|
|
|
|
teamId={teamId}
|
|
|
|
|
router={router}
|
|
|
|
|
onExit={onExit}
|
|
|
|
|
setAddedSoftwareToken={setAddedSoftwareToken}
|
|
|
|
|
/>
|
|
|
|
|
</TabPanel>
|
|
|
|
|
<TabPanel>
|
|
|
|
|
<AppStoreVpp
|
|
|
|
|
teamId={teamId}
|
|
|
|
|
router={router}
|
|
|
|
|
onExit={onExit}
|
|
|
|
|
setAddedSoftwareToken={setAddedSoftwareToken}
|
|
|
|
|
/>
|
|
|
|
|
</TabPanel>
|
|
|
|
|
</Tabs>
|
|
|
|
|
</TabsWrapper>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
2024-05-03 13:22:20 +00:00
|
|
|
return (
|
|
|
|
|
<Modal
|
|
|
|
|
title="Add software"
|
|
|
|
|
onExit={onExit}
|
|
|
|
|
width="large"
|
|
|
|
|
className={baseClass}
|
|
|
|
|
>
|
2024-08-06 14:30:00 +00:00
|
|
|
{renderModalContent()}
|
2024-05-03 13:22:20 +00:00
|
|
|
</Modal>
|
|
|
|
|
);
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
export default AddSoftwareModal;
|