|
1 | 1 | import * as React from "react";
|
2 | 2 | import { isEqual } from '@microsoft/sp-lodash-subset';
|
3 | 3 | import { TimeConvention, DateConvention } from "./DateTimeConventions";
|
| 4 | +import { Calendar } from "@fluentui/react"; |
4 | 5 | import { DatePicker } from "@fluentui/react/lib/DatePicker";
|
5 | 6 | import { Label } from "@fluentui/react/lib/Label";
|
6 | 7 | import { IconButton } from "@fluentui/react/lib/Button";
|
@@ -246,14 +247,34 @@ export class DateTimePicker extends React.Component<IDateTimePickerProps, IDateT
|
246 | 247 | maxDate,
|
247 | 248 | minutesIncrementStep,
|
248 | 249 | showClearDate = false,
|
249 |
| - showClearDateIcon = 'RemoveEvent' |
| 250 | + showClearDateIcon = 'RemoveEvent', |
| 251 | + restrictedDates = [] |
250 | 252 | } = this.props;
|
251 | 253 |
|
252 | 254 | const { textErrorMessage } = dateStrings;
|
253 | 255 | const hours: number = value !== null ? value.getHours() : this.state.hours;
|
254 | 256 | const minutes: number = value !== null ? value.getMinutes() : this.state.minutes;
|
255 | 257 | const seconds: number = value !== null ? value.getSeconds() : this.state.seconds;
|
256 | 258 |
|
| 259 | + const CalendarView = (): JSX.Element => { |
| 260 | + return ( |
| 261 | + <Calendar |
| 262 | + value={initialPickerDate} |
| 263 | + strings={dateStrings} |
| 264 | + isMonthPickerVisible={isMonthPickerVisible} |
| 265 | + onSelectDate={this.onSelectDate} |
| 266 | + firstDayOfWeek={firstDayOfWeek} |
| 267 | + firstWeekOfYear={firstWeekOfYear} |
| 268 | + showGoToToday={showGoToToday} |
| 269 | + showMonthPickerAsOverlay={showMonthPickerAsOverlay} |
| 270 | + showWeekNumbers={showWeekNumbers} |
| 271 | + minDate={minDate} |
| 272 | + maxDate={maxDate} |
| 273 | + restrictedDates={restrictedDates} |
| 274 | + /> |
| 275 | + ); |
| 276 | + }; |
| 277 | + |
257 | 278 | // Check if the time element needs to be rendered
|
258 | 279 | let timeElm: JSX.Element = <div className="hidden" />;
|
259 | 280 |
|
@@ -341,6 +362,7 @@ export class DateTimePicker extends React.Component<IDateTimePickerProps, IDateT
|
341 | 362 | initialPickerDate={initialPickerDate}
|
342 | 363 | minDate={minDate}
|
343 | 364 | maxDate={maxDate}
|
| 365 | + calendarAs={restrictedDates.length ? CalendarView : undefined} |
344 | 366 | textField={{
|
345 | 367 | onChange: (e, newValue) => this.handleTextChange(e, newValue, textErrorMessage)
|
346 | 368 | }}
|
|
0 commit comments