@auth0/quantum-product 2.6.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,362 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
25
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
26
+ }) : function(o, v) {
27
+ o["default"] = v;
28
+ });
29
+ var __importStar = (this && this.__importStar) || function (mod) {
30
+ if (mod && mod.__esModule) return mod;
31
+ var result = {};
32
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
33
+ __setModuleDefault(result, mod);
34
+ return result;
35
+ };
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.DatePickerTimeInput = void 0;
38
+ var React = __importStar(require("react"));
39
+ var styled_1 = require("../styled");
40
+ var text_field_1 = require("../text-field");
41
+ var date_picker_classes_1 = require("./date-picker-classes");
42
+ var TimeInputContainer = (0, styled_1.styled)('div', { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'TimeInput' })(function (_a) {
43
+ var theme = _a.theme;
44
+ return ({
45
+ display: 'flex',
46
+ justifyContent: 'flex-start',
47
+ gap: theme.spacing(0.5),
48
+ padding: theme.spacing(1),
49
+ alignItems: 'center',
50
+ borderTop: "1px solid ".concat(theme.tokens.color_border_default),
51
+ });
52
+ });
53
+ var EndTimeInputContainer = (0, styled_1.styled)('div', { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'EndTimeInput' })(function (_a) {
54
+ var theme = _a.theme;
55
+ return ({
56
+ display: 'flex',
57
+ justifyContent: 'flex-start',
58
+ gap: theme.spacing(0.5),
59
+ alignItems: 'center',
60
+ marginLeft: theme.spacing(2),
61
+ });
62
+ });
63
+ var TimeInput = (0, styled_1.styled)(text_field_1.TextField, { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'TimeInputField' })({
64
+ minWidth: '3rem',
65
+ width: '3rem',
66
+ '& .MuiOutlinedInput-input': {
67
+ textAlign: 'center',
68
+ },
69
+ });
70
+ var TimeInputLabel = (0, styled_1.styled)('span', { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'TimeInputLabel' })(function (_a) {
71
+ var theme = _a.theme;
72
+ return ({
73
+ color: theme.tokens.color_fg_default,
74
+ fontSize: theme.typography.caption.fontSize,
75
+ });
76
+ });
77
+ exports.DatePickerTimeInput = React.forwardRef(function (props, ref) {
78
+ var startTime = props.startTime, endTime = props.endTime, _a = props.isRangeSelection, isRangeSelection = _a === void 0 ? false : _a, onStartTimeChange = props.onStartTimeChange, onEndTimeChange = props.onEndTimeChange, onClear = props.onClear;
79
+ // Refs for time input navigation
80
+ var hoursRef = React.useRef(null);
81
+ var minutesRef = React.useRef(null);
82
+ var secondsRef = React.useRef(null);
83
+ var endHoursRef = React.useRef(null);
84
+ var endMinutesRef = React.useRef(null);
85
+ var endSecondsRef = React.useRef(null);
86
+ var handleTimeChange = function (value, timeType, field, max) {
87
+ var _a, _b;
88
+ var numValue = value.replace(/\D/g, '');
89
+ var parsed = parseInt(numValue, 10);
90
+ var newValue = '00';
91
+ if (!isNaN(parsed) && parsed >= 0 && parsed <= max) {
92
+ newValue = parsed.toString().padStart(2, '0');
93
+ }
94
+ else if (value === '') {
95
+ newValue = '00';
96
+ }
97
+ if (timeType === 'start') {
98
+ var newTime = __assign(__assign({}, startTime), (_a = {}, _a[field] = newValue, _a));
99
+ onStartTimeChange(newTime);
100
+ }
101
+ else if (timeType === 'end' && endTime && onEndTimeChange) {
102
+ var newTime = __assign(__assign({}, endTime), (_b = {}, _b[field] = newValue, _b));
103
+ onEndTimeChange(newTime);
104
+ }
105
+ };
106
+ var clearAllTimeInputs = React.useCallback(function () {
107
+ var clearedTime = { hours: '00', minutes: '00', seconds: '00' };
108
+ onStartTimeChange(clearedTime);
109
+ if (isRangeSelection && onEndTimeChange) {
110
+ onEndTimeChange(clearedTime);
111
+ }
112
+ onClear === null || onClear === void 0 ? void 0 : onClear();
113
+ setTimeout(function () {
114
+ var _a, _b;
115
+ (_a = hoursRef.current) === null || _a === void 0 ? void 0 : _a.focus();
116
+ (_b = hoursRef.current) === null || _b === void 0 ? void 0 : _b.setSelectionRange(0, 0);
117
+ }, 0);
118
+ }, [onStartTimeChange, onEndTimeChange, onClear, isRangeSelection]);
119
+ var handleArrowKeys = function (e, config, target, isAtStart, isAtEnd) {
120
+ var _a, _b;
121
+ switch (e.key) {
122
+ case 'ArrowUp': {
123
+ e.preventDefault();
124
+ var upValue = parseInt(config.currentValue, 10) || 0;
125
+ var newUpValue = upValue === config.max ? 0 : upValue + 1;
126
+ var newValueStr = newUpValue.toString().padStart(2, '0');
127
+ handleTimeChange(newValueStr, config.timeType, config.field, config.max);
128
+ break;
129
+ }
130
+ case 'ArrowDown': {
131
+ e.preventDefault();
132
+ var downValue = parseInt(config.currentValue, 10) || 0;
133
+ var newDownValue = downValue === 0 ? config.max : downValue - 1;
134
+ var newValueStr = newDownValue.toString().padStart(2, '0');
135
+ handleTimeChange(newValueStr, config.timeType, config.field, config.max);
136
+ break;
137
+ }
138
+ case 'ArrowRight':
139
+ if (isAtEnd && ((_a = config.nextRef) === null || _a === void 0 ? void 0 : _a.current)) {
140
+ e.preventDefault();
141
+ config.nextRef.current.focus();
142
+ config.nextRef.current.setSelectionRange(0, 0);
143
+ }
144
+ break;
145
+ case 'ArrowLeft':
146
+ if (isAtStart && ((_b = config.prevRef) === null || _b === void 0 ? void 0 : _b.current)) {
147
+ e.preventDefault();
148
+ config.prevRef.current.focus();
149
+ config.prevRef.current.setSelectionRange(2, 2);
150
+ }
151
+ break;
152
+ }
153
+ };
154
+ var handleEditKeys = function (e, config, target, startPos, endPos, isAtStart) {
155
+ var _a;
156
+ switch (e.key) {
157
+ case 'Backspace':
158
+ if (isAtStart && ((_a = config.prevRef) === null || _a === void 0 ? void 0 : _a.current)) {
159
+ e.preventDefault();
160
+ config.prevRef.current.focus();
161
+ config.prevRef.current.setSelectionRange(2, 2);
162
+ }
163
+ else if (startPos === endPos) {
164
+ e.preventDefault();
165
+ var newPos_1 = Math.max(0, startPos - 1);
166
+ var newValue = target.value.substring(0, newPos_1) + '0' + target.value.substring(startPos);
167
+ var parsed = parseInt(newValue, 10) || 0;
168
+ if (parsed <= config.max) {
169
+ handleTimeChange(newValue, config.timeType, config.field, config.max);
170
+ setTimeout(function () { return target.setSelectionRange(newPos_1, newPos_1); }, 0);
171
+ }
172
+ }
173
+ break;
174
+ case 'Delete':
175
+ if (startPos === endPos) {
176
+ e.preventDefault();
177
+ var newValue = target.value.substring(0, startPos) + '0' + target.value.substring(startPos + 1);
178
+ var parsed = parseInt(newValue, 10) || 0;
179
+ if (parsed <= config.max) {
180
+ handleTimeChange(newValue, config.timeType, config.field, config.max);
181
+ setTimeout(function () { return target.setSelectionRange(startPos, startPos); }, 0);
182
+ }
183
+ }
184
+ break;
185
+ }
186
+ };
187
+ var handleNumberInput = function (e, config, target, startPos, endPos) {
188
+ if (!/^[0-9]$/.test(e.key))
189
+ return;
190
+ e.preventDefault();
191
+ var newValue = target.value;
192
+ if (startPos === endPos) {
193
+ if (target.value.length < 2) {
194
+ newValue = target.value + e.key;
195
+ }
196
+ else {
197
+ newValue = target.value.substring(0, startPos) + e.key + target.value.substring(startPos + 1);
198
+ }
199
+ }
200
+ else {
201
+ newValue = target.value.substring(0, startPos) + e.key + target.value.substring(endPos);
202
+ }
203
+ var parsed = parseInt(newValue, 10) || 0;
204
+ if (parsed <= config.max) {
205
+ handleTimeChange(newValue, config.timeType, config.field, config.max);
206
+ var newPos_2 = Math.min(startPos + 1, 2);
207
+ setTimeout(function () {
208
+ var _a;
209
+ target.setSelectionRange(newPos_2, newPos_2);
210
+ if (newValue.length === 2 && startPos === 1 && ((_a = config.nextRef) === null || _a === void 0 ? void 0 : _a.current)) {
211
+ config.nextRef.current.focus();
212
+ config.nextRef.current.setSelectionRange(0, 0);
213
+ }
214
+ }, 0);
215
+ }
216
+ };
217
+ var handleTimeKeyDown = function (e, currentValue, timeType, field, max, nextRef, prevRef) {
218
+ var target = e.target;
219
+ var selectionStart = target.selectionStart, selectionEnd = target.selectionEnd;
220
+ var startPos = selectionStart !== null && selectionStart !== void 0 ? selectionStart : 0;
221
+ var endPos = selectionEnd !== null && selectionEnd !== void 0 ? selectionEnd : 0;
222
+ var isAtStart = startPos === 0;
223
+ var isAtEnd = startPos === target.value.length;
224
+ var config = {
225
+ currentValue: currentValue,
226
+ timeType: timeType,
227
+ field: field,
228
+ max: max,
229
+ nextRef: nextRef,
230
+ prevRef: prevRef,
231
+ };
232
+ // Clear all inputs with Cmd/Ctrl + Backspace
233
+ if (e.key === 'Backspace' && (e.metaKey || e.ctrlKey)) {
234
+ e.preventDefault();
235
+ clearAllTimeInputs();
236
+ return;
237
+ }
238
+ if (['ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight'].includes(e.key)) {
239
+ handleArrowKeys(e, config, target, isAtStart, isAtEnd);
240
+ }
241
+ else if (['Backspace', 'Delete'].includes(e.key)) {
242
+ handleEditKeys(e, config, target, startPos, endPos, isAtStart);
243
+ }
244
+ else {
245
+ handleNumberInput(e, config, target, startPos, endPos);
246
+ }
247
+ };
248
+ var parseTimeFromDigits = function (digitsOnly) {
249
+ var hours = '00';
250
+ var minutes = '00';
251
+ var seconds = '00';
252
+ if (digitsOnly.length === 6) {
253
+ hours = Math.min(parseInt(digitsOnly.substring(0, 2), 10), 23)
254
+ .toString()
255
+ .padStart(2, '0');
256
+ minutes = Math.min(parseInt(digitsOnly.substring(2, 4), 10), 59)
257
+ .toString()
258
+ .padStart(2, '0');
259
+ seconds = Math.min(parseInt(digitsOnly.substring(4, 6), 10), 59)
260
+ .toString()
261
+ .padStart(2, '0');
262
+ }
263
+ else if (digitsOnly.length === 4) {
264
+ hours = Math.min(parseInt(digitsOnly.substring(0, 2), 10), 23)
265
+ .toString()
266
+ .padStart(2, '0');
267
+ minutes = Math.min(parseInt(digitsOnly.substring(2, 4), 10), 59)
268
+ .toString()
269
+ .padStart(2, '0');
270
+ }
271
+ else if (digitsOnly.length <= 2) {
272
+ hours = Math.min(parseInt(digitsOnly, 10), 23).toString().padStart(2, '0');
273
+ }
274
+ else {
275
+ var paddedDigits = digitsOnly.padStart(4, '0');
276
+ hours = Math.min(parseInt(paddedDigits.substring(0, 2), 10), 23)
277
+ .toString()
278
+ .padStart(2, '0');
279
+ minutes = Math.min(parseInt(paddedDigits.substring(2, 4), 10), 59)
280
+ .toString()
281
+ .padStart(2, '0');
282
+ }
283
+ return { hours: hours, minutes: minutes, seconds: seconds };
284
+ };
285
+ var getFocusTargetAfterPaste = function (digitsOnly, timeType) {
286
+ var isStart = timeType === 'start';
287
+ if (digitsOnly.length === 6) {
288
+ return isStart ? secondsRef : endSecondsRef;
289
+ }
290
+ else if (digitsOnly.length === 4) {
291
+ return isStart ? minutesRef : endMinutesRef;
292
+ }
293
+ else if (digitsOnly.length <= 2) {
294
+ return isStart ? hoursRef : endHoursRef;
295
+ }
296
+ else {
297
+ return isStart ? minutesRef : endMinutesRef;
298
+ }
299
+ };
300
+ var handleTimePaste = function (e, timeType) {
301
+ e.preventDefault();
302
+ var pastedText = e.clipboardData.getData('text').trim();
303
+ var digitsOnly = pastedText.replace(/\D/g, '').substring(0, 6);
304
+ if (digitsOnly.length === 0)
305
+ return;
306
+ var newTime = parseTimeFromDigits(digitsOnly);
307
+ var focusTargetRef = getFocusTargetAfterPaste(digitsOnly, timeType);
308
+ if (timeType === 'start') {
309
+ onStartTimeChange(newTime);
310
+ }
311
+ else if (timeType === 'end' && onEndTimeChange) {
312
+ onEndTimeChange(newTime);
313
+ }
314
+ setTimeout(function () {
315
+ var _a, _b;
316
+ (_a = focusTargetRef === null || focusTargetRef === void 0 ? void 0 : focusTargetRef.current) === null || _a === void 0 ? void 0 : _a.focus();
317
+ (_b = focusTargetRef === null || focusTargetRef === void 0 ? void 0 : focusTargetRef.current) === null || _b === void 0 ? void 0 : _b.setSelectionRange(2, 2);
318
+ }, 0);
319
+ };
320
+ var getAccessibilityProps = function (timeType, field, value) {
321
+ var max = field === 'hours' ? 23 : 59;
322
+ var fieldLabel = field === 'hours' ? 'Hours' : field === 'minutes' ? 'Minutes' : 'Seconds';
323
+ var typeLabel = isRangeSelection ? (timeType === 'start' ? 'Start time' : 'End time') : 'Time';
324
+ return {
325
+ 'aria-label': "".concat(typeLabel, " ").concat(fieldLabel.toLowerCase()),
326
+ 'aria-describedby': 'time-input-help',
327
+ role: 'spinbutton',
328
+ 'aria-valuemin': 0,
329
+ 'aria-valuemax': max,
330
+ 'aria-valuenow': parseInt(value, 10) || 0,
331
+ };
332
+ };
333
+ return (React.createElement(TimeInputContainer, { ref: ref },
334
+ React.createElement(TimeInputLabel, null, "Time:"),
335
+ React.createElement(TimeInput, { size: "small", value: startTime.hours, onChange: function (e) { return handleTimeChange(e.target.value, 'start', 'hours', 23); }, inputRef: hoursRef, placeholder: "HH", InputProps: {
336
+ onKeyDown: function (e) { return handleTimeKeyDown(e, startTime.hours, 'start', 'hours', 23, minutesRef, null); },
337
+ }, inputProps: __assign({ onPaste: function (e) { return handleTimePaste(e, 'start'); } }, getAccessibilityProps('start', 'hours', startTime.hours)) }),
338
+ React.createElement("span", null, ":"),
339
+ React.createElement(TimeInput, { size: "small", value: startTime.minutes, onChange: function (e) { return handleTimeChange(e.target.value, 'start', 'minutes', 59); }, inputRef: minutesRef, placeholder: "MM", InputProps: {
340
+ onKeyDown: function (e) { return handleTimeKeyDown(e, startTime.minutes, 'start', 'minutes', 59, secondsRef, hoursRef); },
341
+ }, inputProps: __assign({ onPaste: function (e) { return handleTimePaste(e, 'start'); } }, getAccessibilityProps('start', 'minutes', startTime.minutes)) }),
342
+ React.createElement("span", null, ":"),
343
+ React.createElement(TimeInput, { size: "small", value: startTime.seconds, onChange: function (e) { return handleTimeChange(e.target.value, 'start', 'seconds', 59); }, inputRef: secondsRef, placeholder: "SS", InputProps: {
344
+ onKeyDown: function (e) {
345
+ return handleTimeKeyDown(e, startTime.seconds, 'start', 'seconds', 59, isRangeSelection ? endHoursRef : null, minutesRef);
346
+ },
347
+ }, inputProps: __assign({ onPaste: function (e) { return handleTimePaste(e, 'start'); } }, getAccessibilityProps('start', 'seconds', startTime.seconds)) }),
348
+ isRangeSelection && endTime && onEndTimeChange && (React.createElement(EndTimeInputContainer, null,
349
+ React.createElement(TimeInputLabel, null, "End Time:"),
350
+ React.createElement(TimeInput, { size: "small", value: endTime.hours, onChange: function (e) { return handleTimeChange(e.target.value, 'end', 'hours', 23); }, inputRef: endHoursRef, placeholder: "HH", InputProps: {
351
+ onKeyDown: function (e) { return handleTimeKeyDown(e, endTime.hours, 'end', 'hours', 23, endMinutesRef, secondsRef); },
352
+ }, inputProps: __assign({ onPaste: function (e) { return handleTimePaste(e, 'end'); } }, getAccessibilityProps('end', 'hours', endTime.hours)) }),
353
+ React.createElement("span", null, ":"),
354
+ React.createElement(TimeInput, { size: "small", value: endTime.minutes, onChange: function (e) { return handleTimeChange(e.target.value, 'end', 'minutes', 59); }, inputRef: endMinutesRef, placeholder: "MM", InputProps: {
355
+ onKeyDown: function (e) { return handleTimeKeyDown(e, endTime.minutes, 'end', 'minutes', 59, endSecondsRef, endHoursRef); },
356
+ }, inputProps: __assign({ onPaste: function (e) { return handleTimePaste(e, 'end'); } }, getAccessibilityProps('end', 'minutes', endTime.minutes)) }),
357
+ React.createElement("span", null, ":"),
358
+ React.createElement(TimeInput, { size: "small", value: endTime.seconds, onChange: function (e) { return handleTimeChange(e.target.value, 'end', 'seconds', 59); }, inputRef: endSecondsRef, placeholder: "SS", InputProps: {
359
+ onKeyDown: function (e) { return handleTimeKeyDown(e, endTime.seconds, 'end', 'seconds', 59, null, endMinutesRef); },
360
+ }, inputProps: __assign({ onPaste: function (e) { return handleTimePaste(e, 'end'); } }, getAccessibilityProps('end', 'seconds', endTime.seconds)) })))));
361
+ });
362
+ exports.DatePickerTimeInput.displayName = 'DatePickerTimeInput';
@@ -10,6 +10,8 @@ export interface IDatePickerBaseProps {
10
10
  onChange?: (value: string) => void;
11
11
  dateFormat?: string;
12
12
  timeFormat?: string;
13
+ minDate?: string | number | Date;
14
+ maxDate?: string | number | Date;
13
15
  placeholder?: string;
14
16
  disabled?: boolean;
15
17
  fullWidth?: boolean;
@@ -35,6 +37,8 @@ export interface IDatePickerPopoverProps {
35
37
  value?: string;
36
38
  dateFormat?: string;
37
39
  timeFormat?: string;
40
+ minDate?: string | number | Date;
41
+ maxDate?: string | number | Date;
38
42
  PopoverProps?: Partial<IPopoverProps>;
39
43
  showTwoMonths?: boolean;
40
44
  isRangeSelection?: boolean;
@@ -81,7 +81,7 @@ var Root = (0, styled_1.styled)('div', { name: date_picker_classes_1.datePickerC
81
81
  width: '100%',
82
82
  });
83
83
  exports.DatePicker = React.forwardRef(function (props, ref) {
84
- var value = props.value, onChange = props.onChange, _a = props.dateFormat, dateFormat = _a === void 0 ? 'MM/dd/yyyy' : _a, _b = props.timeFormat, timeFormat = _b === void 0 ? 'HH:mm:ss' : _b, _c = props.placeholder, placeholder = _c === void 0 ? dateFormat + (props.showTimeInput ? ' ' + timeFormat : '') : _c, _d = props.disabled, disabled = _d === void 0 ? false : _d, _e = props.fullWidth, fullWidth = _e === void 0 ? false : _e, _f = props.size, size = _f === void 0 ? 'medium' : _f, _g = props.readOnly, readOnly = _g === void 0 ? false : _g, _h = props.required, required = _h === void 0 ? false : _h, _j = props.error, error = _j === void 0 ? false : _j, helperText = props.helperText, options = props.options, _k = props.isRangeSelection, isRangeSelection = _k === void 0 ? false : _k, _l = props.showTwoMonths, showTwoMonths = _l === void 0 ? false : _l, _m = props.showTimeInput, showTimeInput = _m === void 0 ? false : _m, _o = props.allowTimestampPasting, allowTimestampPasting = _o === void 0 ? false : _o, _p = props.timestampUnit, timestampUnit = _p === void 0 ? 'ms' : _p, _q = props.TextFieldProps, TextFieldProps = _q === void 0 ? {} : _q, propClasses = props.classes, externalState = props.state, rootProps = __rest(props, ["value", "onChange", "dateFormat", "timeFormat", "placeholder", "disabled", "fullWidth", "size", "readOnly", "required", "error", "helperText", "options", "isRangeSelection", "showTwoMonths", "showTimeInput", "allowTimestampPasting", "timestampUnit", "TextFieldProps", "classes", "state"]);
84
+ var value = props.value, onChange = props.onChange, _a = props.dateFormat, dateFormat = _a === void 0 ? 'MM/dd/yyyy' : _a, _b = props.timeFormat, timeFormat = _b === void 0 ? 'HH:mm:ss' : _b, minDate = props.minDate, maxDate = props.maxDate, _c = props.placeholder, placeholder = _c === void 0 ? dateFormat + (props.showTimeInput ? ' ' + timeFormat : '') : _c, _d = props.disabled, disabled = _d === void 0 ? false : _d, _e = props.fullWidth, fullWidth = _e === void 0 ? false : _e, _f = props.size, size = _f === void 0 ? 'medium' : _f, _g = props.readOnly, readOnly = _g === void 0 ? false : _g, _h = props.required, required = _h === void 0 ? false : _h, _j = props.error, error = _j === void 0 ? false : _j, helperText = props.helperText, options = props.options, _k = props.isRangeSelection, isRangeSelection = _k === void 0 ? false : _k, _l = props.showTwoMonths, showTwoMonths = _l === void 0 ? false : _l, _m = props.showTimeInput, showTimeInput = _m === void 0 ? false : _m, _o = props.allowTimestampPasting, allowTimestampPasting = _o === void 0 ? false : _o, _p = props.timestampUnit, timestampUnit = _p === void 0 ? 'ms' : _p, _q = props.TextFieldProps, TextFieldProps = _q === void 0 ? {} : _q, propClasses = props.classes, externalState = props.state, rootProps = __rest(props, ["value", "onChange", "dateFormat", "timeFormat", "minDate", "maxDate", "placeholder", "disabled", "fullWidth", "size", "readOnly", "required", "error", "helperText", "options", "isRangeSelection", "showTwoMonths", "showTimeInput", "allowTimestampPasting", "timestampUnit", "TextFieldProps", "classes", "state"]);
85
85
  var classes = (0, classes_1.useMergedClasses)(date_picker_classes_1.datePickerClasses, date_picker_classes_1.getDatePickerUtilityClass, propClasses);
86
86
  var internalState = (0, date_picker_state_1.useDatePickerState)();
87
87
  var _r = externalState || internalState, triggerProps = _r.triggerProps, popoverProps = _r.popoverProps;
@@ -147,6 +147,8 @@ exports.DatePicker = React.forwardRef(function (props, ref) {
147
147
  return (React.createElement(date_picker_context_1.DatePickerContext.Provider, { value: {
148
148
  dateFormat: dateFormat,
149
149
  timeFormat: timeFormat,
150
+ minDate: minDate,
151
+ maxDate: maxDate,
150
152
  onSelectDate: handleDateSelect,
151
153
  isRangeSelection: isRangeSelection,
152
154
  showTimeInput: showTimeInput,
@@ -160,5 +162,5 @@ exports.DatePicker = React.forwardRef(function (props, ref) {
160
162
  TextFieldProps.onClick(e);
161
163
  }
162
164
  } }, TextFieldProps)),
163
- React.createElement(date_picker_popover_1.DatePickerPopover, __assign({}, popoverProps, { onDateSelect: handleDateSelect, options: options, value: displayValue, dateFormat: dateFormat, timeFormat: timeFormat, showTwoMonths: showTwoMonths, isRangeSelection: isRangeSelection, showTimeInput: showTimeInput })))));
165
+ React.createElement(date_picker_popover_1.DatePickerPopover, __assign({}, popoverProps, { onDateSelect: handleDateSelect, options: options, minDate: minDate, maxDate: maxDate, value: displayValue, dateFormat: dateFormat, timeFormat: timeFormat, showTwoMonths: showTwoMonths, isRangeSelection: isRangeSelection, showTimeInput: showTimeInput })))));
164
166
  });
@@ -2,6 +2,8 @@ import * as React from 'react';
2
2
  export var DatePickerContext = React.createContext({
3
3
  dateFormat: 'MM/dd/yyyy',
4
4
  timeFormat: 'HH:mm:ss',
5
+ minDate: undefined,
6
+ maxDate: undefined,
5
7
  onSelectDate: function () { return undefined; },
6
8
  isRangeSelection: false,
7
9
  showTimeInput: false,