@itznevikat/router
Version:
📦 Многофункциональный роутер для приложений на React и VKUI
68 lines (67 loc) • 2.4 kB
TypeScript
import React, { FC, ReactElement, ReactNode } from 'react';
import { Nav } from './utils/navs';
export declare type MatchContextValue = MatchConfig & {
/**
* Промаркированные дети
*/
root: ReactNode;
/**
* Слои навигации
*/
navs: Nav[];
/**
* Стиль навигации
*/
style: Style;
};
/**
* Контекст с конфигом компонента Match и внутренними значениями роутера
*/
export declare const MatchContext: React.Context<MatchContextValue>;
/**
* Стиль навигации
*/
export declare enum Style {
MOBILE = "MOBILE",
DESKTOP = "DESKTOP"
}
/**
* Конфиг для компонента Match
*/
export declare type MatchConfig = {
/**
* Стиль навигации.
* По умолчанию берётся платформа, прокинутая через ConfigProvider
*/
style?: Style;
/**
* Начальная страница.
* Если не указана, то при запуске не будет совершён переход
*/
initialURL?: string;
/**
* Страница 404.
* Будет использована, если страница при переходе не найдена
*/
fallbackURL?: string;
/**
* Отключает отправку события VKWebAppSetLocation для установки хэша вне фрейма.
* По умолчанию выключено, событие отправляется
*/
disableSetLocation?: boolean;
/**
* Переданный в Match children для использования в качестве Root элемента
*/
children?: ReactNode;
};
/**
* Главный компонент роутера, в него оборачивается вся структура
*/
export declare const Match: FC<MatchConfig>;
/**
* Получение активного попаута по nav/id свойству
* @param popout имя активного попаута
* @param elements возможные попауты
* @returns активный попаут
*/
export declare function matchPopout(popout: string | null, elements: ReactElement[]): ReactElement | null;