Skip to content
Snippets Groups Projects

feat(map): context menu

Merged Mateusz Bolewski requested to merge feat/context-menu into development
Files
27
 
import { contextMenuSelector } from '@/redux/contextMenu/contextMenu.selector';
 
import { useAppSelector } from '@/redux/hooks/useAppSelector';
 
import React from 'react';
 
import { twMerge } from 'tailwind-merge';
 
import { searchedBioEntityElementUniProtIdSelector } from '@/redux/bioEntity/bioEntity.selectors';
 
import { FIRST_ARRAY_ELEMENT, SECOND_ARRAY_ELEMENT } from '@/constants/common';
 
 
export const ContextMenu = (): React.ReactNode => {
 
const { isOpen, coordinates } = useAppSelector(contextMenuSelector);
 
const unitProtId = useAppSelector(searchedBioEntityElementUniProtIdSelector);
 
 
const isUnitProtIdAvailable = (): boolean => unitProtId !== undefined;
 
 
const getUnitProtId = (): string | undefined => {
 
return isUnitProtIdAvailable() ? unitProtId : 'no UnitProt ID available';
 
};
 
 
return (
 
<div
 
className={twMerge(
 
'absolute z-10 rounded-lg border border-[#DBD9D9] bg-white p-4',
 
isOpen ? '' : 'hidden',
 
)}
 
style={{
 
left: `${coordinates[FIRST_ARRAY_ELEMENT]}px`,
 
top: `${coordinates[SECOND_ARRAY_ELEMENT]}px`,
 
}}
 
>
 
<div
 
className={twMerge(
 
'cursor-pointer',
 
!isUnitProtIdAvailable() ? 'cursor-not-allowed text-greyscale-700' : '',
 
)}
 
>
 
Open MolArt ({getUnitProtId()})
 
</div>
 
</div>
 
);
 
};
Loading