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;