@auth0/quantum-product 2.5.9 → 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.
Files changed (39) hide show
  1. package/breadcrumbs/breadcrumbs-item/breadcrumbs-item.js +2 -2
  2. package/button/button.d.ts +1 -0
  3. package/button/button.js +2 -2
  4. package/card/card.d.ts +1 -0
  5. package/card/card.js +2 -2
  6. package/chip/chip.d.ts +1 -0
  7. package/chip/chip.js +2 -2
  8. package/date-picker/date-picker-context.d.ts +2 -0
  9. package/date-picker/date-picker-context.js +2 -0
  10. package/date-picker/date-picker-popover.js +114 -137
  11. package/date-picker/date-picker-time-input.d.ts +21 -0
  12. package/date-picker/date-picker-time-input.js +362 -0
  13. package/date-picker/date-picker-types.d.ts +4 -0
  14. package/date-picker/date-picker.js +4 -2
  15. package/esm/breadcrumbs/breadcrumbs-item/breadcrumbs-item.js +2 -2
  16. package/esm/button/button.js +2 -2
  17. package/esm/card/card.js +2 -2
  18. package/esm/chip/chip.js +2 -2
  19. package/esm/date-picker/date-picker-context.js +2 -0
  20. package/esm/date-picker/date-picker-popover.js +114 -137
  21. package/esm/date-picker/date-picker-time-input.js +336 -0
  22. package/esm/date-picker/date-picker.js +4 -2
  23. package/esm/icon-button/icon-button.js +2 -2
  24. package/esm/link/link.js +2 -2
  25. package/esm/panel/panel/panel-classes.js +1 -0
  26. package/esm/panel/panel/panel.js +1 -0
  27. package/esm/tabs/tab/tab.js +2 -2
  28. package/icon-button/icon-button.d.ts +1 -0
  29. package/icon-button/icon-button.js +2 -2
  30. package/link/link.d.ts +4 -0
  31. package/link/link.js +2 -2
  32. package/package.json +1 -1
  33. package/panel/panel/panel-classes.d.ts +1 -1
  34. package/panel/panel/panel-classes.js +1 -0
  35. package/panel/panel/panel.d.ts +1 -1
  36. package/panel/panel/panel.js +1 -0
  37. package/panel/panel-context.d.ts +1 -1
  38. package/tabs/tab/tab.d.ts +1 -0
  39. package/tabs/tab/tab.js +2 -2
@@ -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
  });
@@ -66,9 +66,9 @@ var EndIcon = styled('span', {
66
66
  });
67
67
  });
68
68
  export var BreadcrumbsItem = React.forwardRef(function (props, ref) {
69
- var label = props.label, startIcon = props.startIcon, endIcon = props.endIcon, className = props.className, isCurrent = props.isCurrent, children = props.children, propClasses = props.classes, rootProps = __rest(props, ["label", "startIcon", "endIcon", "className", "isCurrent", "children", "classes"]);
69
+ var label = props.label, startIcon = props.startIcon, endIcon = props.endIcon, className = props.className, isCurrent = props.isCurrent, children = props.children, propClasses = props.classes, analyticsId = props.analyticsId, rootProps = __rest(props, ["label", "startIcon", "endIcon", "className", "isCurrent", "children", "classes", "analyticsId"]);
70
70
  var classes = useMergedClasses(breadcrumbsItemClasses, getBreadcrumbsItemUtilityClass, propClasses);
71
- return (React.createElement(Root, __assign({ variant: "subtitle2", color: isCurrent ? 'textPrimary' : 'textSecondary', className: clsx(classes.root, isCurrent && classes.current, className), "aria-current": isCurrent ? 'page' : undefined, ref: ref }, rootProps),
71
+ return (React.createElement(Root, __assign({ variant: "subtitle2", color: isCurrent ? 'textPrimary' : 'textSecondary', className: clsx(classes.root, isCurrent && classes.current, className), "aria-current": isCurrent ? 'page' : undefined, ref: ref, analyticsId: analyticsId }, rootProps),
72
72
  !!startIcon && React.createElement(StartIcon, { className: clsx(classes.icon, classes.startIcon) }, startIcon),
73
73
  React.createElement("span", { className: classes.label }, label || children),
74
74
  !!endIcon && React.createElement(EndIcon, { className: clsx(classes.icon, classes.endIcon) }, endIcon)));
@@ -60,14 +60,14 @@ var LabelSpan = styled('span')(function (_a) {
60
60
  });
61
61
  });
62
62
  export var Button = React.forwardRef(function (_a, ref) {
63
- var isLoading = _a.isLoading, label = _a.label, children = _a.children, disabled = _a.disabled, _b = _a.SpinnerProps, SpinnerProps = _b === void 0 ? {} : _b, _c = _a.color, color = _c === void 0 ? 'default' : _c, variant = _a.variant, maxWidth = _a.maxWidth, rootProps = __rest(_a, ["isLoading", "label", "children", "disabled", "SpinnerProps", "color", "variant", "maxWidth"]);
63
+ var isLoading = _a.isLoading, label = _a.label, children = _a.children, disabled = _a.disabled, _b = _a.SpinnerProps, SpinnerProps = _b === void 0 ? {} : _b, _c = _a.color, color = _c === void 0 ? 'default' : _c, variant = _a.variant, maxWidth = _a.maxWidth, analyticsId = _a.analyticsId, rootProps = __rest(_a, ["isLoading", "label", "children", "disabled", "SpinnerProps", "color", "variant", "maxWidth", "analyticsId"]);
64
64
  var title = label ||
65
65
  (typeof children === 'string'
66
66
  ? children
67
67
  : React.Children.toArray(children)
68
68
  .filter(function (child) { return typeof child === 'string'; })
69
69
  .join(''));
70
- return (React.createElement(Root, __assign({}, rootProps, { disabled: disabled || isLoading, ownerState: { isLoading: isLoading }, color: color, variant: variant, ref: ref, title: String(title) }),
70
+ return (React.createElement(Root, __assign({}, rootProps, { disabled: disabled || isLoading, ownerState: { isLoading: isLoading }, color: color, variant: variant, ref: ref, title: String(title) }, (analyticsId && { 'data-analytics-id': analyticsId })),
71
71
  React.createElement(LabelSpan, { style: { maxWidth: rootProps.fullWidth ? 'none' : maxWidth || '100%' } }, label || children),
72
72
  ' ',
73
73
  !!isLoading && React.createElement(ButtonSpinner, __assign({}, SpinnerProps))));
package/esm/card/card.js CHANGED
@@ -92,7 +92,7 @@ var Root = styled(MuiCard, {
92
92
  export var Card = React.forwardRef(function (props, ref) {
93
93
  var button = props.button, _a = props.component, component = _a === void 0 ? 'div' : _a, disabled = props.disabled, className = props.className, selected = props.selected, selectableButton = props.selectableButton, _b = props.size, size = _b === void 0 ? 'large' : _b,
94
94
  // remove to prevent passing through to the root
95
- propClasses = props.classes, rootProps = __rest(props, ["button", "component", "disabled", "className", "selected", "selectableButton", "size", "classes"]);
95
+ propClasses = props.classes, analyticsId = props.analyticsId, rootProps = __rest(props, ["button", "component", "disabled", "className", "selected", "selectableButton", "size", "classes", "analyticsId"]);
96
96
  return (React.createElement(CardContext.Provider, { value: { size: size } },
97
97
  React.createElement(Root, __assign({}, { component: component }, { ownerState: {
98
98
  size: size,
@@ -100,5 +100,5 @@ export var Card = React.forwardRef(function (props, ref) {
100
100
  selectableButton: selectableButton,
101
101
  button: button,
102
102
  selected: selected,
103
- } }, rootProps, { className: className, role: button ? 'button' : undefined, tabIndex: button && !disabled ? 0 : undefined, "aria-disabled": disabled, ref: ref }))));
103
+ } }, (analyticsId && { 'data-analytics-id': analyticsId }), rootProps, { className: className, role: button ? 'button' : undefined, tabIndex: button && !disabled ? 0 : undefined, "aria-disabled": disabled, ref: ref }))));
104
104
  });
package/esm/chip/chip.js CHANGED
@@ -55,6 +55,6 @@ var Root = styled(MuiChip, { name: chipComponentName, slot: 'Root' })(function (
55
55
  _b))));
56
56
  });
57
57
  export var Chip = React.forwardRef(function (props, ref) {
58
- var selected = props.selected, _a = props.deleteIcon, deleteIcon = _a === void 0 ? React.createElement(XIcon, null) : _a, chipProps = __rest(props, ["selected", "deleteIcon"]);
59
- return (React.createElement(Root, __assign({ ref: ref, deleteIcon: deleteIcon, ownerState: { selected: selected } }, chipProps, { title: props === null || props === void 0 ? void 0 : props.label })));
58
+ var selected = props.selected, _a = props.deleteIcon, deleteIcon = _a === void 0 ? React.createElement(XIcon, null) : _a, analyticsId = props.analyticsId, chipProps = __rest(props, ["selected", "deleteIcon", "analyticsId"]);
59
+ return (React.createElement(Root, __assign({ ref: ref, deleteIcon: deleteIcon, ownerState: { selected: selected } }, (analyticsId && { 'data-analytics-id': analyticsId }), chipProps, { title: props === null || props === void 0 ? void 0 : props.label })));
60
60
  });
@@ -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,