import React, { useEffect, useState } from 'react'; import { PeriodicTableFormulaButtons } from '../PeriodicTableFormulaButtons'; import './PeriodicTableModeSwitcher.css'; import classNames from 'classnames'; import { Wrapper as MenuWrapper, Button as MenuButton, Menu, MenuItem } from 'react-aria-menubutton'; import { FaAngleDown, FaAsterisk } from 'react-icons/fa'; import { Tooltip } from '../../data-display/Tooltip'; import { Markdown } from '../../data-display/Markdown'; interface Props { mode: PeriodicTableSelectionMode; allowedModes?: PeriodicTableSelectionMode[]; hideWildcardButton?: boolean; chemicalSystemSelectHelpText?: string; elementsSelectHelpText?: string; onSwitch: (mode: PeriodicTableSelectionMode) => any; onFormulaButtonClick: (value: string) => any; } export enum PeriodicTableSelectionMode { CHEMICAL_SYSTEM = 'Only Elements', ELEMENTS = 'At Least Elements', FORMULA = 'Formula' } export const PeriodicTableModeSwitcher: React.FC = ({ allowedModes = [ 'Formula' as PeriodicTableSelectionMode, 'At Least Elements' as PeriodicTableSelectionMode, 'Only Elements' as PeriodicTableSelectionMode ], ...otherProps }) => { const props = { allowedModes, ...otherProps }; const [mode, setMode] = useState(props.mode); useEffect(() => { setMode(props.mode); }, [props.mode]); const modesMenu = ( { setMode(m); props.onSwitch(m); }} >
{mode}
    {props.allowedModes.map((d, i) => (
  • {d}
  • ))}
); const modesSelector = (
); return ( <>
{modesSelector}
{props.mode === PeriodicTableSelectionMode.FORMULA && ( )} {props.mode === PeriodicTableSelectionMode.CHEMICAL_SYSTEM && ( <>
{!props.hideWildcardButton && ( <> Wildcard element )}
{props.chemicalSystemSelectHelpText && ( {props.chemicalSystemSelectHelpText} )}
)} {props.mode === PeriodicTableSelectionMode.ELEMENTS && (
{props.elementsSelectHelpText && {props.elementsSelectHelpText}}
)}
); };