@auth0/quantum-product 2.6.0 → 2.7.1
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.
- package/date-picker/date-picker-context.d.ts +2 -0
- package/date-picker/date-picker-context.js +2 -0
- package/date-picker/date-picker-popover.js +114 -137
- package/date-picker/date-picker-time-input.d.ts +21 -0
- package/date-picker/date-picker-time-input.js +362 -0
- package/date-picker/date-picker-types.d.ts +4 -0
- package/date-picker/date-picker.js +4 -2
- package/dropdown-menu/dropdown-menu-list-item/dropdown-menu-list-item.d.ts +1 -0
- package/dropdown-menu/dropdown-menu-list-item/dropdown-menu-list-item.js +2 -2
- package/esm/date-picker/date-picker-context.js +2 -0
- package/esm/date-picker/date-picker-popover.js +114 -137
- package/esm/date-picker/date-picker-time-input.js +336 -0
- package/esm/date-picker/date-picker.js +4 -2
- package/esm/dropdown-menu/dropdown-menu-list-item/dropdown-menu-list-item.js +2 -2
- package/esm/panel/panel/panel-classes.js +1 -0
- package/esm/panel/panel/panel.js +1 -0
- package/package.json +1 -1
- package/panel/panel/panel-classes.d.ts +1 -1
- package/panel/panel/panel-classes.js +1 -0
- package/panel/panel/panel.d.ts +1 -1
- package/panel/panel/panel.js +1 -0
- package/panel/panel-context.d.ts +1 -1
|
@@ -2,6 +2,8 @@ import * as React from 'react';
|
|
|
2
2
|
export interface IDatePickerContextValue {
|
|
3
3
|
dateFormat: string;
|
|
4
4
|
timeFormat?: string;
|
|
5
|
+
minDate?: string | number | Date;
|
|
6
|
+
maxDate?: string | number | Date;
|
|
5
7
|
onSelectDate(date: string, shouldClose?: boolean): void;
|
|
6
8
|
isRangeSelection?: boolean;
|
|
7
9
|
showTimeInput?: boolean;
|
|
@@ -28,6 +28,8 @@ var React = __importStar(require("react"));
|
|
|
28
28
|
exports.DatePickerContext = React.createContext({
|
|
29
29
|
dateFormat: 'MM/dd/yyyy',
|
|
30
30
|
timeFormat: 'HH:mm:ss',
|
|
31
|
+
minDate: undefined,
|
|
32
|
+
maxDate: undefined,
|
|
31
33
|
onSelectDate: function () { return undefined; },
|
|
32
34
|
isRangeSelection: false,
|
|
33
35
|
showTimeInput: false,
|
|
@@ -60,6 +60,15 @@ var __read = (this && this.__read) || function (o, n) {
|
|
|
60
60
|
}
|
|
61
61
|
return ar;
|
|
62
62
|
};
|
|
63
|
+
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
|
|
64
|
+
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
|
|
65
|
+
if (ar || !(i in from)) {
|
|
66
|
+
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
|
|
67
|
+
ar[i] = from[i];
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return to.concat(ar || Array.prototype.slice.call(from));
|
|
71
|
+
};
|
|
63
72
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
64
73
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
65
74
|
};
|
|
@@ -75,9 +84,9 @@ var dropdown_menu_1 = require("../dropdown-menu");
|
|
|
75
84
|
var popover_1 = require("../popover");
|
|
76
85
|
var styled_1 = require("../styled");
|
|
77
86
|
var classes_1 = require("../styles/classes");
|
|
78
|
-
var text_field_1 = require("../text-field");
|
|
79
87
|
var clsx_1 = __importDefault(require("../utils/clsx"));
|
|
80
88
|
var date_picker_classes_1 = require("./date-picker-classes");
|
|
89
|
+
var date_picker_time_input_1 = require("./date-picker-time-input");
|
|
81
90
|
var date_picker_utils_1 = require("./date-picker-utils");
|
|
82
91
|
var Root = (0, styled_1.styled)(popover_1.Popover, { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'Root' })(function (_a) {
|
|
83
92
|
var theme = _a.theme;
|
|
@@ -171,6 +180,7 @@ var CalendarWrapper = (0, styled_1.styled)('div', { name: date_picker_classes_1.
|
|
|
171
180
|
'.rdp-day_button': {
|
|
172
181
|
width: theme.spacing(4),
|
|
173
182
|
height: theme.spacing(4),
|
|
183
|
+
borderRadius: theme.spacing(0.5),
|
|
174
184
|
},
|
|
175
185
|
'.rdp-range_start .rdp-day_button': {
|
|
176
186
|
backgroundColor: theme.tokens.color_bg_button_primary,
|
|
@@ -218,153 +228,127 @@ var ButtonContainer = (0, styled_1.styled)(box_1.Box, { name: date_picker_classe
|
|
|
218
228
|
borderTop: "1px solid ".concat(theme.tokens.color_border_default),
|
|
219
229
|
});
|
|
220
230
|
});
|
|
221
|
-
var TimeInputContainer = (0, styled_1.styled)('div', { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'TimeInput' })(function (_a) {
|
|
222
|
-
var theme = _a.theme;
|
|
223
|
-
return ({
|
|
224
|
-
display: 'flex',
|
|
225
|
-
justifyContent: 'flex-start',
|
|
226
|
-
gap: theme.spacing(0.5),
|
|
227
|
-
padding: theme.spacing(1),
|
|
228
|
-
alignItems: 'center',
|
|
229
|
-
borderTop: "1px solid ".concat(theme.tokens.color_border_default),
|
|
230
|
-
});
|
|
231
|
-
});
|
|
232
|
-
var EndTimeInputContainer = (0, styled_1.styled)('div', { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'EndTimeInput' })(function (_a) {
|
|
233
|
-
var theme = _a.theme;
|
|
234
|
-
return ({
|
|
235
|
-
display: 'flex',
|
|
236
|
-
justifyContent: 'flex-start',
|
|
237
|
-
gap: theme.spacing(0.5),
|
|
238
|
-
alignItems: 'center',
|
|
239
|
-
marginLeft: theme.spacing(2),
|
|
240
|
-
});
|
|
241
|
-
});
|
|
242
|
-
var TimeInput = (0, styled_1.styled)(text_field_1.TextField, { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'TimeInputField' })({
|
|
243
|
-
width: '3rem',
|
|
244
|
-
});
|
|
245
|
-
var TimeInputLabel = (0, styled_1.styled)('span', { name: date_picker_classes_1.datePickerPopoverComponentName, slot: 'TimeInputLabel' })(function (_a) {
|
|
246
|
-
var theme = _a.theme;
|
|
247
|
-
return ({
|
|
248
|
-
color: theme.tokens.color_fg_default,
|
|
249
|
-
fontSize: theme.typography.caption.fontSize,
|
|
250
|
-
});
|
|
251
|
-
});
|
|
252
231
|
exports.DatePickerPopover = React.forwardRef(function (props, ref) {
|
|
253
|
-
var anchorEl = props.anchorEl, open = props.open, onClose = props.onClose, onDateSelect = props.onDateSelect, options = props.options, value = props.value, _a = props.dateFormat, dateFormat = _a === void 0 ? 'MM/dd/yyyy' : _a, _b = props.timeFormat, timeFormat = _b === void 0 ? 'HH:mm:ss' : _b, PopoverProps = props.PopoverProps, _c = props.showTwoMonths, showTwoMonths = _c === void 0 ? false : _c, _d = props.isRangeSelection, isRangeSelection = _d === void 0 ? false : _d, _e = props.showTimeInput, showTimeInput = _e === void 0 ? false : _e, propClasses = props.classes, rootProps = __rest(props, ["anchorEl", "open", "onClose", "onDateSelect", "options", "value", "dateFormat", "timeFormat", "PopoverProps", "showTwoMonths", "isRangeSelection", "showTimeInput", "classes"]);
|
|
232
|
+
var anchorEl = props.anchorEl, open = props.open, onClose = props.onClose, onDateSelect = props.onDateSelect, options = props.options, value = props.value, _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, PopoverProps = props.PopoverProps, _c = props.showTwoMonths, showTwoMonths = _c === void 0 ? false : _c, _d = props.isRangeSelection, isRangeSelection = _d === void 0 ? false : _d, _e = props.showTimeInput, showTimeInput = _e === void 0 ? false : _e, propClasses = props.classes, rootProps = __rest(props, ["anchorEl", "open", "onClose", "onDateSelect", "options", "value", "dateFormat", "timeFormat", "minDate", "maxDate", "PopoverProps", "showTwoMonths", "isRangeSelection", "showTimeInput", "classes"]);
|
|
254
233
|
var classes = (0, classes_1.useMergedClasses)(date_picker_classes_1.datePickerPopoverClasses, date_picker_classes_1.getDatePickerPopoverUtilityClass, propClasses);
|
|
255
|
-
// State to track the current view: 'options' or 'calendar'
|
|
256
234
|
var _f = __read(React.useState(options ? 'options' : 'calendar'), 2), currentView = _f[0], setCurrentView = _f[1];
|
|
257
|
-
// State to track the current range selection
|
|
258
235
|
var _g = __read(React.useState({}), 2), rangeSelection = _g[0], setRangeSelection = _g[1];
|
|
259
|
-
|
|
260
|
-
var
|
|
261
|
-
var
|
|
262
|
-
|
|
263
|
-
// For range selection - end time
|
|
264
|
-
var _l = __read(React.useState('00'), 2), endHours = _l[0], setEndHours = _l[1];
|
|
265
|
-
var _m = __read(React.useState('00'), 2), endMinutes = _m[0], setEndMinutes = _m[1];
|
|
266
|
-
var _o = __read(React.useState('00'), 2), endSeconds = _o[0], setEndSeconds = _o[1];
|
|
267
|
-
// Reset selection and view when popover opens/closes
|
|
236
|
+
var _h = __read(React.useState({ hours: '00', minutes: '00', seconds: '00' }), 2), startTime = _h[0], setStartTime = _h[1];
|
|
237
|
+
var _j = __read(React.useState({ hours: '00', minutes: '00', seconds: '00' }), 2), endTime = _j[0], setEndTime = _j[1];
|
|
238
|
+
var shouldAutoFocusTimeInput = React.useRef(false);
|
|
239
|
+
// Reset state when popover closes
|
|
268
240
|
React.useEffect(function () {
|
|
269
241
|
if (!open) {
|
|
270
242
|
setRangeSelection({});
|
|
271
|
-
// Reset the view to options if there are options available
|
|
272
243
|
if (options) {
|
|
273
244
|
setCurrentView('options');
|
|
274
245
|
}
|
|
275
246
|
}
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
247
|
+
}, [open, options]);
|
|
248
|
+
// Parse and set single date selection when value changes
|
|
249
|
+
React.useEffect(function () {
|
|
250
|
+
if (!value || isRangeSelection || !open)
|
|
251
|
+
return;
|
|
252
|
+
var formatString = showTimeInput ? "".concat(dateFormat, " ").concat(timeFormat) : dateFormat;
|
|
253
|
+
var date = (0, date_picker_utils_1.parseDate)(value, formatString);
|
|
254
|
+
if (date) {
|
|
255
|
+
setRangeSelection({ from: date });
|
|
256
|
+
if (showTimeInput) {
|
|
257
|
+
var timeComponents = (0, date_picker_utils_1.extractTimeComponents)(date);
|
|
258
|
+
setStartTime(timeComponents);
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}, [open, value, isRangeSelection, dateFormat, timeFormat, showTimeInput]);
|
|
262
|
+
// Parse and set range selection when value changes
|
|
263
|
+
React.useEffect(function () {
|
|
264
|
+
if (!open || !value || !isRangeSelection || !value.includes('-'))
|
|
265
|
+
return;
|
|
266
|
+
var _a = (0, date_picker_utils_1.parseDateRange)(value, dateFormat, showTimeInput ? timeFormat : undefined), from = _a.from, to = _a.to;
|
|
267
|
+
if (from && to) {
|
|
268
|
+
setRangeSelection({ from: from, to: to });
|
|
269
|
+
var startTimeComponents = (0, date_picker_utils_1.extractTimeComponents)(from);
|
|
270
|
+
setStartTime(startTimeComponents);
|
|
271
|
+
var endTimeComponents = (0, date_picker_utils_1.extractTimeComponents)(to);
|
|
272
|
+
setEndTime(endTimeComponents);
|
|
273
|
+
}
|
|
274
|
+
}, [open, value, isRangeSelection, dateFormat, timeFormat, showTimeInput]);
|
|
275
|
+
React.useEffect(function () {
|
|
276
|
+
if (open && showTimeInput && currentView === 'calendar') {
|
|
277
|
+
shouldAutoFocusTimeInput.current = true;
|
|
278
|
+
}
|
|
279
|
+
}, [open, showTimeInput, currentView]);
|
|
280
|
+
var handleCalendarSelect = function (selection) {
|
|
281
|
+
if (!selection)
|
|
282
|
+
return;
|
|
283
|
+
if (!isRangeSelection) {
|
|
284
|
+
var selectedDate = void 0;
|
|
285
|
+
if (selection.from && !selection.to) {
|
|
286
|
+
selectedDate = selection.from;
|
|
287
|
+
}
|
|
288
|
+
else if (selection.from && selection.to) {
|
|
289
|
+
var previousDate = rangeSelection.from;
|
|
290
|
+
if (previousDate && previousDate.getTime() === selection.from.getTime()) {
|
|
291
|
+
selectedDate = selection.to;
|
|
286
292
|
}
|
|
287
|
-
if (to) {
|
|
288
|
-
|
|
289
|
-
var _c = (0, date_picker_utils_1.extractTimeComponents)(to), h = _c.hours, m = _c.minutes, s = _c.seconds;
|
|
290
|
-
setEndHours(h);
|
|
291
|
-
setEndMinutes(m);
|
|
292
|
-
setEndSeconds(s);
|
|
293
|
+
else if (previousDate && selection.to && previousDate.getTime() === selection.to.getTime()) {
|
|
294
|
+
selectedDate = selection.from;
|
|
293
295
|
}
|
|
294
|
-
|
|
295
|
-
|
|
296
|
+
else {
|
|
297
|
+
selectedDate = selection.to;
|
|
296
298
|
}
|
|
297
299
|
}
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
setHours(h);
|
|
308
|
-
setMinutes(m);
|
|
309
|
-
setSeconds(s);
|
|
310
|
-
}
|
|
300
|
+
// Apply the selected date if found
|
|
301
|
+
if (selectedDate) {
|
|
302
|
+
if (showTimeInput) {
|
|
303
|
+
var newDate = (0, date_picker_utils_1.applyTimeToDate)(selectedDate, startTime);
|
|
304
|
+
setRangeSelection({ from: newDate });
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
setRangeSelection({ from: selectedDate });
|
|
308
|
+
applySelection(selectedDate);
|
|
311
309
|
}
|
|
312
310
|
}
|
|
311
|
+
return;
|
|
313
312
|
}
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
var handleCalendarSelect = function (selection) {
|
|
317
|
-
if (!selection)
|
|
313
|
+
// Handle range selection mode - with early returns to reduce nesting
|
|
314
|
+
if (!selection.from)
|
|
318
315
|
return;
|
|
319
|
-
|
|
320
|
-
if (selection.from && !selection.to) {
|
|
321
|
-
// Single date or range start
|
|
316
|
+
if (!selection.to) {
|
|
322
317
|
if (showTimeInput) {
|
|
323
|
-
var newFrom = (0, date_picker_utils_1.applyTimeToDate)(selection.from,
|
|
318
|
+
var newFrom = (0, date_picker_utils_1.applyTimeToDate)(selection.from, startTime);
|
|
324
319
|
setRangeSelection({ from: newFrom });
|
|
325
320
|
}
|
|
326
321
|
else {
|
|
327
322
|
setRangeSelection({ from: selection.from });
|
|
328
323
|
}
|
|
324
|
+
return;
|
|
329
325
|
}
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
var newTo = (0, date_picker_utils_1.applyTimeToDate)(selection.to, { hours: endHours, minutes: endMinutes, seconds: endSeconds });
|
|
335
|
-
setRangeSelection({ from: newFrom, to: newTo });
|
|
336
|
-
}
|
|
337
|
-
else {
|
|
338
|
-
setRangeSelection(selection);
|
|
339
|
-
}
|
|
326
|
+
if (showTimeInput) {
|
|
327
|
+
var newFrom = (0, date_picker_utils_1.applyTimeToDate)(selection.from, startTime);
|
|
328
|
+
var newTo = (0, date_picker_utils_1.applyTimeToDate)(selection.to, endTime);
|
|
329
|
+
setRangeSelection({ from: newFrom, to: newTo });
|
|
340
330
|
}
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
applySelection(selection.from);
|
|
331
|
+
else {
|
|
332
|
+
setRangeSelection(selection);
|
|
344
333
|
}
|
|
345
|
-
// For range selection or time input, we'll wait for user to click Apply
|
|
346
334
|
};
|
|
347
|
-
var
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
if (!isNaN(parsed) && parsed >= 0 && parsed <= max) {
|
|
351
|
-
setter(parsed.toString().padStart(2, '0'));
|
|
352
|
-
}
|
|
353
|
-
else if (value === '') {
|
|
354
|
-
setter('00');
|
|
355
|
-
}
|
|
356
|
-
updateDateWithTime();
|
|
335
|
+
var handleStartTimeChange = function (time) {
|
|
336
|
+
setStartTime(time);
|
|
337
|
+
updateDateWithTime(time, endTime);
|
|
357
338
|
};
|
|
358
|
-
var
|
|
339
|
+
var handleEndTimeChange = function (time) {
|
|
340
|
+
setEndTime(time);
|
|
341
|
+
updateDateWithTime(startTime, time);
|
|
342
|
+
};
|
|
343
|
+
var handleTimeClear = function () {
|
|
344
|
+
shouldAutoFocusTimeInput.current = true;
|
|
345
|
+
};
|
|
346
|
+
var updateDateWithTime = function (startTimeValue, endTimeValue) {
|
|
359
347
|
if (!rangeSelection.from)
|
|
360
348
|
return;
|
|
361
|
-
var newFrom = (0, date_picker_utils_1.applyTimeToDate)(rangeSelection.from,
|
|
349
|
+
var newFrom = (0, date_picker_utils_1.applyTimeToDate)(rangeSelection.from, startTimeValue);
|
|
362
350
|
if (isRangeSelection && rangeSelection.to) {
|
|
363
|
-
var newTo = (0, date_picker_utils_1.applyTimeToDate)(rangeSelection.to,
|
|
364
|
-
hours: endHours,
|
|
365
|
-
minutes: endMinutes,
|
|
366
|
-
seconds: endSeconds,
|
|
367
|
-
});
|
|
351
|
+
var newTo = (0, date_picker_utils_1.applyTimeToDate)(rangeSelection.to, endTimeValue);
|
|
368
352
|
setRangeSelection({ from: newFrom, to: newTo });
|
|
369
353
|
}
|
|
370
354
|
else {
|
|
@@ -384,9 +368,16 @@ exports.DatePickerPopover = React.forwardRef(function (props, ref) {
|
|
|
384
368
|
var formatString = showTimeInput ? "".concat(dateFormat, " ").concat(timeFormat) : dateFormat;
|
|
385
369
|
var formattedDate = (0, date_picker_utils_1.formatDate)(dateToFormat, formatString);
|
|
386
370
|
onDateSelect(formattedDate, true);
|
|
371
|
+
onClose();
|
|
387
372
|
}
|
|
388
373
|
}
|
|
389
374
|
};
|
|
375
|
+
var clearSelection = function () {
|
|
376
|
+
setRangeSelection({});
|
|
377
|
+
setStartTime({ hours: '00', minutes: '00', seconds: '00' });
|
|
378
|
+
setEndTime({ hours: '00', minutes: '00', seconds: '00' });
|
|
379
|
+
onDateSelect('', true);
|
|
380
|
+
};
|
|
390
381
|
var cancelSelection = function () {
|
|
391
382
|
if (options) {
|
|
392
383
|
setCurrentView('options');
|
|
@@ -410,13 +401,12 @@ exports.DatePickerPopover = React.forwardRef(function (props, ref) {
|
|
|
410
401
|
var formatString = showTimeInput ? "".concat(dateFormat, " ").concat(timeFormat) : dateFormat;
|
|
411
402
|
var parsedDate = (0, date_picker_utils_1.parseDate)(value, formatString);
|
|
412
403
|
if (parsedDate) {
|
|
413
|
-
selectedValue = parsedDate;
|
|
404
|
+
selectedValue = { from: parsedDate };
|
|
414
405
|
}
|
|
415
406
|
}
|
|
416
|
-
// Determine if we should show the action buttons - now for both range selection and time input
|
|
417
407
|
var showActionButtons = isRangeSelection || showTimeInput;
|
|
418
|
-
var
|
|
419
|
-
var
|
|
408
|
+
var canApplyDate = isRangeSelection ? rangeSelection.from && rangeSelection.to : !!rangeSelection.from;
|
|
409
|
+
var _k = __read(React.useState(null), 2), inputWidth = _k[0], setInputWidth = _k[1];
|
|
420
410
|
React.useEffect(function () {
|
|
421
411
|
if (open && anchorEl) {
|
|
422
412
|
var width = anchorEl.getBoundingClientRect().width;
|
|
@@ -433,26 +423,13 @@ exports.DatePickerPopover = React.forwardRef(function (props, ref) {
|
|
|
433
423
|
}, transformOrigin: {
|
|
434
424
|
vertical: 'top',
|
|
435
425
|
horizontal: 'left',
|
|
436
|
-
}, marginThreshold:
|
|
426
|
+
}, marginThreshold: 0, style: { marginTop: '-24px' } }, PopoverProps, rootProps),
|
|
437
427
|
React.createElement(Content, { className: classes.content, ownerState: __assign(__assign({}, ownerState), { inputWidth: inputWidth, currentView: currentView }) }, currentView === 'options' && options ? (React.createElement(dropdown_menu_1.DropdownMenuList, null, options.map(function (option, index) { return (React.createElement(dropdown_menu_1.DropdownMenuListItem, { key: index, title: option.text, selected: option.value === value, onClick: function () { return handleOptionSelect(option.value); } })); }))) : (React.createElement(React.Fragment, null,
|
|
438
428
|
React.createElement(CalendarWrapper, { className: classes.calendarWrapper },
|
|
439
|
-
React.createElement(react_day_picker_1.DayPicker, { mode: "range", selected: selectedValue, onSelect: handleCalendarSelect, showOutsideDays: true, numberOfMonths: showTwoMonths ? 2 : 1, pagedNavigation: showTwoMonths })),
|
|
440
|
-
showTimeInput && (React.createElement(
|
|
441
|
-
React.createElement(TimeInputContainer, null,
|
|
442
|
-
React.createElement(TimeInputLabel, null, "Time:"),
|
|
443
|
-
React.createElement(TimeInput, { size: "small", value: hours, onChange: function (e) { return handleTimeChange(e.target.value, setHours, 23); }, placeholder: "HH" }),
|
|
444
|
-
React.createElement("span", null, ":"),
|
|
445
|
-
React.createElement(TimeInput, { size: "small", value: minutes, onChange: function (e) { return handleTimeChange(e.target.value, setMinutes, 59); }, placeholder: "MM" }),
|
|
446
|
-
React.createElement("span", null, ":"),
|
|
447
|
-
React.createElement(TimeInput, { size: "small", value: seconds, onChange: function (e) { return handleTimeChange(e.target.value, setSeconds, 59); }, placeholder: "SS" }),
|
|
448
|
-
isRangeSelection && (React.createElement(EndTimeInputContainer, null,
|
|
449
|
-
React.createElement(TimeInputLabel, null, "End Time:"),
|
|
450
|
-
React.createElement(TimeInput, { size: "small", value: endHours, onChange: function (e) { return handleTimeChange(e.target.value, setEndHours, 23); }, placeholder: "HH" }),
|
|
451
|
-
React.createElement("span", null, ":"),
|
|
452
|
-
React.createElement(TimeInput, { size: "small", value: endMinutes, onChange: function (e) { return handleTimeChange(e.target.value, setEndMinutes, 59); }, placeholder: "MM" }),
|
|
453
|
-
React.createElement("span", null, ":"),
|
|
454
|
-
React.createElement(TimeInput, { size: "small", value: endSeconds, onChange: function (e) { return handleTimeChange(e.target.value, setEndSeconds, 59); }, placeholder: "SS" })))))),
|
|
429
|
+
React.createElement(react_day_picker_1.DayPicker, { mode: "range", selected: selectedValue, onSelect: handleCalendarSelect, showOutsideDays: true, numberOfMonths: showTwoMonths ? 2 : 1, pagedNavigation: showTwoMonths, disabled: __spreadArray(__spreadArray([], __read((minDate ? [{ before: new Date(minDate) }] : [])), false), __read((maxDate ? [{ after: new Date(maxDate) }] : [])), false) })),
|
|
430
|
+
showTimeInput && (React.createElement(date_picker_time_input_1.DatePickerTimeInput, { startTime: startTime, endTime: endTime, isRangeSelection: isRangeSelection, onStartTimeChange: handleStartTimeChange, onEndTimeChange: handleEndTimeChange, onClear: handleTimeClear })),
|
|
455
431
|
showActionButtons && (React.createElement(ButtonContainer, { className: classes.buttonContainer },
|
|
432
|
+
React.createElement(button_1.Button, { size: "small", variant: "link", onClick: clearSelection, style: { marginRight: 'auto' } }, "Clear"),
|
|
456
433
|
React.createElement(button_1.Button, { size: "small", variant: "outlined", onClick: cancelSelection, style: { marginRight: 8 } }, "Cancel"),
|
|
457
|
-
React.createElement(button_1.Button, { size: "small", variant: "contained", color: "primary", onClick: function () { return applySelection(); }, disabled: !
|
|
434
|
+
React.createElement(button_1.Button, { size: "small", variant: "contained", color: "primary", onClick: function () { return applySelection(); }, disabled: !canApplyDate }, "Apply"))))))));
|
|
458
435
|
});
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
export interface ITimeValue {
|
|
3
|
+
hours: string;
|
|
4
|
+
minutes: string;
|
|
5
|
+
seconds: string;
|
|
6
|
+
}
|
|
7
|
+
export interface IDatePickerTimeInputProps {
|
|
8
|
+
/** Start time values */
|
|
9
|
+
startTime: ITimeValue;
|
|
10
|
+
/** End time values (only used when isRangeSelection is true) */
|
|
11
|
+
endTime?: ITimeValue;
|
|
12
|
+
/** Whether this is for range selection (shows both start and end time inputs) */
|
|
13
|
+
isRangeSelection?: boolean;
|
|
14
|
+
/** Called when start time values change */
|
|
15
|
+
onStartTimeChange: (time: ITimeValue) => void;
|
|
16
|
+
/** Called when end time values change (only used when isRangeSelection is true) */
|
|
17
|
+
onEndTimeChange?: (time: ITimeValue) => void;
|
|
18
|
+
/** Called when time values should be cleared */
|
|
19
|
+
onClear?: () => void;
|
|
20
|
+
}
|
|
21
|
+
export declare const DatePickerTimeInput: React.ForwardRefExoticComponent<IDatePickerTimeInputProps & React.RefAttributes<HTMLDivElement>>;
|