Skip to content

Commit befac9f

Browse files
newsiberianjquense
authored andcommitted
feat: handleRangeChange, handleViewChange refactored to pass fresh view to onRangeChange when view changed; (jquense#1100)
1 parent 90044d5 commit befac9f

File tree

1 file changed

+20
-5
lines changed

1 file changed

+20
-5
lines changed

src/Calendar.js

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)