1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import {
IOverlayController,
IDrawerOptions,
IPopoverOptions,
IModalOptions,
IOverlayContainer,
IOverlayPopoverContainer,
} from '@ibiz-template/runtime';
import { isFunction } from 'lodash-es';
import { createPopover } from '../app-popover/app-popover-component';
import { createModal } from '../app-modal/app-modal-component';
import { createDrawer } from '../app-drawer/app-drawer-component';
/**
* 用不同呈现方式绘制组件的通用工具类
*
* @author lxm
* @date 2022-11-08 16:11:09
* @export
* @class OverlayController
* @implements {IOverlayController}
*/
export class OverlayController implements IOverlayController {
popover<T = void>(
element: HTMLElement,
component: unknown,
props?: IParams | undefined,
opts?: IPopoverOptions | undefined,
): Promise<T> {
const popover = this.createPopover(component, props, opts);
popover.present(element);
return popover.onWillDismiss();
}
createPopover(
component: unknown,
props?: IParams | undefined,
opts?: IPopoverOptions | undefined,
): IOverlayPopoverContainer {
return createPopover(
isFunction(component)
? component
: h => h(component as string, { props }),
opts,
);
}
drawer<T = void>(
component: unknown,
props?: IParams | undefined,
opts?: IDrawerOptions | undefined,
): Promise<T> {
const drawer = this.createDrawer(component, props, opts);
drawer.present();
return drawer.onWillDismiss();
}
createDrawer(
component: unknown,
props?: IParams | undefined,
opts?: IDrawerOptions | undefined,
): IOverlayContainer {
return createDrawer(
isFunction(component)
? component
: h => h(component as string, { props }),
opts,
);
}
async modal<T = void>(
component: unknown,
props?: IParams | undefined,
opts?: IModalOptions | undefined,
): Promise<T> {
const modal = this.createModal(component, props, opts);
modal.present();
return modal.onWillDismiss();
}
createModal(
component: unknown,
props?: IParams | undefined,
opts?: IModalOptions | undefined,
): IOverlayContainer {
return createModal(
isFunction(component)
? component
: h => h(component as string, { props }),
opts,
);
}
}