chowa
Version:
UI component library based on React
66 lines (65 loc) • 2.13 kB
TypeScript
/**
* @license chowa v1.1.3
*
* Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import * as React from 'react';
import * as PropTypes from 'prop-types';
export interface AffixProps {
className?: string;
style?: React.CSSProperties;
offsetTop?: number;
offsetBottom?: number;
target?: () => Window | HTMLElement;
onTargetScroll?: () => void;
onTargetResize?: () => void;
onChange?: (affixed?: boolean) => void;
}
export declare type Position = 'static' | 'absolute' | 'fixed' | 'relative';
export interface AffixState {
contentTop: number;
contentLeft: number;
contentWidth: number;
contentHeight: number;
targetTop: number;
targetHeight: number;
targetLeft: number;
affixTop: number;
affixBottom: number;
affixLeft: number;
position: Position;
affixed: boolean;
isBlock: boolean;
isWindow: boolean;
}
declare class Affix extends React.PureComponent<AffixProps, AffixState> {
static propTypes: {
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
offsetTop: PropTypes.Requireable<number>;
offsetBottom: PropTypes.Requireable<number>;
target: PropTypes.Requireable<(...args: any[]) => any>;
onTargetScroll: PropTypes.Requireable<(...args: any[]) => any>;
onTargetResize: PropTypes.Requireable<(...args: any[]) => any>;
onChange: PropTypes.Requireable<(...args: any[]) => any>;
style: PropTypes.Requireable<object>;
className: PropTypes.Requireable<string>;
};
static defaultProps: {
offsetTop: number;
target: () => Window & typeof globalThis;
};
private resizeObserver;
private node;
constructor(props: AffixProps);
componentDidMount(): void;
componentWillUnmount(): void;
componentDidUpdate(preProps: AffixProps): void;
private onScrollHandler;
private onResizeHandler;
private updatePosition;
render(): JSX.Element;
}
export default Affix;