jamis
Version:
一种支持通过JSON配置方式生成页面的组件库
63 lines (62 loc) • 2.34 kB
TypeScript
import React from 'react';
import Sortable from 'sortablejs';
import type { TabsCompProps, TabsMode } from '../types';
import TabComponent from './TabComponent';
interface TabsState {
highlightIndex: number;
arrowRightDisabled: boolean;
arrowLeftDisabled: boolean;
isOverflow: boolean;
dragIndicator: null | Record<string, any>;
editingIndex: null | number;
editInputText: null | string;
editOriginText: null | string;
}
export declare class Tabs extends React.Component<TabsCompProps, TabsState> {
static defaultProps: Partial<TabsCompProps>;
static Tab: typeof TabComponent;
navMain: React.RefObject<HTMLUListElement>;
scroll: boolean;
sortable?: Sortable;
dragTip?: HTMLElement;
id: string;
draging: boolean;
toDispose: Array<() => void>;
resizeDom: React.RefObject<HTMLDivElement>;
/** 组件的clientWidth集合 */
clientWidthSet: Set<number>;
checkArrowStatus: import("lodash").DebouncedFunc<() => void>;
constructor(props: TabsCompProps);
componentDidMount(): void;
componentDidUpdate(): void;
componentWillUnmount(): void;
handleRootClick: (ev: MouseEvent) => void;
/**
* 处理内容与容器之间的位置关系
*/
computedWidth(): void;
/**
* 保证选中的tab始终显示在可视区域
*/
showSelected(key?: string | number): void;
handleSelect(key: string | number): void;
handleStartEdit(index: number, title: string): void;
handleEditInputChange(e: React.ChangeEvent<HTMLInputElement>): void;
handleEdit(): void;
dragTipRef(ref: any): void;
destroyDragging(): void;
initDragging(): void;
handleArrow(type: 'left' | 'right'): void;
/**
* 监听导航上的滚动事件
*/
handleWheel(e: WheelEvent): void;
renderNav: (child: any, index: number, childCount: number, showClose: boolean) => JSX.Element | undefined;
renderTab(child: any, index: number): React.DetailedReactHTMLElement<any, HTMLElement> | undefined;
renderArrow(type: 'left' | 'right'): JSX.Element | null | undefined;
handleAddBtn: () => void | undefined;
handleRefreshTab: (index: number) => void | undefined;
renderNavs: (mode: Exclude<TabsMode, "">, showClose?: boolean) => any[] | null;
render(): JSX.Element | null;
}
export default Tabs;