Files
mattermostest/src/renderer/components/ServerDropdownButton.tsx
Devin Binnie 316beba950 [MM-14093] Rename 'team' to 'server' and 'tab' to 'view' in most cases, some additional cleanup (#2711)
* Rename MattermostTeam -> UniqueServer, MattermostTab -> UniqueView

* Rename 'team' to 'server'

* Some further cleanup

* Rename weirdly named function

* Rename 'tab' to 'view' in most instances

* Fix i18n

* PR feedback
2023-05-08 09:17:01 -04:00

83 lines
2.5 KiB
TypeScript

// Copyright (c) 2016-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import classNames from 'classnames';
import React, {useEffect} from 'react';
import {FormattedMessage} from 'react-intl';
import '../css/components/ServerDropdownButton.scss';
type Props = {
isDisabled?: boolean;
activeServerName?: string;
totalMentionCount: number;
hasUnreads: boolean;
isMenuOpen: boolean;
darkMode: boolean;
}
const ServerDropdownButton: React.FC<Props> = (props: Props) => {
const {isDisabled, activeServerName, totalMentionCount, hasUnreads, isMenuOpen, darkMode} = props;
const buttonRef: React.RefObject<HTMLButtonElement> = React.createRef();
useEffect(() => {
if (!isMenuOpen) {
buttonRef.current?.blur();
}
}, [isMenuOpen]);
const handleToggleButton = (event: React.MouseEvent<HTMLButtonElement>) => {
event.preventDefault();
event.stopPropagation();
if (isMenuOpen) {
window.desktop.closeServersDropdown();
} else {
window.desktop.openServersDropdown();
}
};
let badgeDiv: React.ReactNode;
if (totalMentionCount > 0) {
badgeDiv = (
<div className='ServerDropdownButton__badge-count'>
<span>{totalMentionCount > 99 ? '99+' : totalMentionCount}</span>
</div>
);
} else if (hasUnreads) {
badgeDiv = (
<div className='ServerDropdownButton__badge-unreads'/>
);
}
return (
<button
ref={buttonRef}
disabled={isDisabled}
className={classNames('ServerDropdownButton', {
disabled: isDisabled,
isMenuOpen,
darkMode,
})}
onClick={handleToggleButton}
onDoubleClick={(event) => {
event.stopPropagation();
}}
>
<div className='ServerDropdownButton__badge'>
<i className='icon-server-variant'/>
{badgeDiv}
</div>
{activeServerName && <span>{activeServerName}</span>}
{!activeServerName &&
<FormattedMessage
id='renderer.components.serverDropdownButton.noServersConfigured'
defaultMessage='No servers configured'
/>
}
<i className='icon-chevron-down'/>
</button>
);
};
export default ServerDropdownButton;