11import { FieldKey , FormEvent } from "@/types" ;
22
3- export class EventContext {
3+ export class EventContext {
44
5- private readonly events :FormEvent [ ] ;
5+ private readonly events : FormEvent [ ] ;
66
7- constructor ( events :FormEvent [ ] ) {
7+ constructor ( events : FormEvent [ ] ) {
88 this . events = events ;
99 }
1010
11+ public handlerOnChange ( target : FieldKey , value : any ) {
12+ const events = this . getEvents ( 'change' , target ) ;
13+ if ( events && events . length > 0 ) {
14+ for ( const event of events ) {
15+ event . event ( value ) ;
16+ }
17+ }
18+ }
1119
12- public handlerOnChange ( target :FieldKey , value :string ) {
13- const event = this . getEvent ( target ) ;
14- if ( event ) {
1520
21+ public handlerOnBlur ( target : FieldKey , value :any ) {
22+ const events = this . getEvents ( 'blur' , target ) ;
23+ if ( events && events . length > 0 ) {
24+ for ( const event of events ) {
25+ event . event ( value ) ;
26+ }
1627 }
1728 }
1829
19- private getEvent ( target :FieldKey ) {
20- for ( let event of this . events ) {
21- console . log ( typeof event )
30+ public getLoadEvents ( ) : FormEvent [ ] {
31+ return this . getEvents ( 'load' ) ;
32+ }
33+
34+
35+ private getEvents ( type : string , target ?: FieldKey ) {
36+ const events = [ ] ;
37+ for ( const event of this . events ) {
38+ if ( event . type == type ) {
39+ const eventTarget = event . target ;
40+
41+ if ( target === eventTarget ) {
42+ events . push ( event )
43+ }
44+ if ( typeof target !== 'string' && typeof eventTarget === 'string' ) {
45+ if ( target ?. fieldCode === eventTarget ) {
46+ events . push ( event )
47+ }
48+ }
49+
50+ if ( typeof target === 'string' && typeof eventTarget !== 'string' ) {
51+ if ( ! eventTarget ?. formCode && eventTarget ?. fieldCode === target ) {
52+ events . push ( event )
53+ }
54+ }
55+
56+ if ( typeof target !== 'string' && typeof eventTarget !== 'string' ) {
57+ if ( eventTarget ?. fieldCode === target ?. fieldCode && eventTarget ?. formCode === target ?. formCode ) {
58+ events . push ( event )
59+ }
60+ }
61+ }
2262 }
23- return null ;
63+ return events ;
2464 }
2565
2666}
0 commit comments