@flexis/ui
Version:
Styleless React Components
62 lines • 2.34 kB
TypeScript
import { HTMLAttributes, SyntheticEvent, ReactElement, PureComponent } from 'react';
import PropTypes from 'prop-types';
import { CombinePropsAndAttributes } from '../../helpers';
import { Align, AlignVariant } from '../common/types';
export * from './DropdownContent';
interface ISelfProps {
active?: boolean;
defaultActive?: boolean;
disabled?: boolean;
blockScroll?: boolean;
hideOnClick?: boolean;
align?: Align;
children: ReactElement<any>[];
transitionDuration?: number;
onToggle?(active: boolean, event: Event | SyntheticEvent): any;
}
export declare type IProps = CombinePropsAndAttributes<ISelfProps, HTMLAttributes<HTMLSpanElement>>;
interface IState {
active: boolean;
contentWithOffset: boolean;
}
export default class Dropdown extends PureComponent<IProps, IState> {
static propTypes: {
onToggle: PropTypes.Requireable<(...args: any[]) => any>;
defaultActive: PropTypes.Requireable<boolean>;
active: PropTypes.Requireable<boolean>;
disabled: PropTypes.Requireable<boolean>;
blockScroll: PropTypes.Requireable<boolean>;
hideOnClick: PropTypes.Requireable<boolean>;
align: PropTypes.Requireable<LineAlignSetting>;
children: PropTypes.Validator<PropTypes.ReactElementLike[]>;
transitionDuration: PropTypes.Requireable<number>;
};
static defaultProps: {
defaultActive: boolean;
disabled: boolean;
blockScroll: boolean;
align: AlignVariant;
transitionDuration: number;
};
static getDerivedStateFromProps({ active, disabled }: IProps, { active: prevActive }: IState): Partial<IState>;
private elementRef;
private contentRef;
private unsubscribeFromOutsideClick;
private unblockScroll;
constructor(props: any);
render(): JSX.Element;
private renderContent;
componentDidMount(): void;
componentWillUnmount(): void;
componentDidUpdate(_: any, { active: prevActive }: IState): void;
private onElementRef;
private onContentRef;
private onToggle;
private onEscPress;
private onOutsideClick;
toggleActiveState(forceState?: boolean, event?: Event | SyntheticEvent): void;
private toggleEffects;
private removeEffects;
private setContentPosition;
}
//# sourceMappingURL=Dropdown.d.ts.map