@wix/design-system
Version:
@wix/design-system
168 lines • 7.44 kB
TypeScript
import React, { PureComponent } from 'react';
import PropTypes from 'prop-types';
import { ResizeSensor } from 'css-element-queries';
import PageHeader, { HeaderProps } from './components/Header';
import { SectionProps } from './components/Section';
import { ContentProps, PageProps, TailProps, FixedContentProps, FixedFooterProps } from './Page.types';
type DefaultProps = Required<Pick<PageProps, 'minWidth' | 'maxWidth' | 'scrollProps'>>;
type Props = PageProps & DefaultProps;
type State = {
headerContainerHeight: number;
headerWrapperHeight: number;
tailHeight: number;
footerHeight: number;
pageHeight?: number;
windowHeight?: number;
minimized: boolean;
};
type HeaderElement = React.ReactElement<HeaderProps>;
type SectionElement = React.ReactElement<SectionProps>;
type ContentElement = React.ReactElement<ContentProps>;
type FixedContentElement = React.ReactElement<FixedContentProps>;
type TailElement = React.ReactElement<TailProps>;
type FixedFooterElement = React.ReactElement<FixedFooterProps>;
type ChildrenObject = {
PageHeader?: HeaderElement;
Section?: SectionElement;
PageContent?: ContentElement;
PageFixedContent?: FixedContentElement;
PageTail?: TailElement;
FixedFooter?: FixedFooterElement;
};
declare class Page extends PureComponent<Props, State> {
static displayName: string;
static defaultProps: DefaultProps;
static propTypes: {
dataHook: PropTypes.Requireable<string>;
backgroundImageUrl: PropTypes.Requireable<string>;
maxWidth: PropTypes.Requireable<number>;
minWidth: PropTypes.Requireable<number>;
horizontalScroll: PropTypes.Requireable<boolean>;
height: PropTypes.Requireable<string>;
sidePadding: PropTypes.Requireable<number>;
className: PropTypes.Requireable<string>;
gradientClassName: PropTypes.Requireable<string>;
scrollableContentRef: PropTypes.Requireable<(...args: any[]) => any>;
scrollProps: PropTypes.Requireable<PropTypes.InferProps<{
onScrollAreaChanged: React.Validator<((scrollChangedData: import("../common/ScrollableContainer").ScrollAreaData) => void) | null | undefined> | undefined;
onScrollChanged: React.Validator<((target: HTMLElement) => void) | null | undefined> | undefined;
}>>;
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
zIndex: PropTypes.Requireable<number>;
};
static Header: typeof PageHeader;
static Section: {
({ dataHook, showDivider, title, subtitle, actionsBar, className, }: SectionProps): React.JSX.Element;
displayName: string;
propTypes: {
dataHook: PropTypes.Requireable<string>;
className: PropTypes.Requireable<string>;
title: PropTypes.Requireable<PropTypes.ReactNodeLike>;
subtitle: PropTypes.Requireable<PropTypes.ReactNodeLike>;
actionsBar: PropTypes.Requireable<PropTypes.ReactNodeLike>;
showDivider: PropTypes.Requireable<boolean>;
};
};
static Content: {
({ children, stickyStyle }: ContentProps): any;
displayName: string;
propTypes: {
children: PropTypes.Validator<NonNullable<PropTypes.ReactNodeLike>>;
className: PropTypes.Requireable<string>;
fullScreen: PropTypes.Requireable<boolean>;
};
};
static FixedContent: {
(props: {
children: React.ReactNode;
}): React.ReactNode;
displayName: string;
propTypes: {
children: PropTypes.Validator<PropTypes.ReactElementLike>;
};
};
static Tail: {
({ children, minimized }: TailProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
displayName: string;
propTypes: {
children: PropTypes.Validator<PropTypes.ReactElementLike>;
minimized: PropTypes.Requireable<boolean>;
};
};
static FixedFooter: {
({ children }: FixedContentProps): React.ReactElement<any, string | React.JSXElementConstructor<any>>;
displayName: string;
propTypes: {
children: PropTypes.Validator<PropTypes.ReactElementLike>;
};
};
static Sticky: {
({ children, className, style, ...props }: import("./Page.types").StickyProps): React.JSX.Element;
displayName: string;
propTypes: {
children: PropTypes.Validator<PropTypes.ReactElementLike>;
style: PropTypes.Requireable<object>;
};
};
static Footer: {
({ divider, className, children, dataHook, ...props }: import("./components/Footer").FooterProps): React.JSX.Element;
displayName: string;
propTypes: {
children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
dataHook: PropTypes.Requireable<string>;
className: PropTypes.Requireable<string>;
divider: PropTypes.Requireable<boolean>;
showDivider: PropTypes.Requireable<boolean>;
};
Start: typeof import("./components/Footer/components/Start/Start").default;
Center: typeof import("./components/Footer/components/Center/Center").default;
End: typeof import("./components/Footer/components/End/End").default;
};
scrollableContainerRef: React.RefObject<HTMLDivElement>;
headerWrapperRef: HTMLDivElement | null;
headerContainerRef: HTMLDivElement | null;
pageHeaderTailRef: HTMLDivElement | null;
pageRef: HTMLDivElement | null;
footerWrapperRef: HTMLDivElement | null;
pageScrollContextValue: {
scrollableContentRef: React.RefObject<HTMLDivElement>;
};
contentResizeListener: ResizeSensor | undefined;
timerId: NodeJS.Timeout | undefined;
constructor(props: Props);
componentDidMount(): void;
componentDidUpdate(): void;
componentWillUnmount(): void;
_getNamedChildren(): ChildrenObject;
_calculateComponentsHeights(): void;
_getScrollContainer(): HTMLDivElement | null;
_getMinimizedHeaderWrapperHeight(): number;
_getMinimizationDiff(): number | null;
_handleScroll(e: HTMLElement): void;
_handleWidthResize(): void;
_handleWindowResize(): void;
_safeGetChildren(element?: ContentElement): string | number | true | React.ReactElement<any, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode>;
_getPageDimensionsStyle(): React.CSSProperties | undefined;
_hasBackgroundImage(): boolean;
_hasGradientClassName(): boolean;
_renderContentHorizontalLayout(props: React.HTMLAttributes<HTMLDivElement> & {
horizontalScroll?: boolean;
}): React.JSX.Element;
_renderHeader(): React.JSX.Element | undefined;
_renderHeaderContainer(): React.JSX.Element;
_renderScrollableContainer(): React.JSX.Element;
_hasTail(): boolean;
_hasHeader(): boolean;
_renderScrollableBackground(): React.JSX.Element | null;
_renderTail(): React.JSX.Element | undefined;
_renderContentContainer(): React.JSX.Element;
_renderFixedFooter: () => React.JSX.Element | null;
render(): React.JSX.Element;
/**
* Scrolls the page to a particular set of coordinates
* @param {ScrollToOptions} scrollTo { left: number, top: number, behavior: 'smooth' | 'auto' }
*/
scrollTo(scrollTo?: ScrollToOptions): void;
}
export default Page;
//# sourceMappingURL=Page.d.ts.map