import { Badge, IconButton, SidebarCollapseGroup, SidebarCollapseGroupMenu } from '@rocket.chat/fuselage'; import type { TranslationKey } from '@rocket.chat/ui-contexts'; import type { HTMLAttributes, KeyboardEvent, MouseEventHandler } from 'react'; import { useTranslation } from 'react-i18next'; import { useHasLicenseModule } from '../../hooks/useHasLicenseModule'; import { usePreventPropagation } from '../../hooks/usePreventPropagation'; import { useDeferredMenuMount } from '../Item/useDeferredMenuMount'; import CategoryMenu from '../categories/CategoryMenu'; import type { SidebarRoomListGroup } from '../hooks/useRoomList'; import { useUnreadDisplay } from '../hooks/useUnreadDisplay'; type RoomListCollapserProps = { group: SidebarRoomListGroup; canMoveUp: boolean; canMoveDown: boolean; onMoveUp: () => void; onMoveDown: () => void; onClick: MouseEventHandler; onKeyDown: (e: KeyboardEvent) => void; } & Omit, 'onClick' | 'onKeyDown'>; const RoomListCollapser = ({ group, canMoveUp, canMoveDown, onMoveUp, onMoveDown, ...props }: RoomListCollapserProps) => { const { t } = useTranslation(); const { data: hasLicenseModule = false } = useHasLicenseModule('experimental-enterprise-features'); const preventPropagation = usePreventPropagation(); const { mounted: menuVisibility, requestMount, mountNow } = useDeferredMenuMount(); const { unreadTitle, unreadVariant, showUnread, unreadCount } = useUnreadDisplay(group.unreadInfo); const title = group.translateTitle ? t(group.title as TranslationKey) : group.title; return ( {unreadCount.total} ) : undefined } onFocus={mountNow} onPointerEnter={requestMount} menu={ hasLicenseModule ? ( {menuVisibility ? ( ) : ( )} ) : undefined } aria-label={group.collapsed ? t('Expand_group', { group: title }) : t('Collapse_group', { group: title })} {...props} /> ); }; export default RoomListCollapser;