import { useState } from 'react'; import styles from './TitleBar.module.less'; interface TitleBarProps { titleText: string; titleTextColor: string; titleTextFontSize: string; titleBarHeight: string; titleBarColor: string; iconSize: string; iconColor: string; onMinimize: () => void; onMaximize: () => void; onUnMaximize: () => void; onClose: () => void; } const Icons = { minimize: , maximize: , restore: , close: , }; const TitleBar = (props: TitleBarProps) => { const { titleText, titleTextColor, titleTextFontSize, titleBarHeight, titleBarColor, iconSize, iconColor, onMinimize, onMaximize, onUnMaximize, onClose, } = props; function getIconItemStyle() { return { width: iconSize, height: iconSize, }; } const iconItemStyle = getIconItemStyle(); const [isMaximized, setIsMaximized] = useState(false); const toggleMaximize = () => { if (isMaximized) { onUnMaximize(); } else { onMaximize(); } setIsMaximized(!isMaximized); }; return (
{titleText}
onMinimize()} > {Icons.minimize}
toggleMaximize()} > {isMaximized ? Icons.restore : Icons.maximize}
onClose()} > {Icons.close}
); }; TitleBar.defaultProps = { titleText: '', titleTextColor: '#fff', titleTextFontSize: '16px', titleBarHeight: '32px', titleBarColor: '#3d3c3c', iconSize: '12px', iconColor: '#fff', onMinimize() {}, onMaximize() {}, onUnMaximize() {}, onClose() {}, }; export default TitleBar;