/// import PropTypes from 'prop-types'; import React, { CSSProperties, PureComponent, Component, ReactElement, ReactText } from 'react'; export interface PropChangeParam { type: string, value: any, } export interface Navs { key: string, text: string, component: React.ReactElement } export interface ContainerProps { defaultNav?: string; navs: Navs[]; logo?: React.ReactNode; /** * nav 切换回调 * @param type 目标nav key * @param content content html */ onNavChange(type: String, content: HTMLElement): void; isFullContent: Boolean; } export interface NavProps { prefixCls: String, // 叶子节点 NavItem 点击事件,参数为当前 NavItem 的 key 以及 event 对象 onNavChange: Function, className: String, navs: Array, // 采用黑色背景 dark: Boolean, // 默认打开的菜单 defaultOpenKeys: String[] | Number[], currentKey: String | Number } export interface SingleContainerProps { defaultNav?: string; navs: Navs[]; logo?: React.ReactNode | null; position: 'left' | 'right'; onNavChange: Function; navContent: React.ReactNode | React.ReactElement; navProps: NavProps; navKey: string | number; children: React.ReactNode; } /** * main container * * @export * @class Container * @extends {Component} */ export class Container extends Component { static propTypes: { defaultNav: PropTypes.Requireable; navs: PropTypes.Requireable; logo: PropTypes.Requireable; onNavChange: PropTypes.Requireable; isFullContent: PropTypes.Requireable; }; private static defaultProps; private onChange; render(): JSX.Element; } /** * single contaienr * * @class SingleContainer * @extends {Component} */ export class SingleContainer extends Component { static propTypes: { defaultNav: PropTypes.Requireable; navs: PropTypes.Requireable; logo: PropTypes.Requireable; position: PropTypes.Requireable; onNavChange: PropTypes.Requireable; /** * nav 组件,可选为 `SingleNav and Nav` * default is SingleNav */ navContent: PropTypes.Requireable; navKey: PropTypes.Requireable; navProps: PropTypes.Requireable; children: PropTypes.Requireable; }; private static defaultProps; private onNavChange; render(): JSX.Element; } export interface SubContainerProps { className: string; defaultNav?: string; navs: Navs[]; derection?: 'h' | 'v'; /** * nav 切换回调 * @param type 目标nav key * @param content content html */ onNavChange(type: String, content: HTMLElement): void; navProps?: NavProps; useNav?: Boolean; /** * 使用 Nav 组件时,保持左侧固定 */ fixed?: Boolean; children: React.ReactNode; } export class SubContainer extends Component { static propTypes: { className: PropTypes.Requireable; defaultNav: PropTypes.Requireable; navs: PropTypes.Requireable; derection: PropTypes.Requireable; onNavChange: PropTypes.Requireable; navProps: PropTypes.Requireable; useNav: PropTypes.Requireable; fixed: PropTypes.Requireable; children: PropTypes.Requireable; }; static defaultProps: { navs: [], // 默认为水平方向 derection: 'h' }; private onChange; render(): JSX.Element; } export interface DemoContentProps { className?: String; title?: String; actions: React.ReactElement; children: React.ReactElement; descr: React.ReactNode; doc: React.ReactNode; } export class DemoContent extends Component { static propTypes: { className:PropTypes.Requireable; title: PropTypes.Requireable; actions: PropTypes.Requireable; children: PropTypes.Requireable; descr: PropTypes.Requireable; doc: PropTypes.Requireable; }; static defaultProps: {}; private onPropsChange(param: PropChangeParam): void; render(): JSX.Element; } export interface DemoCodeContentProps { className?: String; title?: String; actions: React.ReactElement; children: React.ReactElement; descr: React.ReactNode; doc: React.ReactNode; useOption: Boolean; } export class DemoCodeContent extends Component { static propTypes: { className:PropTypes.Requireable; title: PropTypes.Requireable; /** * actions 区域,如果设置为 null,则采用上下布局 */ actions: PropTypes.Requireable; children: PropTypes.Requireable; descr: PropTypes.Requireable; doc: PropTypes.Requireable; useOption: PropTypes.Requireable; }; static defaultProps: {}; private onPropsChange(param: PropChangeParam): void; render(): JSX.Element; } export interface DemoActuatorProps { className?: String; title?: String; actions: React.ReactElement; children: React.ReactElement; descr: React.ReactNode; useOption: Boolean; } export class DemoActuator extends Component { static propTypes: { className:PropTypes.Requireable; title: PropTypes.Requireable; actions: PropTypes.Requireable; children: PropTypes.Requireable; descr: PropTypes.Requireable; useOption: PropTypes.Requireable; }; static defaultProps: {}; private onPropsChange(param: PropChangeParam): void; render(): JSX.Element; } export interface ActionItemProps { label?: string; children?: React.ReactElement; } export function ActionItem(props: ActionItemProps): JSX.Element; /** * connect demo item * @param {(Component | string)} WrappedCompoenet * @returns {*} */ export function connectDemoItem(WrappedCompoenet: Component | string): any; /** * Nav 组件,支持二级和三级菜单导航 */ export class Nav extends Component { static propTypes: { prefixCls: PropTypes.Requireable; onNavChange: PropTypes.Requireable; className: PropTypes.Requireable; navs: PropTypes.Requireable; dark: PropTypes.Requireable; defaultOpenKeys: PropTypes.Requireable; currentKey: PropTypes.Requireable; }; static defaultProps: { prefixCls: 'ray-nav-menu' }; private onNavChange; render(): JSX.Element; } /** * Nav 组件,支持二级和三级菜单导航 * 箭头在左侧 */ export class Nav2 extends Component { static propTypes: { prefixCls: PropTypes.Requireable; onNavChange: PropTypes.Requireable; className: PropTypes.Requireable; navs: PropTypes.Requireable; dark: PropTypes.Requireable; defaultOpenKeys: PropTypes.Requireable; currentKey: PropTypes.Requireable; }; static defaultProps: { prefixCls: 'ray-nav-menu' }; private onNavChange; render(): JSX.Element; } export interface SingleNavProps { navs: Array; currentKey: String|Number; onNavChange: Function; } /** * 默认 nav ,仅仅为单层级 * @param props */ export function SingleNav(props: SingleNavProps): JSX.Element; /** * codeTools 采用 `prismjs` 进行美化代码 */ declare namespace codeTools { export function unEscapeHtml(str: String): String; export function openCode(title: String, code: String): String; } /** * rayCodeTools 采用 `ray-doc-render` 进行美化代码 */ declare namespace rayCodeTools { export function unEscapeHtml(str: String): String; /** * 打开源码 * @param title open window 的title * @param code 源码 * @param lang 语言,默认 js */ export function openCode(title: String, code: String, lang: String): void; /** * 美化代码 * @param code * @param lang */ export function codeBeauty(code: String, lang: String): String; } export interface WrappedSC { className?: string; derection?: 'h' | 'v'; codes?: Object; showSource?: Boolean; navs: Navs[]; defaultNavKey: String; fixedHeader: Boolean; getSubNavKey: () => String; getSubNavOpenKey: () => String; changeSubNavKey: (navKey: String) => void; changeSubNavOpenKey: (navKey: String) => void; // 采用默认导航切换方式时,存放数据的 key 值 prefix?: string; // 组件销毁时,是否执行清理,如:清除选中信息,默认为 true cleanOnDestroy?: string; } /** * 创建 sub container * @param options */ export function wrappedSubContainer(options: WrappedSC): ReactElement; export interface COtions { onOk: () => booelan | Promise; okText: string; body: ReactNode; } /** 创建 confirm */ export function confirm(options: COtions);