@@ -12,7 +12,7 @@ import { FsCalendarService } from '../services/fs-calendar.service';
1212 } ,
1313} )
1414export class FsCalendarPanelsComponent implements OnInit {
15- private _dataSource : CalendarPanels = {
15+ private _dataSource : CalendarPanels < any > = {
1616 config : {
1717 renderMode : 'monthly' ,
1818 selectMode : 'click' ,
@@ -34,17 +34,17 @@ export class FsCalendarPanelsComponent implements OnInit {
3434
3535 calendar : CalendarPanelSum | undefined ;
3636 today = new Date ( ) ;
37- selectedDayStart : Date | undefined ;
38- selectedDayBetween : Date [ ] = [ ] ;
39- selectedDayEnd : Date | undefined ;
37+ selectedDayStart : CalendarExtendedDay < any > | undefined ;
38+ selectedDayBetween : CalendarExtendedDay < any > [ ] = [ ] ;
39+ selectedDayEnd : CalendarExtendedDay < any > | undefined ;
4040 markWeekend = this . _dataSource . config . markWeekend ;
4141 bluredDays = this . _dataSource . config . bluredDays ;
4242 isLoading = true ;
4343 monthOverrride = false ;
4444
4545 weekendColor = 'rgba(0, 0, 0, .25)' ;
4646
47- get dataSource ( ) : CalendarPanels {
47+ get dataSource ( ) : CalendarPanels < any > {
4848 return this . _dataSource ;
4949 }
5050 get month ( ) : number {
@@ -61,7 +61,7 @@ export class FsCalendarPanelsComponent implements OnInit {
6161 }
6262
6363 @Input ( )
64- set dataSource ( data : CalendarPanels ) {
64+ set dataSource ( data : CalendarPanels < any > ) {
6565 this . _dataSource = data ;
6666 this . generateCal ( ) ;
6767 }
@@ -105,25 +105,34 @@ export class FsCalendarPanelsComponent implements OnInit {
105105 this . isLoading = false ;
106106 }
107107
108- onClick ( day : CalendarExtendedDay , type : string ) {
108+ onClick ( day : CalendarExtendedDay < any > , type : string ) {
109109 if ( type === 'date' && this . _dataSource . config . selectMode === 'range' ) {
110110 if ( this . selectedDayStart != undefined && this . selectedDayEnd != undefined ) {
111111 this . selectedDayBetween = [ ] ;
112112 this . selectedDayStart = undefined ;
113113 this . selectedDayEnd = undefined ;
114114 }
115- if ( dateFns . isBefore ( day . date , this . selectedDayStart as Date ) || this . selectedDayStart === undefined ) {
116- this . selectedDayStart = day . date ;
115+ if ( dateFns . isBefore ( day . date , this . selectedDayStart ?. date as Date ) || this . selectedDayStart === undefined ) {
116+ this . selectedDayStart = day ;
117117 } else {
118- this . selectedDayEnd = day . date ;
118+ this . selectedDayEnd = day ;
119119
120- let daysBetween : number = dateFns . differenceInDays ( this . selectedDayStart , this . selectedDayEnd ) ;
121- let daysAffected : Date [ ] = [ ] ;
120+ let daysBetween : number = dateFns . differenceInDays ( this . selectedDayStart . date , this . selectedDayEnd . date ) ;
121+ let daysAffected : CalendarExtendedDay < any > [ ] = [ ] ;
122122
123123 daysAffected . push ( this . selectedDayStart ) ;
124124 if ( daysBetween < 0 ) {
125+ console . log ( this . dataSource . data ) ;
125126 for ( let index = 1 ; index < daysBetween * - 1 + 1 ; index ++ ) {
126- daysAffected . push ( dateFns . addDays ( this . selectedDayStart , index ) ) ;
127+ let newGeneratedDay = this . calendarService . generateDay ( dateFns . addDays ( this . selectedDayStart . date , index ) , [ ] ) ;
128+ let i = this . dataSource . data . findIndex ( sd => dateFns . isSameDay ( sd . date , newGeneratedDay . date ) ) ;
129+ console . log ( 'index:' , i , newGeneratedDay . date ) ;
130+ if ( i != - 1 ) {
131+ console . log ( 'found one match' ) ;
132+ daysAffected . push ( this . dataSource . data [ i ] ) ;
133+ } else {
134+ daysAffected . push ( newGeneratedDay ) ;
135+ }
127136 }
128137 }
129138
@@ -137,7 +146,7 @@ export class FsCalendarPanelsComponent implements OnInit {
137146 } else {
138147 this . selection . emit ( {
139148 type : 'click' ,
140- date : day . date ,
149+ date : day ,
141150 } ) ;
142151 }
143152 }
@@ -146,15 +155,15 @@ export class FsCalendarPanelsComponent implements OnInit {
146155 if ( this . calendar != undefined ) {
147156 if ( this . selectedDayStart != undefined && this . selectedDayEnd == undefined ) {
148157 this . selectedDayBetween = this . calendar . daysAbsolute . filter ( date => {
149- return dateFns . isAfter ( date , this . selectedDayStart as Date ) && dateFns . isBefore ( date , dateComp ) ;
158+ return dateFns . isAfter ( date . date , this . selectedDayStart ?. date as Date ) && dateFns . isBefore ( date . date , dateComp ) ;
150159 } ) ;
151160 }
152161 }
153162 }
154163
155164 getAmIBetween ( date : Date ) : boolean {
156165 const fIndex = this . selectedDayBetween . findIndex ( selDate => {
157- return dateFns . isSameDay ( selDate , date ) ;
166+ return dateFns . isSameDay ( selDate . date , date ) ;
158167 } ) ;
159168 if ( fIndex != - 1 ) {
160169 return true ;
@@ -165,17 +174,17 @@ export class FsCalendarPanelsComponent implements OnInit {
165174
166175 isSelectedDayStart ( date : Date ) : boolean {
167176 if ( this . selectedDayStart ) {
168- return dateFns . isSameDay ( this . selectedDayStart , date ) ;
177+ return dateFns . isSameDay ( this . selectedDayStart . date , date ) ;
169178 } else {
170179 return false ;
171180 }
172181 }
173182 isSelectedDayEnd ( date : Date ) : boolean {
174183 if ( this . selectedDayEnd ) {
175- return dateFns . isSameDay ( this . selectedDayEnd , date ) ;
184+ return dateFns . isSameDay ( this . selectedDayEnd . date , date ) ;
176185 } else {
177186 if ( this . selectedDayBetween . length > 0 ) {
178- if ( dateFns . isSameDay ( dateFns . addDays ( this . selectedDayBetween [ this . selectedDayBetween . length - 1 ] , 1 ) , date ) ) {
187+ if ( dateFns . isSameDay ( this . calendarService . addDays ( this . selectedDayBetween [ this . selectedDayBetween . length - 1 ] , 1 ) . date , date ) ) {
179188 return true ;
180189 }
181190 }
@@ -190,9 +199,9 @@ export class FsCalendarPanelsComponent implements OnInit {
190199 getCanIBeHighlighted ( date : Date ) {
191200 if ( this . selectedDayEnd ) {
192201 if (
193- ( ! dateFns . isSameDay ( this . selectedDayStart as Date , date ) && ! dateFns . isSameDay ( this . selectedDayEnd , date ) && this . getAmIBetween ( date ) ) ||
194- ( dateFns . isSameDay ( this . selectedDayEnd , date ) && this . selectedDayEnd != undefined ) ||
195- ( dateFns . isSameDay ( this . selectedDayStart as Date , date ) && this . selectedDayStart != undefined )
202+ ( ! dateFns . isSameDay ( this . selectedDayStart ?. date as Date , date ) && ! dateFns . isSameDay ( this . selectedDayEnd ?. date , date ) && this . getAmIBetween ( date ) ) ||
203+ ( dateFns . isSameDay ( this . selectedDayEnd ?. date , date ) && this . selectedDayEnd != undefined ) ||
204+ ( dateFns . isSameDay ( this . selectedDayStart ?. date as Date , date ) && this . selectedDayStart != undefined )
196205 ) {
197206 return true ;
198207 } else {
0 commit comments