import BaseComponent, { BaseProps } from '../_base/baseComponent'; import React from 'react'; import PropTypes from 'prop-types'; import '@douyinfe/semi-foundation/lib/cjs/navigation/navigation.css'; import SubNavFoundation, { SubNavAdapter } from '@douyinfe/semi-foundation/lib/cjs/navigation/subNavFoundation'; import { DropdownProps } from '../dropdown'; import { NavContextType } from './nav-context'; export interface SubNavProps extends BaseProps { disabled?: boolean; dropdownStyle?: React.CSSProperties; icon?: React.ReactNode; indent?: boolean | number; isCollapsed?: boolean; isOpen?: boolean; itemKey?: string | number; level?: number; maxHeight?: number; onMouseEnter?: React.MouseEventHandler; onMouseLeave?: React.MouseEventHandler; text?: React.ReactNode; expandIcon?: React.ReactNode; dropdownProps?: DropdownProps; subDropdownProps?: DropdownProps; } export interface SubNavState { isHovered: boolean; } export default class SubNav extends BaseComponent { static contextType: React.Context; static propTypes: { /** * Unique identification */ itemKey: PropTypes.Requireable>; /** * Copywriting */ text: PropTypes.Requireable>; /** * Whether child navigation is expanded */ isOpen: PropTypes.Requireable; /** * Whether it is in the state of being stowed to the sidebar */ isCollapsed: PropTypes.Requireable; /** * Whether to keep the left Icon placeholder */ indent: PropTypes.Requireable>; /** * Nested child elements */ children: PropTypes.Requireable; style: PropTypes.Requireable; /** * Icon name on the left */ icon: PropTypes.Requireable; /** * Maximum height (for animation) */ maxHeight: PropTypes.Requireable; onMouseEnter: PropTypes.Requireable<(...args: any[]) => any>; onMouseLeave: PropTypes.Requireable<(...args: any[]) => any>; disabled: PropTypes.Requireable; level: PropTypes.Requireable; }; static defaultProps: { level: number; indent: boolean; isCollapsed: boolean; isOpen: boolean; maxHeight: number; disabled: boolean; }; titleRef: React.RefObject; itemRef: React.RefObject; foundation: SubNavFoundation; context: NavContextType; constructor(props: SubNavProps); setItemRef: (ref: HTMLLIElement | React.RefObject) => void; setTitleRef: (ref: HTMLDivElement | React.RefObject) => void; _invokeContextFunc(funcName: string, ...args: any[]): any; get adapter(): SubNavAdapter; handleClick: (e: React.MouseEvent) => void; handleKeyPress: (e: React.KeyboardEvent) => void; handleDropdownVisible: (visible: boolean) => void; renderIcon(icon: React.ReactNode, pos: string, withTransition?: boolean, isToggleIcon?: boolean, key?: number | string): React.JSX.Element; renderTitleDiv(): React.JSX.Element; renderSubUl(): React.JSX.Element; wrapDropdown(elem?: React.ReactNode): React.ReactNode; render(): React.JSX.Element; }