import React, { useRef, useCallback, useState, useMemo, useEffect } from 'react'; import { Button, PositionAnimated, Margins, Options, useCursor, Box, } from '@rocket.chat/fuselage'; import { useTranslation } from '../contexts/TranslationContext'; import { UserStatus } from './UserStatus'; const UserStatusMenu = ({ onChange = () => {}, optionWidth, initialStatus = 'offline', placement = 'bottom-end', ...props }) => { const t = useTranslation(); const [status, setStatus] = useState(initialStatus); const options = useMemo(() => { const renderOption = (status, label) => {label} ; return [ ['online', renderOption('online', t('Online'))], ['busy', renderOption('busy', t('Busy'))], ['away', renderOption('away', t('Away'))], ['offline', renderOption('offline', t('Invisible'))], ]; }, [t]); const [cursor, handleKeyDown, handleKeyUp, reset, [visible, hide, show]] = useCursor(-1, options, ([selected], [, hide]) => { setStatus(selected); reset(); hide(); }); const ref = useRef(); const onClick = useCallback(() => { ref.current.focus() & show(); ref.current.classList.add('focus-visible'); }, [show]); const handleSelection = useCallback(([selected]) => { setStatus(selected); reset(); hide(); }, [hide, reset]); useEffect(() => onChange(status), [status, onChange]); return ( <> ); }; export default UserStatusMenu;