@@ -80,6 +80,7 @@ class Calendar extends React.Component {
8080 state = {
8181 selected : { } ,
8282 switchMonthHeader : false ,
83+ selectedList : [ ] ,
8384 } ;
8485
8586 static propTypes = {
@@ -791,6 +792,7 @@ class Calendar extends React.Component {
791792 onShowMore = { this . _showMore }
792793 ref = "view"
793794 selected = { this . state . selected }
795+ selectedList = { this . state . selectedList }
794796 showAllEvents = { this . props . showAllEvents }
795797 />
796798 < div
@@ -838,6 +840,7 @@ class Calendar extends React.Component {
838840 onShowMore = { this . _showMore }
839841 ref = "view"
840842 selected = { this . state . selected }
843+ selectedList = { this . state . selectedList }
841844 showAllEvents = { this . props . showAllEvents }
842845 />
843846 </ div >
@@ -867,10 +870,39 @@ class Calendar extends React.Component {
867870
868871 handleSelectEvent = ( eventInfo , ...args ) => {
869872 const [ event ] = args ;
873+ const { selectedList } = this . state ;
870874 event . persist ( ) ;
875+
871876 if ( event && event . shiftKey ) {
872- console . log ( 'isSelectingShiftKey' ) ;
873- notify ( this . props . onShiftSelect , event ) ;
877+ const copySelectedList = selectedList ;
878+ let eventIndex = null ,
879+ hasEvent = false ;
880+
881+ for ( let index = 0 ; index < selectedList . length ; index ++ ) {
882+ const evt = selectedList [ index ] ;
883+
884+ if ( evt . id === eventInfo . id ) {
885+ eventIndex = index ;
886+ hasEvent = true ;
887+ break ;
888+ }
889+ }
890+
891+ if ( hasEvent ) {
892+ copySelectedList . splice ( eventIndex , eventIndex + 1 ) ;
893+ } else {
894+ copySelectedList . push ( eventInfo ) ;
895+ }
896+ this . setState ( { selectedList : copySelectedList } , ( ) => {
897+ console . log ( 'is selecting' , copySelectedList ) ;
898+ notify ( this . props . onShiftSelect , copySelectedList ) ;
899+ } ) ;
900+ } else {
901+ selectedList . length = 0 ;
902+ this . setState ( { selectedList } , ( ) => {
903+ console . log ( 'left selecting' , selectedList ) ;
904+ notify ( this . props . onShiftSelect , selectedList ) ;
905+ } ) ;
874906 }
875907
876908 this . setState ( { selected : eventInfo } , ( ) => {
0 commit comments