RocketChat/Rocket.Chat

View on GitHub
apps/meteor/client/views/composer/EmojiPicker/EmojiPickerDropDown.tsx

Summary

Maintainability
A
0 mins
Test Coverage
import { Dropdown as DropdownMobile } from '@rocket.chat/fuselage';
import { useLayout } from '@rocket.chat/ui-contexts';
import type { ReactNode } from 'react';
import React, { forwardRef } from 'react';

import EmojiPickerDesktopDropdown from './EmojiPickerDesktopDropdown';

type EmojiPickerDropdownProps<R> = {
    children: ReactNode;
    reference: React.RefObject<R>;
};

const EmojiPickerDropdown = forwardRef(function EmojiPickerDropdown<TReferenceElement extends HTMLElement>(
    { children, reference }: EmojiPickerDropdownProps<TReferenceElement>,
    ref: React.ForwardedRef<HTMLElement>,
) {
    const { isMobile } = useLayout();

    const Dropdown = isMobile ? DropdownMobile : EmojiPickerDesktopDropdown;

    return (
        <Dropdown ref={ref} reference={reference}>
            {children}
        </Dropdown>
    );
});

export default EmojiPickerDropdown;