| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 | import React from 'react';import { noop } from 'lodash';import { IconSidebar } from '@douyinfe/semi-icons';import Button from '../button';import Tooltip from '../tooltip';import { Locale } from '../locale/interface';export interface CollapseButtonProps {    prefixCls?: string;    locale?: Locale['Navigation'];    collapseText?(isCollapsed: boolean): React.ReactNode;    isCollapsed?: boolean;    onClick?(e: boolean): void}export default function CollapseButton({ prefixCls, locale, collapseText, isCollapsed, onClick = noop }: CollapseButtonProps) {    const handleClick = () => {        if (typeof onClick === 'function') {            onClick(!isCollapsed);        }    };    const btnProps = {        icon: <IconSidebar />,        type: 'tertiary',        theme: 'borderless',        onClick: handleClick,    };    let finalCollapseText: React.ReactNode = isCollapsed ? locale?.expandText : locale?.collapseText;    if (typeof collapseText === 'function') {        finalCollapseText = collapseText(isCollapsed);    }    return (        <div className={`${prefixCls}-collapse-btn`}>            {isCollapsed ? (                <Tooltip content={finalCollapseText} position="right">                    <Button {...(btnProps as any)} />                </Tooltip>            ) : (                <Button {...(btnProps as any)}>{finalCollapseText}</Button>            )}        </div>    );}
 |