model-vue-presenter
Version:
Model-View-Presenter toolkit for Vue 3 apps
43 lines (41 loc) • 1.49 kB
TypeScript
import { PresenterConfig, PresenterFactoryFunction, PresenterHookOutput, Props, View, ViewModelOverride } from './presenter-factory.types';
/**
* @example
* const useDocumentOverviewPresenter = presenterFactory(() => {
* const state = reactive({ showSkeleton: false })
*
* return {
* viewModel: computed(() => {
* return {
* isPageSkeletonLoaderShown: state.showSkeleton
* }
* })
* }
* })
*
* const { presenter, viewModel } = useDocumentOverviewPresenter()
*/
export declare function presenterFactory<TPresenterOptions extends PresenterConfig, TProps extends Props = void, TView extends View = void>(presenterFactoryFunction: PresenterFactoryFunction<TProps, TView, TPresenterOptions>): {
(props: TProps, view: TView): PresenterHookOutput<TPresenterOptions>;
/**
* @example
* const wrapper = mount(DocumentOverview)
* const { viewModel } = useDocumentOverviewPresenter.spy()
*
* expect(viewModel.value.amountOfClicks).toBe(0)
* wrapper.find('button').trigger('click')
* expect(viewModel.value.amountOfClicks).toBe(1)
*/
spy(): PresenterHookOutput<TPresenterOptions>;
resetSpy(): void;
/**
* @example
* useDocumentOverviewPresenter.mockViewModel((viewModel) => {
* return {
* ...viewModel,
* showPageSkeletonLoader: true,
* }
* })
*/
mockViewModel(viewModelOverrideFunction: ViewModelOverride<TPresenterOptions>): void;
};