pixelize-design-library 2.2.51 → 2.2.53
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/dist/Components/DatePicker/CalendarPanel.js +11 -2
- package/dist/Components/DatePicker/DatePicker.js +11 -2
- package/dist/Components/DatePicker/SingleDatePicker.js +13 -13
- package/dist/Components/DatePicker/TimeOnlyPicker.js +3 -0
- package/dist/Components/DatePicker/TimePickerInput.js +35 -7
- package/package.json +1 -1
|
@@ -13,6 +13,8 @@ var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
|
13
13
|
var CalendarPanel = function (_a) {
|
|
14
14
|
var currentMonth = _a.currentMonth, setCurrentMonth = _a.setCurrentMonth, today = _a.today, isRange = _a.isRange, tempDate = _a.tempDate, tempRangeStart = _a.tempRangeStart, tempRangeEnd = _a.tempRangeEnd, isSameDay = _a.isSameDay, isBefore = _a.isBefore, isAfter = _a.isAfter, minDate = _a.minDate, maxDate = _a.maxDate, disablePastDates = _a.disablePastDates, disableFutureDates = _a.disableFutureDates, disableToday = _a.disableToday, onDaySelect = _a.onDaySelect, renderWeekdays = _a.renderWeekdays;
|
|
15
15
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
16
|
+
var isViewingCurrentMonth = currentMonth.getFullYear() === today.getFullYear() &&
|
|
17
|
+
currentMonth.getMonth() === today.getMonth();
|
|
16
18
|
var renderDays = function () {
|
|
17
19
|
var monthStart = (0, date_fns_1.startOfMonth)(currentMonth);
|
|
18
20
|
var monthEnd = (0, date_fns_1.endOfMonth)(currentMonth);
|
|
@@ -96,8 +98,15 @@ var CalendarPanel = function (_a) {
|
|
|
96
98
|
var year = new Date().getFullYear() - 50 + i;
|
|
97
99
|
return (react_1.default.createElement("option", { key: year, value: year }, year));
|
|
98
100
|
}))),
|
|
99
|
-
react_1.default.createElement(
|
|
100
|
-
|
|
101
|
+
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 1 },
|
|
102
|
+
!isViewingCurrentMonth && (react_1.default.createElement(Button_1.default, { variant: "ghost", size: "sm", onClick: function () {
|
|
103
|
+
setCurrentMonth(function (_prev) { return new Date(today.getFullYear(), today.getMonth(), 1); });
|
|
104
|
+
if (!disableToday) {
|
|
105
|
+
onDaySelect(new Date(today));
|
|
106
|
+
}
|
|
107
|
+
}, "aria-label": "Today", sx: { fontSize: "0.75rem", px: 2 }, isDisabled: disableToday }, "Today")),
|
|
108
|
+
react_1.default.createElement(Button_1.default, { variant: "ghost", size: "sm", onClick: function () { return setCurrentMonth(function (prev) { return new Date(prev.getFullYear(), prev.getMonth() + 1, 1); }); }, "aria-label": "Next month" },
|
|
109
|
+
react_1.default.createElement(lucide_react_1.ChevronRightIcon, { size: 20 })))), renderWeekdays !== null && renderWeekdays !== void 0 ? renderWeekdays : (react_1.default.createElement(react_2.Grid, { templateColumns: "repeat(7, 1fr)", gap: 1, fontWeight: "bold", mb: 2 }, ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map(function (day) { return (react_1.default.createElement(react_2.Box, { textAlign: "center", key: day, fontSize: "sm", color: "gray.600", py: 2 }, day)); }))),
|
|
101
110
|
renderDays()));
|
|
102
111
|
};
|
|
103
112
|
exports.CalendarPanel = CalendarPanel;
|
|
@@ -75,6 +75,8 @@ function CustomDatePicker(props) {
|
|
|
75
75
|
var _m = (0, react_1.useState)(rangeStart), tempRangeStart = _m[0], setTempRangeStart = _m[1];
|
|
76
76
|
var _o = (0, react_1.useState)(rangeEnd), tempRangeEnd = _o[0], setTempRangeEnd = _o[1];
|
|
77
77
|
var popoverRef = (0, react_1.useRef)(null);
|
|
78
|
+
var isViewingCurrentMonth = currentMonth.getFullYear() === today.getFullYear() &&
|
|
79
|
+
currentMonth.getMonth() === today.getMonth();
|
|
78
80
|
var handleOpen = function () {
|
|
79
81
|
if (!isRange && !selectedDate) {
|
|
80
82
|
// setTempDate(new Date());
|
|
@@ -234,8 +236,15 @@ function CustomDatePicker(props) {
|
|
|
234
236
|
var year = new Date().getFullYear() - 50 + i;
|
|
235
237
|
return (react_1.default.createElement("option", { key: year, value: year }, year));
|
|
236
238
|
}))),
|
|
237
|
-
react_1.default.createElement(
|
|
238
|
-
react_1.default.createElement(
|
|
239
|
+
react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 1 },
|
|
240
|
+
!isViewingCurrentMonth && (react_1.default.createElement(Button_1.default, { variant: "ghost", size: "sm", onClick: function () {
|
|
241
|
+
setCurrentMonth(new Date(today.getFullYear(), today.getMonth(), 1));
|
|
242
|
+
if (!disableToday && !isRange) {
|
|
243
|
+
handleDaySelect(new Date(today));
|
|
244
|
+
}
|
|
245
|
+
}, "aria-label": "Today", sx: { fontSize: "0.75rem", px: 2 }, isDisabled: disableToday }, "Today")),
|
|
246
|
+
react_1.default.createElement(Button_1.default, { variant: "ghost", size: "sm", onClick: function () { return setCurrentMonth(function (prev) { return (0, date_fns_1.addMonths)(prev, 1); }); } },
|
|
247
|
+
react_1.default.createElement(lucide_react_1.ChevronRightIcon, null)))),
|
|
239
248
|
react_1.default.createElement(react_2.Grid, { templateColumns: "repeat(7, 1fr)", gap: 1, fontWeight: "bold", mb: 1 }, ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map(function (day) { return (react_1.default.createElement(react_2.Box, { textAlign: "center", key: day }, day)); })),
|
|
240
249
|
renderDays())),
|
|
241
250
|
!isRange && showTime && (react_1.default.createElement(TimePicker_1.default
|
|
@@ -266,10 +266,10 @@ var normalizeTimeBuffer = function (tokenChar, rawBuffer, segmentLength, is12Hou
|
|
|
266
266
|
return { value: buf, completed: buf.length >= segmentLength };
|
|
267
267
|
};
|
|
268
268
|
var SingleDatePicker = function (props) {
|
|
269
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
270
|
-
var id = props.id, name = props.name, label = props.label, isRequired = props.isRequired, isInformation = props.isInformation, informationMessage = props.informationMessage, error = props.error, errorMessage = props.errorMessage, helperText = props.helperText, placeholderText = props.placeholderText,
|
|
269
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
|
|
270
|
+
var id = props.id, name = props.name, label = props.label, isRequired = props.isRequired, isInformation = props.isInformation, informationMessage = props.informationMessage, error = props.error, errorMessage = props.errorMessage, helperText = props.helperText, placeholderText = props.placeholderText, _l = props.dateFormat, dateFormat = _l === void 0 ? "dd/MM/yyyy" : _l, pickerType = props.pickerType, minDate = props.minDate, maxDate = props.maxDate, disableFutureDates = props.disableFutureDates, disablePastDates = props.disablePastDates, _m = props.autoComplete, autoComplete = _m === void 0 ? "off" : _m, disabled = props.disabled, _o = props.width, width = _o === void 0 ? "100%" : _o, _p = props.disableToday, disableToday = _p === void 0 ? false : _p;
|
|
271
271
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
272
|
-
var
|
|
272
|
+
var _q = (0, react_2.useDisclosure)(), isOpen = _q.isOpen, onOpen = _q.onOpen, onClose = _q.onClose;
|
|
273
273
|
var inputRef = (0, react_1.useRef)(null);
|
|
274
274
|
var popoverRef = (0, react_1.useRef)(null);
|
|
275
275
|
var triggerRef = (0, react_1.useRef)(null);
|
|
@@ -327,18 +327,18 @@ var SingleDatePicker = function (props) {
|
|
|
327
327
|
resolvedDateFormat.toLowerCase().includes("mm") ||
|
|
328
328
|
resolvedDateFormat.toLowerCase().includes("ss");
|
|
329
329
|
var selectedDate = ((_a = props.value) !== null && _a !== void 0 ? _a : props.selectedDate);
|
|
330
|
-
var
|
|
330
|
+
var _r = (0, react_1.useState)(selectedDate
|
|
331
331
|
? disableToday && (0, date_fns_1.isSameDay)(selectedDate, today)
|
|
332
332
|
? tomorrow
|
|
333
333
|
: selectedDate
|
|
334
334
|
: disableToday
|
|
335
335
|
? tomorrow
|
|
336
|
-
: today), currentMonth =
|
|
337
|
-
var
|
|
338
|
-
var
|
|
339
|
-
var
|
|
340
|
-
var
|
|
341
|
-
var
|
|
336
|
+
: today), currentMonth = _r[0], setCurrentMonth = _r[1];
|
|
337
|
+
var _s = (0, react_1.useState)(selectedDate !== null && selectedDate !== void 0 ? selectedDate : null), tempDate = _s[0], setTempDate = _s[1];
|
|
338
|
+
var _t = (0, react_1.useState)(""), inputValue = _t[0], setInputValue = _t[1];
|
|
339
|
+
var _u = (0, react_1.useState)(false), isTyping = _u[0], setIsTyping = _u[1];
|
|
340
|
+
var _v = (0, react_1.useState)(false), isMaskActive = _v[0], setIsMaskActive = _v[1];
|
|
341
|
+
var _w = (0, react_1.useState)(0), currentSegmentIndex = _w[0], setCurrentSegmentIndex = _w[1];
|
|
342
342
|
var lastSegmentIndexRef = (0, react_1.useRef)(0);
|
|
343
343
|
var resetCommitGuardAndOpen = function () {
|
|
344
344
|
didCommitRef.current = false;
|
|
@@ -948,11 +948,11 @@ var SingleDatePicker = function (props) {
|
|
|
948
948
|
react_1.default.createElement(react_2.Input, { ref: inputRef, id: id, name: name, placeholder: displayPlaceholder, value: displayValue, onChange: handleInputChange, onKeyDown: handleKeyDownMask, onPaste: handlePasteMask, onBlur: handleInputBlur, onClick: handleInputClickMask, onFocus: handleInputFocusMask, isDisabled: disabled, autoComplete: autoComplete, borderColor: error ? (_c = (_b = theme.colors.semantic) === null || _b === void 0 ? void 0 : _b.error) === null || _c === void 0 ? void 0 : _c[500] : undefined, _focus: {
|
|
949
949
|
borderColor: error ? (_e = (_d = theme.colors.semantic) === null || _d === void 0 ? void 0 : _d.error) === null || _e === void 0 ? void 0 : _e[500] : theme.colors.primary[500],
|
|
950
950
|
boxShadow: error
|
|
951
|
-
? "0 0 0
|
|
952
|
-
: "0 0 0
|
|
951
|
+
? "0 0 0 0.125rem ".concat((_f = theme.colors.boxShadow) === null || _f === void 0 ? void 0 : _f.error)
|
|
952
|
+
: "0 0 0 0.125rem ".concat((_g = theme.colors.boxShadow) === null || _g === void 0 ? void 0 : _g.primary),
|
|
953
953
|
}, _hover: {
|
|
954
954
|
borderColor: error ? (_j = (_h = theme.colors.semantic) === null || _h === void 0 ? void 0 : _h.error) === null || _j === void 0 ? void 0 : _j[500] : undefined,
|
|
955
|
-
}, cursor: "text" }),
|
|
955
|
+
}, cursor: "text", boxShadow: error ? "0 0 0 0.125rem ".concat((_k = theme.colors.boxShadow) === null || _k === void 0 ? void 0 : _k.error) : "" }),
|
|
956
956
|
react_1.default.createElement(react_2.InputRightElement, { pr: 3, pointerEvents: "auto", onClick: function (e) {
|
|
957
957
|
e.stopPropagation();
|
|
958
958
|
if (!isOpen) {
|
|
@@ -69,6 +69,9 @@ var TimeOnlyPicker = function (props) {
|
|
|
69
69
|
// Do not close; user asked only outside-click and OK to close
|
|
70
70
|
};
|
|
71
71
|
var handleOk = function () {
|
|
72
|
+
var commitValue = tempDate !== null && tempDate !== void 0 ? tempDate : new Date(resolvedTempDate.getFullYear(), resolvedTempDate.getMonth(), resolvedTempDate.getDate(), resolvedTempDate.getHours(), resolvedTempDate.getMinutes(), resolvedTempDate.getSeconds(), resolvedTempDate.getMilliseconds());
|
|
73
|
+
setTempDate(commitValue);
|
|
74
|
+
props.onChange(commitValue);
|
|
72
75
|
onClose();
|
|
73
76
|
};
|
|
74
77
|
(0, react_1.useEffect)(function () {
|
|
@@ -111,7 +111,9 @@ var caretFromDigitIndex = function (digitIndex, digitsLen) {
|
|
|
111
111
|
return 3;
|
|
112
112
|
return digitIndex + 1;
|
|
113
113
|
};
|
|
114
|
-
var formatToPlaceholder = function (formatStr) {
|
|
114
|
+
var formatToPlaceholder = function (formatStr) {
|
|
115
|
+
return formatStr.replace(/h{1,2}/gi, "HH").replace(/m{1,2}/gi, "mm").replace(/a{1,2}/gi, "AM");
|
|
116
|
+
};
|
|
115
117
|
var TimePickerInput = function (_a) {
|
|
116
118
|
var value = _a.value, onChange = _a.onChange, dateFormat = _a.dateFormat, _b = _a.disabled, disabled = _b === void 0 ? false : _b, placeholder = _a.placeholder, onFocus = _a.onFocus, onBlur = _a.onBlur;
|
|
117
119
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
@@ -123,6 +125,8 @@ var TimePickerInput = function (_a) {
|
|
|
123
125
|
var _e = (0, react_1.useState)("hour"), activeSegment = _e[0], setActiveSegment = _e[1];
|
|
124
126
|
var is12Hour = (0, react_1.useMemo)(function () { return /h{1,2}/i.test(dateFormat) && !/H{1,2}/.test(dateFormat); }, [dateFormat]);
|
|
125
127
|
var placeholderText = (0, react_1.useMemo)(function () { return placeholder || formatToPlaceholder(dateFormat); }, [placeholder, dateFormat]);
|
|
128
|
+
var ampmRef = (0, react_1.useRef)("AM");
|
|
129
|
+
var _f = (0, react_1.useState)(""), ampm = _f[0], setAmpm = _f[1];
|
|
126
130
|
var setInputValueAndCaret = (0, react_1.useCallback)(function (formatted, caretDigitIndex) {
|
|
127
131
|
requestAnimationFrame(function () {
|
|
128
132
|
var el = inputRef.current;
|
|
@@ -142,7 +146,8 @@ var TimePickerInput = function (_a) {
|
|
|
142
146
|
var nextDigitIndex = Math.max(0, Math.min(desiredDigitIndex, maxDigitIndex));
|
|
143
147
|
setInputValueAndCaret(formatted, nextDigitIndex);
|
|
144
148
|
if (clamped.length === 4) {
|
|
145
|
-
var
|
|
149
|
+
var formattedInput = is12Hour ? "".concat(formatted, " ").concat(ampmRef.current || "AM") : formatted;
|
|
150
|
+
var parsed = (0, date_fns_1.parse)(formattedInput, dateFormat, new Date());
|
|
146
151
|
if ((0, date_fns_1.isValid)(parsed))
|
|
147
152
|
onChange(parsed);
|
|
148
153
|
}
|
|
@@ -282,6 +287,7 @@ var TimePickerInput = function (_a) {
|
|
|
282
287
|
var el = inputRef.current;
|
|
283
288
|
if (!el)
|
|
284
289
|
return;
|
|
290
|
+
el.value = formatDigits(digitsRef.current);
|
|
285
291
|
el.focus();
|
|
286
292
|
el.setSelectionRange(0, Math.min(2, el.value.length));
|
|
287
293
|
});
|
|
@@ -290,8 +296,16 @@ var TimePickerInput = function (_a) {
|
|
|
290
296
|
var handleBlur = (0, react_1.useCallback)(function () {
|
|
291
297
|
setIsFocused(false);
|
|
292
298
|
isFocusedRef.current = false;
|
|
299
|
+
var el = inputRef.current;
|
|
300
|
+
if (el) {
|
|
301
|
+
var formatted = formatDigits(digitsRef.current);
|
|
302
|
+
el.value =
|
|
303
|
+
is12Hour && formatted
|
|
304
|
+
? "".concat(formatted, " ").concat(ampmRef.current || ampm || "AM")
|
|
305
|
+
: formatted;
|
|
306
|
+
}
|
|
293
307
|
onBlur === null || onBlur === void 0 ? void 0 : onBlur();
|
|
294
|
-
}, [onBlur]);
|
|
308
|
+
}, [onBlur, is12Hour, ampm]);
|
|
295
309
|
var handleClick = (0, react_1.useCallback)(function () {
|
|
296
310
|
var _a;
|
|
297
311
|
var el = inputRef.current;
|
|
@@ -330,19 +344,33 @@ var TimePickerInput = function (_a) {
|
|
|
330
344
|
}, [applyDigits]);
|
|
331
345
|
(0, react_1.useEffect)(function () {
|
|
332
346
|
if (value) {
|
|
333
|
-
var
|
|
347
|
+
var formattedValue = (0, date_fns_1.format)(value, dateFormat);
|
|
348
|
+
var newDigits = adjustDigits(formattedValue.replace(/\D/g, ""), is12Hour);
|
|
334
349
|
digitsRef.current = newDigits;
|
|
335
350
|
setDigits(newDigits);
|
|
351
|
+
if (is12Hour) {
|
|
352
|
+
var newAmpm = (0, date_fns_1.format)(value, "a").toUpperCase();
|
|
353
|
+
ampmRef.current = newAmpm;
|
|
354
|
+
setAmpm(newAmpm);
|
|
355
|
+
}
|
|
356
|
+
else {
|
|
357
|
+
ampmRef.current = "";
|
|
358
|
+
setAmpm("");
|
|
359
|
+
}
|
|
336
360
|
if (!isFocusedRef.current) {
|
|
337
361
|
var formatted = formatDigits(newDigits);
|
|
338
362
|
if (inputRef.current) {
|
|
339
|
-
inputRef.current.value = formatted;
|
|
363
|
+
inputRef.current.value = is12Hour && formatted ? "".concat(formatted, " ").concat(ampmRef.current) : formatted;
|
|
340
364
|
}
|
|
341
365
|
}
|
|
342
366
|
}
|
|
343
367
|
else {
|
|
344
368
|
digitsRef.current = "";
|
|
345
369
|
setDigits("");
|
|
370
|
+
if (is12Hour) {
|
|
371
|
+
ampmRef.current = "";
|
|
372
|
+
setAmpm("");
|
|
373
|
+
}
|
|
346
374
|
if (inputRef.current && !isFocusedRef.current) {
|
|
347
375
|
inputRef.current.value = "";
|
|
348
376
|
}
|
|
@@ -351,9 +379,9 @@ var TimePickerInput = function (_a) {
|
|
|
351
379
|
(0, react_1.useEffect)(function () {
|
|
352
380
|
var formatted = formatDigits(digits);
|
|
353
381
|
if (!isFocusedRef.current && inputRef.current) {
|
|
354
|
-
inputRef.current.value = formatted;
|
|
382
|
+
inputRef.current.value = is12Hour && formatted ? "".concat(formatted, " ").concat(ampm) : formatted;
|
|
355
383
|
}
|
|
356
|
-
}, [digits]);
|
|
384
|
+
}, [digits, ampm, is12Hour]);
|
|
357
385
|
return (react_1.default.createElement(react_2.InputGroup, null,
|
|
358
386
|
react_1.default.createElement(react_2.Input, { ref: inputRef, defaultValue: "", onChange: handleInput, onKeyDown: handleKeyDown, onFocus: handleFocus, onBlur: handleBlur, onClick: handleClick, onPaste: handlePaste, placeholder: placeholderText, isDisabled: disabled, autoComplete: "off" }),
|
|
359
387
|
react_1.default.createElement(react_2.InputRightElement, { pointerEvents: "none" },
|