UNPKG

@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.34 kB
import React, { ReactNode } from 'react'; import PropTypes from 'prop-types'; import { strings } from '@douyinfe/semi-foundation/lib/cjs/anchor/constants'; import AnchorFoundation, { AnchorAdapter } from '@douyinfe/semi-foundation/lib/cjs/anchor/foundation'; import BaseComponent from '../_base/baseComponent'; import Link from './link'; import '@douyinfe/semi-foundation/lib/cjs/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;