Skip to content

Commit dd48d3f

Browse files
committed
fix: try to fix problem with missing typings of withPageViewModel HOC
1 parent 1c0402d commit dd48d3f

File tree

3 files changed

+35
-7
lines changed

3 files changed

+35
-7
lines changed

src/hoc/with-page-view-model.tsx

Lines changed: 31 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,38 @@
1-
import { ViewModelHocConfig, withViewModel } from 'mobx-vm-entities';
2-
import { Class } from 'mobx-vm-entities/utils/types';
1+
import {
2+
AnyViewModel,
3+
ViewModelHocConfig,
4+
ViewModelInputProps,
5+
ViewModelProps,
6+
withViewModel,
7+
} from 'mobx-vm-entities';
8+
import { AnyObject, Class } from 'mobx-vm-entities/utils/types';
9+
import { ComponentType, ReactNode } from 'react';
310

4-
import type { PageViewModel } from '../page-view-model';
11+
import type { AnyPageViewModel } from '../page-view-model';
512

6-
export const withPageViewModel = <VM extends PageViewModel<any, any>>(
7-
model: Class<VM>,
13+
export type ComponentWithPageViewModel<
14+
TViewModel extends AnyViewModel,
15+
TComponentOriginProps extends AnyObject = ViewModelProps<TViewModel>,
16+
> = (
17+
props: Omit<TComponentOriginProps, 'model'> &
18+
Omit<ViewModelInputProps<TViewModel>, 'payload'> & {
19+
params: ViewModelInputProps<TViewModel>['payload'];
20+
},
21+
) => ReactNode;
22+
23+
export function withPageViewModel<TViewModel extends AnyPageViewModel>(
24+
model: Class<TViewModel>,
25+
config?: ViewModelHocConfig<TViewModel>,
26+
): <TComponentOriginProps extends AnyObject = ViewModelProps<TViewModel>>(
27+
Component?: ComponentType<TComponentOriginProps & ViewModelProps<TViewModel>>,
28+
) => ComponentWithPageViewModel<TViewModel, TComponentOriginProps>;
29+
30+
export function withPageViewModel<TViewModel extends AnyPageViewModel>(
31+
model: Class<TViewModel>,
832
config?: ViewModelHocConfig<any>,
9-
) => {
33+
) {
1034
return withViewModel(model, {
1135
...config,
1236
getPayload: config?.getPayload ?? ((props) => props.params),
1337
});
14-
};
38+
}

src/page-view-model/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
export * from './page-view-model';
22
export * from './page-view-model.impl';
3+
export * from './page-view-model.types';
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import { PageViewModel } from './page-view-model';
2+
3+
export type AnyPageViewModel = PageViewModel<any, any>;

0 commit comments

Comments
 (0)