6
6
indexOf ,
7
7
pop ,
8
8
unshift ,
9
- updClass ,
10
- CLICK_FUNCTION_NAME
9
+ updClass
11
10
} from "../../../config/config" ;
12
11
import {
13
12
checkFunction ,
@@ -48,7 +47,6 @@ import { parseKey } from "./parse-key";
48
47
import { parseText } from "./parse-text" ;
49
48
50
49
export const parseTemplate = (
51
- setEventListener : ( ) => void ,
52
50
renderDynamic : ( ...args : any [ ] ) => any ,
53
51
valueFunctions : [
54
52
( ...args : any [ ] ) => string ,
@@ -165,7 +163,6 @@ export const parseTemplate = (
165
163
if ( node . nodeType === Node . ELEMENT_NODE ) {
166
164
parseText ( node as Element ) ;
167
165
renderEl (
168
- setEventListener ,
169
166
isEach ,
170
167
valueFunctions ,
171
168
eventArray ,
@@ -318,25 +315,57 @@ export const parseTemplate = (
318
315
) ;
319
316
if ( ! checkFunction ( fn ) ) createError ( "Data key is of function type" ) ;
320
317
let setEvent : any ;
318
+ const argsLength = args . length ;
321
319
if ( isEach === true ) {
322
- if ( keyEvent === "click" ) {
323
- setEvent = (
324
- element : Element ,
325
- currentComponent : any ,
326
- mainEl : Element ,
327
- keyEl ?: string ,
328
- eachValue ?: any
329
- ) => {
330
- if ( element ) {
331
- const eventFn = ( event : Event ) => {
332
- const newArgs = args . map ( ( { renderedKey, getEventsDataFn } ) =>
333
- getEventsDataFn ( mainEl , index , renderedKey , eachValue )
334
- ) ;
335
- fn ( event ) . apply ( this , newArgs ) ;
336
- } ;
337
- element [ CLICK_FUNCTION_NAME ] = eventFn ;
338
- }
339
- } ;
320
+ if ( argsLength > 0 ) {
321
+ if ( argsLength === 1 ) {
322
+ setEvent = (
323
+ element : Element ,
324
+ currentComponent : any ,
325
+ mainEl : Element ,
326
+ keyEl ?: string ,
327
+ eachValue ?: any
328
+ ) => {
329
+ if ( element ) {
330
+ const eventFn = ( event : Event ) => {
331
+ const { renderedKey, getEventsDataFn } = args [ 0 ] ;
332
+ const newArg = getEventsDataFn (
333
+ mainEl ,
334
+ index ,
335
+ renderedKey ,
336
+ eachValue
337
+ ) ;
338
+ fn ( event ) ( newArg ) ;
339
+ } ;
340
+ element . addEventListener ( keyEvent , eventFn ) ;
341
+ }
342
+ } ;
343
+ } else {
344
+ setEvent = (
345
+ element : Element ,
346
+ currentComponent : any ,
347
+ mainEl : Element ,
348
+ keyEl ?: string ,
349
+ eachValue ?: any
350
+ ) => {
351
+ if ( element ) {
352
+ const eventFn = ( event : Event ) => {
353
+ const newArgs = new Array ( argsLength ) ;
354
+ for ( let i = 0 ; i < argsLength ; i ++ ) {
355
+ const { renderedKey, getEventsDataFn } = args [ i ] ;
356
+ newArgs [ i ] = getEventsDataFn (
357
+ mainEl ,
358
+ index ,
359
+ renderedKey ,
360
+ eachValue
361
+ ) ;
362
+ }
363
+ fn ( event ) ( ...newArgs ) ;
364
+ } ;
365
+ element . addEventListener ( keyEvent , eventFn ) ;
366
+ }
367
+ } ;
368
+ }
340
369
} else {
341
370
setEvent = (
342
371
element : Element ,
@@ -347,17 +376,14 @@ export const parseTemplate = (
347
376
) => {
348
377
if ( element ) {
349
378
const eventFn = ( event : Event ) => {
350
- const newArgs = args . map ( ( { renderedKey, getEventsDataFn } ) =>
351
- getEventsDataFn ( mainEl , index , renderedKey , eachValue )
352
- ) ;
353
- fn ( event ) . apply ( this , newArgs ) ;
379
+ fn ( event ) ( ) ;
354
380
} ;
355
381
element . addEventListener ( keyEvent , eventFn ) ;
356
382
}
357
383
} ;
358
384
}
359
385
} else {
360
- if ( keyEvent === "click" ) {
386
+ if ( argsLength > 0 ) {
361
387
setEvent = (
362
388
element : Element ,
363
389
currentComponent : any ,
@@ -368,9 +394,9 @@ export const parseTemplate = (
368
394
if ( element ) {
369
395
const eventFn = ( event : Event ) => {
370
396
const newArgs = args . map ( ( e : any ) => getEventsData1 ( e , id ) ) ;
371
- fn ( event ) . apply ( this , newArgs ) ;
397
+ fn ( event ) ( ... newArgs ) ;
372
398
} ;
373
- element [ CLICK_FUNCTION_NAME ] = eventFn ;
399
+ element . addEventListener ( keyEvent , eventFn ) ;
374
400
}
375
401
} ;
376
402
} else {
@@ -383,8 +409,7 @@ export const parseTemplate = (
383
409
) => {
384
410
if ( element ) {
385
411
const eventFn = ( event : Event ) => {
386
- const newArgs = args . map ( ( e : any ) => getEventsData1 ( e , id ) ) ;
387
- fn ( event ) . apply ( this , newArgs ) ;
412
+ fn ( event ) ( ) ;
388
413
} ;
389
414
element . addEventListener ( keyEvent , eventFn ) ;
390
415
}
0 commit comments