diff --git a/lib/Calendar.js b/lib/Calendar.js
index 6a062bbe9..b540dcb93 100644
--- a/lib/Calendar.js
+++ b/lib/Calendar.js
@@ -308,6 +308,8 @@ var Calendar = (function(_React$Component) {
_0 = _props.components,
_1 = _props.formats,
_2 = _props.messages,
+ weekStart = _props.weekStart,
+ workWeekStart = _props.workWeekStart,
props = _objectWithoutProperties(_props, [
'view',
'toolbar',
@@ -323,6 +325,8 @@ var Calendar = (function(_React$Component) {
'components',
'formats',
'messages',
+ 'weekStart',
+ 'workWeekStart',
])
current = current || getNow()
@@ -336,7 +340,12 @@ var Calendar = (function(_React$Component) {
viewNames = _state$context.viewNames
var CalToolbar = components.toolbar || _Toolbar2.default
- var label = View.title(current, { localizer: localizer, length: length })
+ var label = View.title(current, {
+ localizer: localizer,
+ length: length,
+ weekStart: weekStart,
+ workWeekStart: workWeekStart,
+ })
return _react2.default.createElement(
'div',
@@ -372,6 +381,8 @@ var Calendar = (function(_React$Component) {
getNow: getNow,
length: length,
localizer: localizer,
+ weekStart: weekStart,
+ workWeekStart: workWeekStart,
getters: getters,
components: components,
accessors: accessors,
@@ -395,6 +406,12 @@ var Calendar = (function(_React$Component) {
Calendar.propTypes = {
localizer: _propTypes2.default.object.isRequired,
+ // When the week starts, 0 or 1.
+ weekStart: _propTypes2.default.number,
+
+ // When the work week starts, 0 or 1.
+ workWeekStart: _propTypes2.default.number,
+
/**
* Props passed to main calendar `
`.
*
diff --git a/lib/Week.js b/lib/Week.js
index 3f8502b4a..079280d68 100644
--- a/lib/Week.js
+++ b/lib/Week.js
@@ -133,11 +133,10 @@ Week.navigate = function(date, action) {
}
Week.range = function(date, _ref) {
- var localizer = _ref.localizer
+ var weekStart = _ref.weekStart
- var firstOfWeek = localizer.startOfWeek()
- var start = _dates2.default.startOf(date, 'week', firstOfWeek)
- var end = _dates2.default.endOf(date, 'week', firstOfWeek)
+ var start = _dates2.default.startOf(date, 'week', weekStart)
+ var end = _dates2.default.endOf(date, 'week', weekStart)
return _dates2.default.range(start, end)
}
diff --git a/lib/WorkWeek.js b/lib/WorkWeek.js
index 31991d201..85dbaa500 100644
--- a/lib/WorkWeek.js
+++ b/lib/WorkWeek.js
@@ -24,6 +24,10 @@ var _react = require('react')
var _react2 = _interopRequireDefault(_react)
+var _dates = require('./utils/dates')
+
+var _dates2 = _interopRequireDefault(_dates)
+
var _Week = require('./Week')
var _Week2 = _interopRequireDefault(_Week)
@@ -84,10 +88,13 @@ function _inherits(subClass, superClass) {
: (subClass.__proto__ = superClass)
}
-function workWeekRange(date, options) {
- return _Week2.default.range(date, options).filter(function(d) {
- return [6, 0].indexOf(d.getDay()) === -1
- })
+function workWeekRange(date, _ref) {
+ var workWeekStart = _ref.workWeekStart
+
+ var start = _dates2.default.startOf(date, 'week', workWeekStart)
+ var end = _dates2.default.endOf(date, 'week', workWeekStart)
+
+ return _dates2.default.range(start, end).slice(0, 5)
}
var WorkWeek = (function(_React$Component) {
@@ -127,10 +134,11 @@ WorkWeek.range = workWeekRange
WorkWeek.navigate = _Week2.default.navigate
-WorkWeek.title = function(date, _ref) {
- var localizer = _ref.localizer
+WorkWeek.title = function(date, _ref2) {
+ var localizer = _ref2.localizer,
+ workWeekStart = _ref2.workWeekStart
- var _workWeekRange = workWeekRange(date, { localizer: localizer }),
+ var _workWeekRange = workWeekRange(date, { workWeekStart: workWeekStart }),
start = _workWeekRange[0],
rest = _workWeekRange.slice(1)
diff --git a/src/Calendar.js b/src/Calendar.js
index dc843f0ca..d97724795 100644
--- a/src/Calendar.js
+++ b/src/Calendar.js
@@ -62,6 +62,12 @@ class Calendar extends React.Component {
static propTypes = {
localizer: PropTypes.object.isRequired,
+ // When the week starts, 0 or 1.
+ weekStart: PropTypes.number,
+
+ // When the work week starts, 0 or 1.
+ workWeekStart: PropTypes.number,
+
/**
* Props passed to main calendar `
`.
*
@@ -833,6 +839,8 @@ class Calendar extends React.Component {
components: _0,
formats: _1,
messages: _2,
+ weekStart,
+ workWeekStart,
...props
} = this.props
@@ -848,7 +856,12 @@ class Calendar extends React.Component {
} = this.state.context
let CalToolbar = components.toolbar || Toolbar
- const label = View.title(current, { localizer, length })
+ const label = View.title(current, {
+ localizer,
+ length,
+ weekStart,
+ workWeekStart,
+ })
return (
{
}
}
-Week.range = (date, { localizer }) => {
- let firstOfWeek = localizer.startOfWeek()
- let start = dates.startOf(date, 'week', firstOfWeek)
- let end = dates.endOf(date, 'week', firstOfWeek)
+Week.range = (date, { weekStart }) => {
+ let start = dates.startOf(date, 'week', weekStart)
+ let end = dates.endOf(date, 'week', weekStart)
return dates.range(start, end)
}
diff --git a/src/WorkWeek.js b/src/WorkWeek.js
index 3db982dce..070a5aad4 100644
--- a/src/WorkWeek.js
+++ b/src/WorkWeek.js
@@ -1,13 +1,15 @@
import PropTypes from 'prop-types'
import React from 'react'
+import dates from './utils/dates'
import Week from './Week'
import TimeGrid from './TimeGrid'
-function workWeekRange(date, options) {
- return Week.range(date, options).filter(
- d => [6, 0].indexOf(d.getDay()) === -1
- )
+function workWeekRange(date, { workWeekStart }) {
+ let start = dates.startOf(date, 'week', workWeekStart)
+ let end = dates.endOf(date, 'week', workWeekStart)
+
+ return dates.range(start, end).slice(0, 5)
}
class WorkWeek extends React.Component {
@@ -29,8 +31,8 @@ WorkWeek.range = workWeekRange
WorkWeek.navigate = Week.navigate
-WorkWeek.title = (date, { localizer }) => {
- let [start, ...rest] = workWeekRange(date, { localizer })
+WorkWeek.title = (date, { localizer, workWeekStart }) => {
+ let [start, ...rest] = workWeekRange(date, { workWeekStart })
return localizer.format({ start, end: rest.pop() }, 'dayRangeHeaderFormat')
}