Skip to content
This repository was archived by the owner on May 19, 2025. It is now read-only.

Commit 5e11039

Browse files
authored
Merge pull request #406 from greybutton/feature/disable_day_func
add disableDay function
2 parents 33f2294 + da80e70 commit 5e11039

File tree

3 files changed

+10
-2
lines changed

3 files changed

+10
-2
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,7 @@ minDate | Date | | defines mi
107107
maxDate | Date | | defines maximum date. Disabled later dates
108108
direction | String | 'vertical' | direction of calendar months. can be `vertical` or `horizontal`
109109
disabledDates | Date[] | [] | dates that are disabled
110+
disabledDay | Func | | predicate function that disable day fn(date: Date)
110111
scroll | Object | { enabled: false }| infinite scroll behaviour configuration. Check out [Infinite Scroll](#infinite-scrolled-mode) section
111112
showMonthArrow | Boolean | true | show/hide month arrow button
112113
navigatorRenderer | Func | | renderer for focused date navigation area. fn(currentFocusedDate: Date, changeShownDate: func, props: object)

src/components/Calendar/index.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -378,6 +378,7 @@ class Calendar extends PureComponent {
378378
scroll,
379379
direction,
380380
disabledDates,
381+
disabledDay,
381382
maxDate,
382383
minDate,
383384
rangeColors,
@@ -440,6 +441,7 @@ class Calendar extends PureComponent {
440441
drag={this.state.drag}
441442
dateOptions={this.dateOptions}
442443
disabledDates={disabledDates}
444+
disabledDay={disabledDay}
443445
month={monthStep}
444446
onDragSelectionStart={this.onDragSelectionStart}
445447
onDragSelectionEnd={this.onDragSelectionEnd}
@@ -477,6 +479,7 @@ class Calendar extends PureComponent {
477479
drag={this.state.drag}
478480
dateOptions={this.dateOptions}
479481
disabledDates={disabledDates}
482+
disabledDay={disabledDay}
480483
month={monthStep}
481484
onDragSelectionStart={this.onDragSelectionStart}
482485
onDragSelectionEnd={this.onDragSelectionEnd}
@@ -499,6 +502,7 @@ Calendar.defaultProps = {
499502
showMonthArrow: true,
500503
showMonthAndYearPickers: true,
501504
disabledDates: [],
505+
disabledDay: () => {},
502506
classNames: {},
503507
locale: defaultLocale,
504508
ranges: [],
@@ -530,6 +534,7 @@ Calendar.propTypes = {
530534
showMonthArrow: PropTypes.bool,
531535
showMonthAndYearPickers: PropTypes.bool,
532536
disabledDates: PropTypes.array,
537+
disabledDay: PropTypes.func,
533538
minDate: PropTypes.object,
534539
maxDate: PropTypes.object,
535540
date: PropTypes.object,

src/components/Month/index.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ function renderWeekdays(styles, dateOptions, weekdayDisplayFormat) {
3636
class Month extends PureComponent {
3737
render() {
3838
const now = new Date();
39-
const { displayMode, focusedRange, drag, styles, disabledDates } = this.props;
39+
const { displayMode, focusedRange, drag, styles, disabledDates, disabledDay } = this.props;
4040
const minDate = this.props.minDate && startOfDay(this.props.minDate);
4141
const maxDate = this.props.maxDate && endOfDay(this.props.maxDate);
4242
const monthDisplay = getMonthDisplayRange(
@@ -76,6 +76,7 @@ class Month extends PureComponent {
7676
const isDisabledSpecifically = disabledDates.some(disabledDate =>
7777
isSameDay(disabledDate, day)
7878
);
79+
const isDisabledDay = disabledDay(day);
7980
return (
8081
<DayCell
8182
{...this.props}
@@ -89,7 +90,7 @@ class Month extends PureComponent {
8990
isStartOfMonth={isStartOfMonth}
9091
isEndOfMonth={isEndOfMonth}
9192
key={index}
92-
disabled={isOutsideMinMax || isDisabledSpecifically}
93+
disabled={isOutsideMinMax || isDisabledSpecifically || isDisabledDay}
9394
isPassive={
9495
!isWithinInterval(day, {
9596
start: monthDisplay.startDateOfMonth,
@@ -121,6 +122,7 @@ Month.propTypes = {
121122
drag: PropTypes.object,
122123
dateOptions: PropTypes.object,
123124
disabledDates: PropTypes.array,
125+
disabledDay: PropTypes.func,
124126
preview: PropTypes.shape({
125127
startDate: PropTypes.object,
126128
endDate: PropTypes.object,

0 commit comments

Comments
 (0)