@@ -306,7 +306,7 @@ let CalendarBasicComp = (function () {
306
306
...( item . groupId ? { groupId : item . groupId } : { } ) ,
307
307
backgroundColor : item . backgroundColor ,
308
308
extendedProps : { // Ensure color is in extendedProps
309
- color : isValidColor ( item . color || "" ) ? item . color : theme ?. theme ?. primary ,
309
+ color : isValidColor ( item . color || "" ) ? item . color : theme ?. theme ?. primary ,
310
310
detail : item . detail ,
311
311
titleColor :item . titleColor ,
312
312
detailColor :item . detailColor ,
@@ -324,22 +324,13 @@ let CalendarBasicComp = (function () {
324
324
} , [ currentEvents , theme ] )
325
325
326
326
useEffect ( ( ) => {
327
+ if ( initData . current ) return ;
328
+
327
329
const mapData : Record < string , number > = { } ;
328
330
events ?. forEach ( ( item : any , index : number ) => {
329
331
mapData [ `${ item . id } ` ] = index ;
330
332
} )
331
333
332
- if ( initData . current ) {
333
- const difference = differenceWith ( events , props . initialData , isEqual ) ;
334
- const inserted = differenceBy ( difference , Object . keys ( initDataMap ) ?. map ( id => ( { id } ) ) , 'id' )
335
- const updated = filter ( difference , obj => includes ( Object . keys ( initDataMap ) , String ( obj . id ) ) ) ;
336
- const deleted = differenceBy ( props . initialData , Object . keys ( mapData ) ?. map ( id => ( { id } ) ) , 'id' )
337
-
338
- comp . children ?. comp . children ?. updatedEvents . dispatchChangeValueAction ( updated ) ;
339
- comp . children ?. comp . children ?. insertedEvents . dispatchChangeValueAction ( inserted ) ;
340
- comp . children ?. comp . children ?. deletedEvents . dispatchChangeValueAction ( deleted ) ;
341
- }
342
-
343
334
if ( ! initData . current && events ?. length && comp ?. children ?. comp ?. children ?. initialData ) {
344
335
setInitDataMap ( mapData ) ;
345
336
comp ?. children ?. comp ?. children ?. initialData ?. dispatch ?.(
@@ -407,7 +398,54 @@ let CalendarBasicComp = (function () {
407
398
}
408
399
} , [ slotLabelFormat , slotLabelFormatWeek , slotLabelFormatMonth ] ) ;
409
400
410
- const handleEventDataChange = useCallback ( ( data : Array < Record < string , any > > ) => {
401
+ const findUpdatedInsertedDeletedEvents = useCallback ( ( data : Array < EventType > ) => {
402
+ if ( ! initData . current ) return ;
403
+
404
+ let eventsData : Array < Record < string , any > > = currentView == "resourceTimelineDay" || currentView == "resourceTimeGridDay"
405
+ ? data . filter ( ( event : { resourceId ?: string ; } ) => Boolean ( event . resourceId ) )
406
+ : data . filter ( ( event : { resourceId ?: string ; } ) => ! Boolean ( event . resourceId ) ) ;
407
+
408
+ eventsData = eventsData . map ( ( item ) => ( {
409
+ title : item . label ,
410
+ id : item . id ,
411
+ start : dayjs ( item . start , DateParser ) . format ( ) ,
412
+ end : dayjs ( item . end , DateParser ) . format ( ) ,
413
+ allDay : item . allDay ,
414
+ ...( item . resourceId ? { resourceId : item . resourceId } : { } ) ,
415
+ ...( item . groupId ? { groupId : item . groupId } : { } ) ,
416
+ backgroundColor : item . backgroundColor ,
417
+ extendedProps : { // Ensure color is in extendedProps
418
+ color : isValidColor ( item . color || "" ) ? item . color : theme ?. theme ?. primary ,
419
+ detail : item . detail ,
420
+ titleColor :item . titleColor ,
421
+ detailColor :item . detailColor ,
422
+ titleFontWeight :item . titleFontWeight ,
423
+ titleFontStyle :item . titleFontStyle ,
424
+ detailFontWeight :item . detailFontWeight ,
425
+ detailFontStyle :item . detailFontStyle ,
426
+ animation :item ?. animation ,
427
+ animationDelay :item ?. animationDelay ,
428
+ animationDuration :item ?. animationDuration ,
429
+ animationIterationCount :item ?. animationIterationCount
430
+ }
431
+ } ) ) ;
432
+
433
+ const mapData : Record < string , number > = { } ;
434
+ eventsData ?. forEach ( ( item : any , index : number ) => {
435
+ mapData [ `${ item . id } ` ] = index ;
436
+ } )
437
+
438
+ const difference = differenceWith ( eventsData , props . initialData , isEqual ) ;
439
+ const inserted = differenceBy ( difference , Object . keys ( initDataMap ) ?. map ( id => ( { id } ) ) , 'id' )
440
+ const updated = filter ( difference , obj => includes ( Object . keys ( initDataMap ) , String ( obj . id ) ) ) ;
441
+ const deleted = differenceBy ( props . initialData , Object . keys ( mapData ) ?. map ( id => ( { id } ) ) , 'id' )
442
+
443
+ comp ?. children ?. comp ?. children ?. updatedEvents . dispatchChangeValueAction ( updated ) ;
444
+ comp ?. children ?. comp ?. children ?. insertedEvents . dispatchChangeValueAction ( inserted ) ;
445
+ comp ?. children ?. comp ?. children ?. deletedEvents . dispatchChangeValueAction ( deleted ) ;
446
+ } , [ initDataMap , currentView , props . initialData , initData . current ] ) ;
447
+
448
+ const handleEventDataChange = useCallback ( ( data : Array < EventType > ) => {
411
449
comp ?. children ?. comp . children . events . children . manual . children . manual . dispatch (
412
450
comp ?. children ?. comp . children . events . children . manual . children . manual . setChildrensAction (
413
451
data
@@ -416,6 +454,9 @@ let CalendarBasicComp = (function () {
416
454
comp ?. children ?. comp . children . events . children . mapData . children . data . dispatchChangeValueAction (
417
455
JSON . stringify ( data )
418
456
) ;
457
+
458
+ findUpdatedInsertedDeletedEvents ( data ) ;
459
+
419
460
props . onEvent ( "change" ) ;
420
461
} , [ comp , props . onEvent ] ) ;
421
462
@@ -955,9 +996,9 @@ let CalendarBasicComp = (function () {
955
996
changeEvents . push ( event ) ;
956
997
}
957
998
} ) ;
958
- if ( needChange ) {
959
- props . onEvent ( "change" ) ;
960
- }
999
+ // if (needChange) {
1000
+ // props.onEvent("change");
1001
+ // }
961
1002
} }
962
1003
eventDragStart = { ( ) => {
963
1004
if ( typeof props . onDropEvent === 'function' ) {
0 commit comments