@@ -249,8 +249,14 @@ class Calendar extends React.Component {
249
249
onDrillDown : PropTypes . func ,
250
250
251
251
/**
252
+ *
253
+ * ```js
254
+ * (dates: Date[] | { start: Date; end: Date }, view?: 'month'|'week'|'work_week'|'day'|'agenda') => void
255
+ * ```
256
+ *
252
257
* Callback fired when the visible date range changes. Returns an Array of dates
253
- * or an object with start and end dates for BUILTIN views.
258
+ * or an object with start and end dates for BUILTIN views. Optionally new `view`
259
+ * will be returned when callback called after view change.
254
260
*
255
261
* Custom views may return something different.
256
262
*/
@@ -903,12 +909,21 @@ class Calendar extends React.Component {
903
909
)
904
910
}
905
911
906
- handleRangeChange = ( date , view ) => {
912
+ /**
913
+ *
914
+ * @param date
915
+ * @param viewComponent
916
+ * @param {'month'|'week'|'work_week'|'day'|'agenda' } [view] - optional
917
+ * parameter. It appears when range change on view changing. It could be handy
918
+ * when you need to have both: range and view type at once, i.e. for manage rbc
919
+ * state via url
920
+ */
921
+ handleRangeChange = ( date , viewComponent , view ) => {
907
922
let { onRangeChange, localizer } = this . props
908
923
909
924
if ( onRangeChange ) {
910
- if ( view . range ) {
911
- onRangeChange ( view . range ( date , { localizer } ) )
925
+ if ( viewComponent . range ) {
926
+ onRangeChange ( viewComponent . range ( date , { localizer } ) , view )
912
927
} else {
913
928
warning ( true , 'onRangeChange prop not supported for this view' )
914
929
}
@@ -937,7 +952,7 @@ class Calendar extends React.Component {
937
952
}
938
953
939
954
let views = this . getViews ( )
940
- this . handleRangeChange ( this . props . date , views [ view ] )
955
+ this . handleRangeChange ( this . props . date , views [ view ] , view )
941
956
}
942
957
943
958
handleSelectEvent = ( ...args ) => {
0 commit comments