1
1
import { BackendInterface } from '../Backend/Backend' ;
2
2
import ValueStore from './ValueStore' ;
3
+ import BackendRequest from '../Backend/BackendRequest' ;
3
4
import { ElementDriver } from './ElementDriver' ;
4
5
import { PluginInterface } from './plugins/PluginInterface' ;
5
6
import BackendResponse from '../Backend/BackendResponse' ;
7
+ export type ComponentHookName = 'connect' | 'disconnect' | 'request:started' | 'render:started' | 'render:finished' | 'response:error' | 'loading.state:started' | 'loading.state:finished' | 'model:set' ;
8
+ type MaybePromise < T = void > = T | Promise < T > ;
6
9
export default class Component {
7
10
readonly element : HTMLElement ;
8
11
readonly name : string ;
@@ -30,8 +33,34 @@ export default class Component {
30
33
addPlugin ( plugin : PluginInterface ) : void ;
31
34
connect ( ) : void ;
32
35
disconnect ( ) : void ;
33
- on ( hookName : string , callback : ( ...args : any [ ] ) => void ) : void ;
34
- off ( hookName : string , callback : ( ...args : any [ ] ) => void ) : void ;
36
+ on ( hookName : 'connect' , callback : ( component : Component ) => MaybePromise ) : void ;
37
+ on ( hookName : 'disconnect' , callback : ( component : Component ) => MaybePromise ) : void ;
38
+ on ( hookName : 'request:started' , callback : ( requestConfig : any ) => MaybePromise ) : void ;
39
+ on ( hookName : 'render:started' , callback : ( html : string , response : BackendResponse , controls : {
40
+ shouldRender : boolean ;
41
+ } ) => MaybePromise ) : void ;
42
+ on ( hookName : 'render:finished' , callback : ( component : Component ) => MaybePromise ) : void ;
43
+ on ( hookName : 'response:error' , callback : ( backendResponse : BackendResponse , controls : {
44
+ displayError : boolean ;
45
+ } ) => MaybePromise ) : void ;
46
+ on ( hookName : 'loading.state:started' , callback : ( element : HTMLElement , request : BackendRequest ) => MaybePromise ) : void ;
47
+ on ( hookName : 'loading.state:finished' , callback : ( element : HTMLElement ) => MaybePromise ) : void ;
48
+ on ( hookName : 'model:set' , callback : ( model : string , value : any , component : Component ) => MaybePromise ) : void ;
49
+ on ( hookName : string , callback : ( ...args : any [ ] ) => MaybePromise ) : void ;
50
+ off ( hookName : 'connect' , callback : ( component : Component ) => MaybePromise ) : void ;
51
+ off ( hookName : 'disconnect' , callback : ( component : Component ) => MaybePromise ) : void ;
52
+ off ( hookName : 'request:started' , callback : ( requestConfig : any ) => MaybePromise ) : void ;
53
+ off ( hookName : 'render:started' , callback : ( html : string , response : BackendResponse , controls : {
54
+ shouldRender : boolean ;
55
+ } ) => MaybePromise ) : void ;
56
+ off ( hookName : 'render:finished' , callback : ( component : Component ) => MaybePromise ) : void ;
57
+ off ( hookName : 'response:error' , callback : ( backendResponse : BackendResponse , controls : {
58
+ displayError : boolean ;
59
+ } ) => MaybePromise ) : void ;
60
+ off ( hookName : 'loading.state:started' , callback : ( element : HTMLElement , request : BackendRequest ) => MaybePromise ) : void ;
61
+ off ( hookName : 'loading.state:finished' , callback : ( element : HTMLElement ) => MaybePromise ) : void ;
62
+ off ( hookName : 'model:set' , callback : ( model : string , value : any , component : Component ) => MaybePromise ) : void ;
63
+ off ( hookName : string , callback : ( ...args : any [ ] ) => MaybePromise ) : void ;
35
64
set ( model : string , value : any , reRender ?: boolean , debounce ?: number | boolean ) : Promise < BackendResponse > ;
36
65
getData ( model : string ) : any ;
37
66
action ( name : string , args ?: any , debounce ?: number | boolean ) : Promise < BackendResponse > ;
@@ -55,3 +84,4 @@ export default class Component {
55
84
_updateFromParentProps ( props : any ) : void ;
56
85
}
57
86
export declare function proxifyComponent ( component : Component ) : Component ;
87
+ export { } ;
0 commit comments