@douyinfe/semi-ui
Version:
A modern, comprehensive, flexible design system and UI library. Connect DesignOps & DevOps. Quickly build beautiful React apps. Maintained by Douyin-fe team.
102 lines (101 loc) • 4.33 kB
TypeScript
import React, { ReactNode } from 'react';
import PropTypes from 'prop-types';
import { strings } from '@douyinfe/semi-foundation/lib/es/anchor/constants';
import AnchorFoundation, { AnchorAdapter } from '@douyinfe/semi-foundation/lib/es/anchor/foundation';
import BaseComponent from '../_base/baseComponent';
import Link from './link';
import '@douyinfe/semi-foundation/lib/es/anchor/anchor.css';
import { ArrayElement } from '../_base/base';
import { ContextValue } from '../configProvider/context';
import { ShowTooltip } from '../typography/interface';
export type { LinkProps } from './link';
export interface AnchorProps {
autoCollapse?: boolean;
className?: string;
children?: ReactNode;
defaultAnchor?: string;
getContainer?: () => HTMLElement | Window;
maxHeight?: string | number;
maxWidth?: string | number;
offsetTop?: number;
position?: ArrayElement<typeof strings.POSITION_SET>;
railTheme?: ArrayElement<typeof strings.SLIDE_COLOR>;
scrollMotion?: boolean;
showTooltip?: boolean | ShowTooltip;
size?: ArrayElement<typeof strings.SIZE>;
style?: React.CSSProperties;
targetOffset?: number;
onChange?: (currentLink: string, previousLink: string) => void;
onClick?: (e: React.MouseEvent<HTMLElement>, currentLink: string) => void;
'aria-label'?: React.AriaAttributes['aria-label'];
}
export interface AnchorState {
activeLink: string;
links: string[];
clickLink: boolean;
scrollHeight: string;
slideBarTop: string;
}
declare class Anchor extends BaseComponent<AnchorProps, AnchorState> {
static contextType: React.Context<ContextValue>;
static Link: typeof Link;
static PropTypes: {
size: PropTypes.Requireable<"default" | "small">;
railTheme: PropTypes.Requireable<"primary" | "tertiary" | "muted">;
className: PropTypes.Requireable<string>;
style: PropTypes.Requireable<object>;
scrollMotion: PropTypes.Requireable<boolean>;
autoCollapse: PropTypes.Requireable<boolean>;
offsetTop: PropTypes.Requireable<number>;
targetOffset: PropTypes.Requireable<number>;
showTooltip: PropTypes.Requireable<boolean>;
position: PropTypes.Requireable<"left" | "top" | "right" | "bottom" | "topLeft" | "topRight" | "leftTop" | "leftBottom" | "rightTop" | "rightBottom" | "bottomLeft" | "bottomRight" | "leftTopOver" | "rightTopOver">;
maxWidth: PropTypes.Requireable<NonNullable<string | number>>;
maxHeight: PropTypes.Requireable<NonNullable<string | number>>;
getContainer: PropTypes.Requireable<(...args: any[]) => any>;
onChange: PropTypes.Requireable<(...args: any[]) => any>;
onClick: PropTypes.Requireable<(...args: any[]) => any>;
defaultAnchor: PropTypes.Requireable<string>;
'aria-label': PropTypes.Requireable<string>;
};
static defaultProps: {
size: string;
railTheme: string;
className: string;
scrollMotion: boolean;
autoCollapse: boolean;
offsetTop: number;
targetOffset: number;
showTooltip: boolean;
maxWidth: "200px";
maxHeight: "750px";
getContainer: (...args: any[]) => void;
onChange: (...args: any[]) => void;
onClick: (...args: any[]) => void;
defaultAnchor: string;
};
foundation: AnchorFoundation;
anchorID: string;
scrollContainer: HTMLElement | Window;
childMap: Record<string, Set<string>>;
handler: () => void;
clickHandler: () => void;
context: ContextValue;
constructor(props: AnchorProps);
get adapter(): AnchorAdapter<AnchorProps, AnchorState>;
addLink: (link: string) => void;
removeLink: (link: string) => void;
handleScroll: () => void;
handleClick: (e: React.MouseEvent<HTMLElement>, link: string) => void;
handleClickLink: () => void;
setChildMap: () => void;
setScrollHeight: () => void;
updateScrollHeight: (prevState: AnchorState, state: AnchorState) => void;
updateChildMap: (prevState: AnchorState, state: AnchorState) => void;
renderChildren: () => any;
componentDidMount(): void;
componentDidUpdate(prevProps: AnchorProps, prevState: AnchorState): void;
componentWillUnmount(): void;
render(): React.JSX.Element;
}
export default Anchor;