add missing types

This commit is contained in:
Martynas Kadiša
2019-02-13 15:48:19 +02:00
parent d77c47c753
commit 062bc01af2
2 changed files with 21 additions and 2 deletions
+3 -2
View File
@@ -14,15 +14,16 @@ export type DefaultComponent<P> = React.ComponentType<P> | DefaultImportedCompon
export interface Options {
fallback?: JSX.Element;
ssr?: boolean;
}
export type LoadableComponent<T> = React.ComponentType<T & { fallback?: JSX.Element }>;
export type LoadableComponent<T> = React.ComponentType<T & { fallback?: JSX.Element }> & { preload(props?: T): void };
export type LoadableLibrary<TModule> = React.ComponentType<{
fallback?: JSX.Element;
children?: (module: TModule) => React.ReactNode;
ref?: React.Ref<TModule>;
}> &
TModule;
TModule & { preload(props?: object): void };
declare function lib<T>(
loadFn: (props: object) => Promise<T>,
@@ -36,8 +36,14 @@ function importLibLoader() {
// Should allow passing JSX element to fallback in options
loadable(defaultImportComponentLoader, { fallback: <div>loading...</div> });
// Should allow passing boolean to `ssr` in options
loadable(defaultImportComponentLoader, { ssr: true });
// Should allow passing `fallback` prop to loadable component
<LoadableComponent foo="test" fallback={<div>loading...</div>} />;
// Should allow preloading
LoadableComponent.preload();
}
// lazy
@@ -52,6 +58,9 @@ function importLibLoader() {
// Should allow passing fallback prop
<LazyComponent foo="test" fallback={<div>loading...</div>} />;
// Should allow preloading
LazyComponent.preload();
}
// loadable.lib
@@ -71,6 +80,9 @@ function importLibLoader() {
// Should allow passing fallback JSX element
loadable.lib(importLibLoader, { fallback: <div>loading lib...</div> });
// Should allow passing boolean to `ssr` in options
loadable.lib(defaultImportComponentLoader, { ssr: true });
// Should allow passing fallback prop
<LoadableLibrary fallback={<div>Loading library...</div>}>
{({ getTestObj }) => getTestObj().foo}
@@ -80,6 +92,9 @@ function importLibLoader() {
const ref = React.createRef<typeof LoadableLibrary>();
<LoadableLibrary ref={ref} />;
ref.current!.getTestObj().foo;
// Should allow preloading
LoadableLibrary.preload();
}
// lazy.lib
@@ -105,6 +120,9 @@ function importLibLoader() {
const ref = React.createRef<typeof LazyLibrary>();
<LazyLibrary ref={ref} />;
ref.current!.getTestObj().foo;
// Should allow preloading
LazyDefaultLibrary.preload();
}
// loadableReady