@@ -249,8 +249,14 @@ class Calendar extends React.Component {
249249 onDrillDown : PropTypes . func ,
250250
251251 /**
252+ *
253+ * ```js
254+ * (dates: Date[] | { start: Date; end: Date }, view?: 'month'|'week'|'work_week'|'day'|'agenda') => void
255+ * ```
256+ *
252257 * 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.
254260 *
255261 * Custom views may return something different.
256262 */
@@ -903,12 +909,21 @@ class Calendar extends React.Component {
903909 )
904910 }
905911
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 ) => {
907922 let { onRangeChange, localizer } = this . props
908923
909924 if ( onRangeChange ) {
910- if ( view . range ) {
911- onRangeChange ( view . range ( date , { localizer } ) )
925+ if ( viewComponent . range ) {
926+ onRangeChange ( viewComponent . range ( date , { localizer } ) , view )
912927 } else {
913928 warning ( true , 'onRangeChange prop not supported for this view' )
914929 }
@@ -937,7 +952,7 @@ class Calendar extends React.Component {
937952 }
938953
939954 let views = this . getViews ( )
940- this . handleRangeChange ( this . props . date , views [ view ] )
955+ this . handleRangeChange ( this . props . date , views [ view ] , view )
941956 }
942957
943958 handleSelectEvent = ( ...args ) => {
0 commit comments