///
import { Component, RefObject, ReactNode } from 'react';
import { ResizeObserver } from '@juggle/resize-observer';
import { ContentProps } from '@befe/brick-comp-layout';
import { EventListenerHandler } from '@befe/brick-utils';
export declare const LAYOUT_FLUID_MIN_WIDTH = 1280;
/**
* @public
*/
export interface PageSidebarRenderProps {
/**
* (暂定)sidebar 是否折叠
*/
sidebarCollapsed?: boolean;
/**
* (暂定)切换 page 的 sidebar 折叠方法
*/
changeSidebarCollapsed?: (sidebarCollapsed: boolean) => void;
/**
* (暂定) page 中的 refSidebarInner
*/
refSidebarInner?: RefObject;
}
export interface PageProps {
/**
* 自定义 class
*/
className?: string;
/**
* 页头区渲染器
*/
renderHeader?: () => ReactNode;
/**
* 侧边栏区渲染器
*
* **注意** PageSidebarRenderProps 暂定
*/
renderSidebar?: (sidebarRenderProps: PageSidebarRenderProps) => ReactNode;
/**
* 内容区渲染器
*/
renderContent?: () => ReactNode;
/**
* 面包屑区渲染器
*/
renderBreadcrumb?: () => ReactNode;
/**
* 页脚区渲染器
*/
renderFooter?: () => ReactNode;
/**
* 是否默认折叠侧边栏
*/
defaultSidebarCollapsed?: boolean;
/**
* 折叠侧边栏的的(样式)类型
*/
sidebarCollapsedType?: 'slim' | 'hidden';
/**
* 内容 `` 的 type
*
* 详见 [layout](/components/layout) 中 `` 关于 `props.type` 的说明
*/
contentType?: ContentProps['type'];
/**
* header 区是否区反色,取值应该与其中的 HeadNav 的 reverseColor一致
*
* - true: header 底色为 brand color
* - false: header 底色为白底
*/
headerReverseColor?: boolean;
/**
* header 是否有下阴影,进在 headerReverseColor 为 false 时有效
*/
headerShadow?: boolean;
/**
* @private 没有子节点 api
*/
children?: never;
/**
* sidebar 模式
* - 'auto' 自动响应宽度在小尺寸滑出屏幕外,以提供更大的 content 控件
* - 'static' 静态,不响应宽度变化
*/
sidebarMode?: 'auto' | 'static';
}
interface PageState {
isMinWidth: boolean;
sidebarCollapsed: boolean;
}
export declare class Page extends Component {
static displayName: string;
static defaultProps: {
className: string;
defaultSidebarCollapsed: boolean;
headerReverseColor: boolean;
sidebarCollapsedType: string;
sidebarMode: string;
};
state: {
isMinWidth: boolean;
sidebarCollapsed: boolean;
};
scrollListenerHandler?: EventListenerHandler | null;
currentDocumentHeight: number;
resizeObserver: ResizeObserver;
refHeader: RefObject;
refSidebarInner: RefObject;
refContentLayout: RefObject;
refFooter: RefObject;
get className(): string;
get hasSidebar(): boolean;
get isMinWidth(): boolean;
get isSidebarCollapsed(): boolean;
handleChangeSidebarCollapsed: (sidebarCollapsed: boolean) => void;
handleDocResize: import("lodash").DebouncedFunc<() => void>;
updateIsMinWidth: (width: number) => void;
updateSidebarHeight: () => void;
renderHeader(): false | "" | 0 | import("react/jsx-runtime").JSX.Element | null | undefined;
renderContent(): import("react/jsx-runtime").JSX.Element;
renderFooter(): false | "" | 0 | import("react/jsx-runtime").JSX.Element | null | undefined;
submenuPopperPortalContainer: () => HTMLDivElement | null;
injectPortalContainerToSideNav(child: ReactNode): ReactNode;
renderSidebarContent(): ReactNode;
renderSidebar(): false | "" | 0 | import("react/jsx-runtime").JSX.Element | null | undefined;
renderSimplePage(): import("react/jsx-runtime").JSX.Element;
renderSidebarPage(): import("react/jsx-runtime").JSX.Element;
addViewportListeners(): void;
removeViewportListeners(): void;
componentDidMount(): void;
componentWillUnmount(): void;
componentDidUpdate(): void;
render(): import("react/jsx-runtime").JSX.Element;
}
export {};