From b5b8a35accd167e87b8399fc6f61106519ac699e Mon Sep 17 00:00:00 2001 From: Himanshu Aggarwal <aggarwah@mcmaster.ca> Date: Mon, 14 Mar 2022 23:17:30 -0400 Subject: [PATCH] Disable crypto from list if already selected --- src/cryptometrics/components/charts/CompareChart.js | 2 ++ src/cryptometrics/components/dropdown/Dropdown.js | 13 ++++++++----- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/cryptometrics/components/charts/CompareChart.js b/src/cryptometrics/components/charts/CompareChart.js index 26c4ab2..2acd66a 100644 --- a/src/cryptometrics/components/charts/CompareChart.js +++ b/src/cryptometrics/components/charts/CompareChart.js @@ -131,12 +131,14 @@ function CompareChart() { list={listOfCoins.isLoading ? [] : listOfCoins.data} value={firstCrypto} setValue={setFirstCrypto} + disabled={[secondCrypto]} /> <ChevronDoubleRightIcon className="w-5 h-5 dark:text-gray-300" /> <Dropdown list={listOfCoins.isLoading ? [] : listOfCoins.data} value={secondCrypto} setValue={setSecondCrypto} + disabled={[firstCrypto]} /> </div> </div> diff --git a/src/cryptometrics/components/dropdown/Dropdown.js b/src/cryptometrics/components/dropdown/Dropdown.js index 746bae4..024740e 100644 --- a/src/cryptometrics/components/dropdown/Dropdown.js +++ b/src/cryptometrics/components/dropdown/Dropdown.js @@ -11,7 +11,7 @@ function getCoin(list, id) { return null; } -function Dropdown({ list, value, setValue }) { +function Dropdown({ list, value, setValue, disabled }) { const [open, setOpen] = useState(false); useEffect(() => { @@ -28,7 +28,7 @@ function Dropdown({ list, value, setValue }) { onClick={() => setOpen(!open)} > <div className="flex flex-row items-center space-x-2"> - <p>{getCoin(list, value).name}</p> + <p>{getCoin(list, value)?.name}</p> <ChevronDownIcon className="h-5 w-5" /> </div> </button> @@ -41,6 +41,7 @@ function Dropdown({ list, value, setValue }) { onClick={() => setValue(coin.id)} key={index} selected={coin.id === value} + disabled={disabled.includes(coin.id)} > {coin.name} </DropdownItem> @@ -53,14 +54,16 @@ function Dropdown({ list, value, setValue }) { ); } -function DropdownItem({ children, onClick, selected }) { +function DropdownItem({ children, onClick, selected, disabled }) { return ( <div className={classNames("py-2 px-4 rounded-xl mx-2", { + "opacity-75 dark:text-gray-500": disabled, "bg-white dark:text-black": selected, - "hover:bg-dark-600 dark:text-white": !selected, + "hover:bg-dark-600 dark:text-white cursor-pointer": + !disabled && !selected, })} - onClick={!selected && onClick} + onClick={selected || disabled ? undefined : onClick} > {children} </div> -- GitLab