pixelize-design-library 2.2.53 → 2.2.55

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.
@@ -42,25 +42,25 @@ var CalendarPanel = function (_a) {
42
42
  (disablePastDates && isBefore(thisDay, today) && !isSameDay(thisDay, today)) ||
43
43
  (disableFutureDates && isAfter(thisDay, today) && !isSameDay(thisDay, today)) ||
44
44
  (disableToday && isToday);
45
- days.push(react_1.default.createElement(Button_1.default, { key: thisDay.toString(), size: "sm", variant: isStart || isEnd || isSelected ? "solid" : isInRange ? "outline" : "ghost", colorScheme: isStart || isEnd || isInRange || isSelected ? "primary" : "gray", opacity: isInCurrentMonth ? 1 : 0.4, onClick: function () { return !disabled && onDaySelect(new Date(thisDay)); }, isDisabled: disabled, border: isToday ? "0.125rem solid ".concat(theme.colors.primary[500]) : undefined, borderRadius: "full" }, (0, date_fns_1.format)(thisDay, "d")));
45
+ days.push(react_1.default.createElement(Button_1.default, { key: thisDay.toString(), size: "xs", variant: isStart || isEnd || isSelected ? "solid" : isInRange ? "outline" : "ghost", colorScheme: isStart || isEnd || isInRange || isSelected ? "primary" : "gray", opacity: isInCurrentMonth ? 1 : 0.45, onClick: function () { return !disabled && onDaySelect(new Date(thisDay)); }, isDisabled: disabled, border: isToday ? "0.125rem solid ".concat(theme.colors.primary[500]) : undefined, borderRadius: "md" }, (0, date_fns_1.format)(thisDay, "d")));
46
46
  day = (0, date_fns_1.addDays)(day, 1);
47
47
  };
48
48
  for (var i = 0; i < 7; i++) {
49
49
  _loop_1(i);
50
50
  }
51
- rows.push(react_1.default.createElement(react_2.Grid, { key: day.toString(), templateColumns: "repeat(7, 1fr)", gap: 1 }, days));
51
+ rows.push(react_1.default.createElement(react_2.Grid, { key: day.toString(), templateColumns: "repeat(7, 1fr)", gap: 0.5 }, days));
52
52
  }
53
53
  return rows;
54
54
  };
55
55
  return (react_1.default.createElement(react_1.default.Fragment, null,
56
- react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", justifyContent: "space-between", mb: 4 },
57
- 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": "Previous month" },
58
- react_1.default.createElement(lucide_react_1.ChevronLeftIcon, { size: 20 })),
56
+ react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", justifyContent: "space-between", mb: 3 },
57
+ react_1.default.createElement(Button_1.default, { variant: "ghost", size: "xs", onClick: function () { return setCurrentMonth(function (prev) { return new Date(prev.getFullYear(), prev.getMonth() - 1, 1); }); }, "aria-label": "Previous month" },
58
+ react_1.default.createElement(lucide_react_1.ChevronLeftIcon, { size: 18 })),
59
59
  react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 2 },
60
60
  react_1.default.createElement(react_2.Box, { as: "select", value: currentMonth.getMonth(), onChange: function (e) {
61
61
  var newMonth = parseInt(e.target.value, 10);
62
62
  setCurrentMonth(function (prev) { return new Date(prev.getFullYear(), newMonth, 1); });
63
- }, border: "1px solid", borderColor: "gray.300", borderRadius: "md", px: 2, py: 1, fontSize: "sm", fontWeight: "medium", cursor: "pointer", bg: "white", outline: "none", _hover: {
63
+ }, border: "1px solid", borderColor: "gray.300", borderRadius: "md", px: 1.5, py: 0.5, fontSize: "xs", fontWeight: "semibold", cursor: "pointer", bg: "white", outline: "none", _hover: {
64
64
  borderColor: "gray.400",
65
65
  borderWidth: "1px",
66
66
  borderStyle: "solid",
@@ -72,6 +72,8 @@ var CalendarPanel = function (_a) {
72
72
  boxShadow: "0 0 0 1px ".concat(theme.colors.primary[500]),
73
73
  }, style: {
74
74
  border: "1px solid #CBD5E0",
75
+ fontSize: "12px",
76
+ lineHeight: "1.25rem",
75
77
  WebkitAppearance: "menulist",
76
78
  MozAppearance: "menulist",
77
79
  appearance: "menulist",
@@ -79,7 +81,7 @@ var CalendarPanel = function (_a) {
79
81
  react_1.default.createElement(react_2.Box, { as: "select", value: currentMonth.getFullYear(), onChange: function (e) {
80
82
  var newYear = parseInt(e.target.value, 10);
81
83
  setCurrentMonth(function (prev) { return new Date(newYear, prev.getMonth(), 1); });
82
- }, border: "1px solid", borderColor: "gray.300", borderRadius: "md", px: 2, py: 1, fontSize: "sm", fontWeight: "medium", cursor: "pointer", bg: "white", outline: "none", _hover: {
84
+ }, border: "1px solid", borderColor: "gray.300", borderRadius: "md", px: 1.5, py: 0.5, fontSize: "xs", fontWeight: "semibold", cursor: "pointer", bg: "white", outline: "none", _hover: {
83
85
  borderColor: "gray.400",
84
86
  borderWidth: "1px",
85
87
  borderStyle: "solid",
@@ -91,6 +93,8 @@ var CalendarPanel = function (_a) {
91
93
  boxShadow: "0 0 0 1px ".concat(theme.colors.primary[500]),
92
94
  }, style: {
93
95
  border: "1px solid #CBD5E0",
96
+ fontSize: "12px",
97
+ lineHeight: "1.25rem",
94
98
  WebkitAppearance: "menulist",
95
99
  MozAppearance: "menulist",
96
100
  appearance: "menulist",
@@ -99,14 +103,14 @@ var CalendarPanel = function (_a) {
99
103
  return (react_1.default.createElement("option", { key: year, value: year }, year));
100
104
  }))),
101
105
  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 () {
106
+ !isViewingCurrentMonth && (react_1.default.createElement(Button_1.default, { variant: "ghost", size: "xs", onClick: function () {
103
107
  setCurrentMonth(function (_prev) { return new Date(today.getFullYear(), today.getMonth(), 1); });
104
108
  if (!disableToday) {
105
109
  onDaySelect(new Date(today));
106
110
  }
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)); }))),
111
+ }, "aria-label": "Today", sx: { fontSize: "0.7rem", px: 2 }, isDisabled: disableToday }, "Today")),
112
+ react_1.default.createElement(Button_1.default, { variant: "ghost", size: "xs", onClick: function () { return setCurrentMonth(function (prev) { return new Date(prev.getFullYear(), prev.getMonth() + 1, 1); }); }, "aria-label": "Next month" },
113
+ react_1.default.createElement(lucide_react_1.ChevronRightIcon, { size: 18 })))), renderWeekdays !== null && renderWeekdays !== void 0 ? renderWeekdays : (react_1.default.createElement(react_2.Grid, { templateColumns: "repeat(7, 1fr)", gap: 0.5, fontWeight: "semibold", mb: 1 }, ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"].map(function (day) { return (react_1.default.createElement(react_2.Box, { textAlign: "center", key: day, fontSize: "xs", color: "gray.600", py: 1 }, day)); }))),
110
114
  renderDays()));
111
115
  };
112
116
  exports.CalendarPanel = CalendarPanel;
@@ -40,4 +40,5 @@ export type TimePickerProps = {
40
40
  date: Date;
41
41
  onChange: (date: Date) => void;
42
42
  dateFormat: string;
43
+ disabled?: boolean;
43
44
  };
@@ -37,6 +37,7 @@ var HelperText_1 = __importDefault(require("../Common/HelperText"));
37
37
  var ErrorMessage_1 = __importDefault(require("../Common/ErrorMessage"));
38
38
  var CalendarPanel_1 = __importDefault(require("./CalendarPanel"));
39
39
  var useCustomTheme_1 = require("../../Theme/useCustomTheme");
40
+ var TimePicker_1 = __importDefault(require("./TimePicker"));
40
41
  var TimePickerInput_1 = require("./TimePickerInput");
41
42
  // helper to set time on date while preserving date part
42
43
  var setTimeFrom = function (base, time) {
@@ -59,10 +60,24 @@ var RangeDatePicker = function (props) {
59
60
  var _v = (0, react_1.useState)((_d = selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.to) !== null && _d !== void 0 ? _d : null), tempRangeEnd = _v[0], setTempRangeEnd = _v[1];
60
61
  var _w = (0, react_1.useState)(true), selectingStart = _w[0], setSelectingStart = _w[1];
61
62
  var _x = (0, react_1.useState)(""), inputValue = _x[0], setInputValue = _x[1];
62
- var formatHasTime = (0, react_1.useMemo)(function () {
63
- var lower = dateFormat.toLowerCase();
64
- return lower.includes("hh") || lower.includes("mm") || lower.includes("ss");
63
+ var formatHasTime = (0, react_1.useMemo)(function () { return /(h{1,2}|H{1,2})/.test(dateFormat); }, [dateFormat]);
64
+ var formatHasSeconds = (0, react_1.useMemo)(function () { return /s{1,2}/i.test(dateFormat); }, [dateFormat]);
65
+ var shouldUseSelectTimePicker = formatHasTime && !formatHasSeconds;
66
+ var timePickerFormat = (0, react_1.useMemo)(function () {
67
+ var has24Hour = /H{1,2}/.test(dateFormat);
68
+ var has12Hour = !has24Hour && /h{1,2}/.test(dateFormat);
69
+ var hasMeridiem = /a/i.test(dateFormat);
70
+ if (has24Hour) {
71
+ return "HH:mm";
72
+ }
73
+ if (has12Hour) {
74
+ var base = "hh:mm";
75
+ return hasMeridiem ? "".concat(base, " a") : base;
76
+ }
77
+ return "HH:mm";
65
78
  }, [dateFormat]);
79
+ var startTimeBaseDate = (0, react_1.useMemo)(function () { var _a; return (_a = tempRangeStart !== null && tempRangeStart !== void 0 ? tempRangeStart : tempRangeEnd) !== null && _a !== void 0 ? _a : new Date(); }, [tempRangeStart, tempRangeEnd]);
80
+ var endTimeBaseDate = (0, react_1.useMemo)(function () { var _a; return (_a = tempRangeEnd !== null && tempRangeEnd !== void 0 ? tempRangeEnd : tempRangeStart) !== null && _a !== void 0 ? _a : new Date(); }, [tempRangeEnd, tempRangeStart]);
66
81
  (0, react_1.useEffect)(function () {
67
82
  if ((selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.from) && (selectedRange === null || selectedRange === void 0 ? void 0 : selectedRange.to)) {
68
83
  var start = new Date(selectedRange.from);
@@ -176,25 +191,39 @@ var RangeDatePicker = function (props) {
176
191
  react_1.default.createElement(react_2.PopoverContent, { width: "auto", p: 4, ref: popoverRef, boxShadow: "lg" },
177
192
  react_1.default.createElement(react_2.PopoverBody, null,
178
193
  react_1.default.createElement(CalendarPanel_1.default, { currentMonth: currentMonth, setCurrentMonth: function (updater) { return setCurrentMonthState(function (prev) { return updater(prev); }); }, today: today, isRange: true, tempDate: null, tempRangeStart: tempRangeStart, tempRangeEnd: tempRangeEnd, isSameDay: date_fns_1.isSameDay, isBefore: date_fns_1.isBefore, isAfter: date_fns_1.isAfter, minDate: minDate, maxDate: maxDate, disablePastDates: disablePastDates, disableFutureDates: disableFutureDates, disableToday: disableToday, onDaySelect: handleDaySelect }),
179
- formatHasTime && (react_1.default.createElement(react_2.Box, { mt: 4, display: "grid", gridTemplateColumns: "1fr 1fr", gap: 3 },
194
+ formatHasTime && (react_1.default.createElement(react_2.Box, { mt: 3, display: "grid", gridTemplateColumns: "1fr 1fr", gap: 2 },
180
195
  react_1.default.createElement(react_2.Box, null,
181
- react_1.default.createElement(react_2.Box, { fontSize: "sm", color: "gray.600", mb: 1 }, "Start time"),
182
- react_1.default.createElement(TimePickerInput_1.TimePickerInput, { value: tempRangeStart, onChange: function (t) {
196
+ react_1.default.createElement(react_2.Box, { fontSize: "xs", color: "gray.600", mb: 1 }, "Start time"),
197
+ shouldUseSelectTimePicker ? (react_1.default.createElement(TimePicker_1.default, { date: startTimeBaseDate, onChange: function (updated) {
198
+ if (!tempRangeStart) {
199
+ setTempRangeStart(updated);
200
+ return;
201
+ }
202
+ var withStartDate = new Date(tempRangeStart.getFullYear(), tempRangeStart.getMonth(), tempRangeStart.getDate(), updated.getHours(), updated.getMinutes(), 0, 0);
203
+ setTempRangeStart(withStartDate);
204
+ }, dateFormat: dateFormat, disabled: disabled || !tempRangeStart })) : (react_1.default.createElement(TimePickerInput_1.TimePickerInput, { value: tempRangeStart, onChange: function (t) {
183
205
  if (!t) {
184
206
  setTempRangeStart(null);
185
207
  return;
186
208
  }
187
- setTempRangeStart(setTimeFrom(tempRangeStart, t));
188
- }, dateFormat: dateFormat.includes("HH") || dateFormat.includes("hh") ? "HH:mm" : "hh:mm a", disabled: disabled })),
209
+ setTempRangeStart(setTimeFrom(startTimeBaseDate, t));
210
+ }, dateFormat: timePickerFormat, disabled: disabled || !tempRangeStart }))),
189
211
  react_1.default.createElement(react_2.Box, null,
190
- react_1.default.createElement(react_2.Box, { fontSize: "sm", color: "gray.600", mb: 1 }, "End time"),
191
- react_1.default.createElement(TimePickerInput_1.TimePickerInput, { value: tempRangeEnd, onChange: function (t) {
212
+ react_1.default.createElement(react_2.Box, { fontSize: "xs", color: "gray.600", mb: 1 }, "End time"),
213
+ shouldUseSelectTimePicker ? (react_1.default.createElement(TimePicker_1.default, { date: endTimeBaseDate, onChange: function (updated) {
214
+ if (!tempRangeEnd) {
215
+ setTempRangeEnd(updated);
216
+ return;
217
+ }
218
+ var withEndDate = new Date(tempRangeEnd.getFullYear(), tempRangeEnd.getMonth(), tempRangeEnd.getDate(), updated.getHours(), updated.getMinutes(), 0, 0);
219
+ setTempRangeEnd(withEndDate);
220
+ }, dateFormat: dateFormat, disabled: disabled || !tempRangeEnd })) : (react_1.default.createElement(TimePickerInput_1.TimePickerInput, { value: tempRangeEnd, onChange: function (t) {
192
221
  if (!t) {
193
222
  setTempRangeEnd(null);
194
223
  return;
195
224
  }
196
- setTempRangeEnd(setTimeFrom(tempRangeEnd, t));
197
- }, dateFormat: dateFormat.includes("HH") || dateFormat.includes("hh") ? "HH:mm" : "hh:mm a", disabled: disabled })))),
225
+ setTempRangeEnd(setTimeFrom(endTimeBaseDate, t));
226
+ }, dateFormat: timePickerFormat, disabled: disabled || !tempRangeEnd }))))),
198
227
  react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", mt: 4, pt: 4, borderTop: "1px solid", borderColor: "gray.200" },
199
228
  react_1.default.createElement(Button_1.default, { size: "sm", variant: "ghost", onClick: handleClear }, "Clear"),
200
229
  react_1.default.createElement(Button_1.default, { size: "sm", colorScheme: "primary", onClick: requestClose }, "OK"))))),
@@ -966,7 +966,7 @@ var SingleDatePicker = function (props) {
966
966
  react_1.default.createElement(react_2.PopoverContent, { width: "auto", p: 4, ref: popoverRef, boxShadow: "lg" },
967
967
  react_1.default.createElement(react_2.PopoverBody, null,
968
968
  showDate && (react_1.default.createElement(CalendarPanel_1.default, { currentMonth: currentMonth, setCurrentMonth: function (updater) { return setCurrentMonth(function (prev) { return updater(prev); }); }, today: today, isRange: false, tempDate: tempDate, tempRangeStart: null, tempRangeEnd: null, isSameDay: date_fns_1.isSameDay, isBefore: date_fns_1.isBefore, isAfter: date_fns_1.isAfter, minDate: minDate, maxDate: maxDate, disablePastDates: disablePastDates, disableFutureDates: disableFutureDates, disableToday: disableToday, onDaySelect: handleDaySelect })),
969
- showTime && (react_1.default.createElement(react_2.Box, { mt: showDate ? 4 : 0 }, resolvedPickerType === "time" ? (react_1.default.createElement(TimePickerInput_1.TimePickerInput, { value: tempDate, onChange: function (updatedDate) {
969
+ showTime && (react_1.default.createElement(react_2.Box, { mt: showDate ? 3 : 0 }, resolvedPickerType === "time" ? (react_1.default.createElement(TimePickerInput_1.TimePickerInput, { value: tempDate, onChange: function (updatedDate) {
970
970
  setTempDate(updatedDate);
971
971
  setInputValue(updatedDate ? (0, date_fns_1.format)(updatedDate, resolvedDateFormat) : "");
972
972
  setIsTyping(false);
@@ -974,7 +974,7 @@ var SingleDatePicker = function (props) {
974
974
  setTempDate(updatedDate);
975
975
  setInputValue((0, date_fns_1.format)(updatedDate, resolvedDateFormat));
976
976
  setIsTyping(false);
977
- } })))),
977
+ }, disabled: disabled })))),
978
978
  react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", mt: 4, pt: 4, borderTop: "1px solid", borderColor: "gray.200" },
979
979
  react_1.default.createElement(Button_1.default, { size: "sm", variant: "ghost", onClick: function () {
980
980
  setTempDate(null);
@@ -26,7 +26,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  var react_1 = __importStar(require("react"));
27
27
  var react_2 = require("@chakra-ui/react");
28
28
  var TimePicker = function (_a) {
29
- var date = _a.date, onChange = _a.onChange, dateFormat = _a.dateFormat;
29
+ var date = _a.date, onChange = _a.onChange, dateFormat = _a.dateFormat, _b = _a.disabled, disabled = _b === void 0 ? false : _b;
30
30
  var is12HourFormat = /(hh|h).*a/i.test(dateFormat);
31
31
  var deriveDisplayHour = function (rawHour) {
32
32
  if (!is12HourFormat)
@@ -35,9 +35,9 @@ var TimePicker = function (_a) {
35
35
  return mod === 0 ? 12 : mod;
36
36
  };
37
37
  var initialHour = deriveDisplayHour(date.getHours());
38
- var _b = (0, react_1.useState)(initialHour), hour = _b[0], setHour = _b[1];
39
- var _c = (0, react_1.useState)(date.getMinutes()), minute = _c[0], setMinute = _c[1];
40
- var _d = (0, react_1.useState)(is12HourFormat ? (date.getHours() >= 12 ? "PM" : "AM") : ""), ampm = _d[0], setAmpm = _d[1];
38
+ var _c = (0, react_1.useState)(initialHour), hour = _c[0], setHour = _c[1];
39
+ var _d = (0, react_1.useState)(date.getMinutes()), minute = _d[0], setMinute = _d[1];
40
+ var _e = (0, react_1.useState)(is12HourFormat ? (date.getHours() >= 12 ? "PM" : "AM") : ""), ampm = _e[0], setAmpm = _e[1];
41
41
  (0, react_1.useEffect)(function () {
42
42
  var rawHour = date.getHours();
43
43
  setHour(deriveDisplayHour(rawHour));
@@ -75,13 +75,13 @@ var TimePicker = function (_a) {
75
75
  updateTime(hour, minute, newMeridiem);
76
76
  };
77
77
  var displayHour = is12HourFormat ? (hour % 12 === 0 ? 12 : hour % 12) : hour;
78
- return (react_1.default.createElement(react_2.HStack, { spacing: 2, mt: 4 },
79
- react_1.default.createElement(react_2.Select, { value: displayHour, onChange: handleHourChange, w: "4rem" }, Array.from({ length: is12HourFormat ? 12 : 24 }, function (_, i) {
78
+ return (react_1.default.createElement(react_2.HStack, { spacing: 1.5, mt: 3 },
79
+ react_1.default.createElement(react_2.Select, { value: displayHour, onChange: handleHourChange, w: "3.5rem", size: "sm", isDisabled: disabled }, Array.from({ length: is12HourFormat ? 12 : 24 }, function (_, i) {
80
80
  var value = is12HourFormat ? i + 1 : i;
81
81
  return (react_1.default.createElement("option", { key: value, value: value }, value.toString().padStart(2, "0")));
82
82
  })),
83
- react_1.default.createElement(react_2.Select, { value: minute, onChange: handleMinuteChange, w: "4rem" }, Array.from({ length: 60 }, function (_, i) { return (react_1.default.createElement("option", { key: i, value: i }, i.toString().padStart(2, "0"))); })),
84
- is12HourFormat && (react_1.default.createElement(react_2.Select, { value: ampm, onChange: handleAmpmChange, w: "5rem" },
83
+ react_1.default.createElement(react_2.Select, { value: minute, onChange: handleMinuteChange, w: "3.5rem", size: "sm", isDisabled: disabled }, Array.from({ length: 60 }, function (_, i) { return (react_1.default.createElement("option", { key: i, value: i }, i.toString().padStart(2, "0"))); })),
84
+ is12HourFormat && (react_1.default.createElement(react_2.Select, { value: ampm, onChange: handleAmpmChange, w: "3.8rem", size: "sm", isDisabled: disabled },
85
85
  react_1.default.createElement("option", { value: "AM" }, "AM"),
86
86
  react_1.default.createElement("option", { value: "PM" }, "PM")))));
87
87
  };
@@ -126,7 +126,7 @@ var TimePickerInput = function (_a) {
126
126
  var is12Hour = (0, react_1.useMemo)(function () { return /h{1,2}/i.test(dateFormat) && !/H{1,2}/.test(dateFormat); }, [dateFormat]);
127
127
  var placeholderText = (0, react_1.useMemo)(function () { return placeholder || formatToPlaceholder(dateFormat); }, [placeholder, dateFormat]);
128
128
  var ampmRef = (0, react_1.useRef)("AM");
129
- var _f = (0, react_1.useState)(""), ampm = _f[0], setAmpm = _f[1];
129
+ var _f = (0, react_1.useState)("AM"), ampm = _f[0], setAmpm = _f[1];
130
130
  var setInputValueAndCaret = (0, react_1.useCallback)(function (formatted, caretDigitIndex) {
131
131
  requestAnimationFrame(function () {
132
132
  var el = inputRef.current;
@@ -156,6 +156,38 @@ var TimePickerInput = function (_a) {
156
156
  }
157
157
  return { digits: clamped, nextDigitIndex: nextDigitIndex };
158
158
  }, [dateFormat, is12Hour, onChange, setInputValueAndCaret]);
159
+ var updateAmpmValue = (0, react_1.useCallback)(function (next) {
160
+ if (!is12Hour)
161
+ return;
162
+ var upperNext = next.toUpperCase() === "PM" ? "PM" : "AM";
163
+ var formattedDigits = formatDigits(digitsRef.current);
164
+ ampmRef.current = upperNext;
165
+ setAmpm(upperNext);
166
+ if (digitsRef.current.length === 4) {
167
+ var parsed = (0, date_fns_1.parse)("".concat(formattedDigits, " ").concat(upperNext), dateFormat, new Date());
168
+ if ((0, date_fns_1.isValid)(parsed))
169
+ onChange(parsed);
170
+ }
171
+ var el = inputRef.current;
172
+ if (!el)
173
+ return;
174
+ if (isFocusedRef.current) {
175
+ el.value = formattedDigits;
176
+ }
177
+ else {
178
+ el.value = formattedDigits ? "".concat(formattedDigits, " ").concat(upperNext) : "";
179
+ }
180
+ }, [dateFormat, is12Hour, onChange]);
181
+ var toggleAmpm = (0, react_1.useCallback)(function () {
182
+ if (!is12Hour)
183
+ return;
184
+ var current = (ampmRef.current || ampm || "AM").toUpperCase();
185
+ var next = current === "AM" ? "PM" : "AM";
186
+ updateAmpmValue(next);
187
+ }, [ampm, is12Hour, updateAmpmValue]);
188
+ var setAmpmFromKey = (0, react_1.useCallback)(function (next) {
189
+ updateAmpmValue(next);
190
+ }, [updateAmpmValue]);
159
191
  var handleDigitInput = (0, react_1.useCallback)(function (digit) {
160
192
  var _a, _b;
161
193
  var el = inputRef.current;
@@ -274,11 +306,21 @@ var TimePickerInput = function (_a) {
274
306
  handleArrow("right");
275
307
  return;
276
308
  }
309
+ if (is12Hour && (key === "ArrowUp" || key === "ArrowDown")) {
310
+ e.preventDefault();
311
+ toggleAmpm();
312
+ return;
313
+ }
314
+ if (is12Hour && (key.toLowerCase() === "a" || key.toLowerCase() === "p")) {
315
+ e.preventDefault();
316
+ setAmpmFromKey(key.toLowerCase() === "a" ? "AM" : "PM");
317
+ return;
318
+ }
277
319
  if (key === "Tab" || key === "Shift" || key === "Enter" || key === "Escape") {
278
320
  return;
279
321
  }
280
322
  e.preventDefault();
281
- }, [disabled, handleDigitInput, handleBackspace, handleDelete, handleArrow]);
323
+ }, [disabled, handleDigitInput, handleBackspace, handleDelete, handleArrow, is12Hour, toggleAmpm, setAmpmFromKey]);
282
324
  var handleFocus = (0, react_1.useCallback)(function () {
283
325
  setIsFocused(true);
284
326
  isFocusedRef.current = true;
package/dist/index.d.ts CHANGED
@@ -9,7 +9,6 @@ import ButtonGroupIcon from "./Components/ButtonGroupIcon/ButtonGroupIcon";
9
9
  import Card from "./Components/Card/Card";
10
10
  import Checkbox from "./Components/Checkbox/Checkbox";
11
11
  import ContactForm from "./Components/ContactForm/ContactForm";
12
- import DatePicker from "./Components/DatePicker/DatePicker";
13
12
  import Drawer, { DrawerHeader, DrawerBody, DrawerFooter } from "./Components/Drawer/Drawer";
14
13
  import Dropdown from "./Components/Dropdown/DropDown";
15
14
  import Editor from "./Components/Editor/Editor";
@@ -59,6 +58,6 @@ import { InputSwitch } from "./Components/Input/Switch/InputSwitch";
59
58
  import PaymentCard from "./Components/Card/PaymentCard/PaymentCard";
60
59
  import ApexLineChart from "./Components/Apexcharts/ApexLineChart/ApexLineChart";
61
60
  import Notification from "./Components/Notification/Notification";
62
- import ThemeDatePicker from "./Components/DatePicker/ThemeDatePicker";
63
- export { Accordian, AlertDialog, ApexBarChart, ApexPieChart, ApexPolarChart, ApexLineChart, Breadcrumbs, Button, ButtonGroupIcon, Card, Checkbox, ContactForm, DatePicker, ThemeDatePicker, Drawer, DrawerHeader, DrawerBody, DrawerFooter, Dropdown, Editor, FileUpload, FileUploader, FormWrapper, Header, HeaderActions, InputTextArea, InputSwitch, KanbanBoard, Loading, Modal, ModalHeader, ModalBody, ModalFooter, NavigationBar, Notification, NoteTextArea, MultiSelect, NumberInput, PaymentCard, PhoneNumberInput, PinInput, ProductCard, ProductDetails, ProfileCard, ProfileCardHeader, ProfileCardBody, ProfileCardFooter, ProfilePhotoViewer, ProgressBar, RadioButton, RadioButtonGroup, Reorder, Search, Select, SearchSelect, SelectSearch, SideBar, Slider, Skeletons, Switch, Table, TableToggle, Tag, TextInput, Timeline, Toaster, ToolTip, useToaster, VerifyEmailOtp, useCustomTheme, ThemesList, debounce, };
61
+ import DatePicker from "./Components/DatePicker/ThemeDatePicker";
62
+ export { Accordian, AlertDialog, ApexBarChart, ApexPieChart, ApexPolarChart, ApexLineChart, Breadcrumbs, Button, ButtonGroupIcon, Card, Checkbox, ContactForm, DatePicker, Drawer, DrawerHeader, DrawerBody, DrawerFooter, Dropdown, Editor, FileUpload, FileUploader, FormWrapper, Header, HeaderActions, InputTextArea, InputSwitch, KanbanBoard, Loading, Modal, ModalHeader, ModalBody, ModalFooter, NavigationBar, Notification, NoteTextArea, MultiSelect, NumberInput, PaymentCard, PhoneNumberInput, PinInput, ProductCard, ProductDetails, ProfileCard, ProfileCardHeader, ProfileCardBody, ProfileCardFooter, ProfilePhotoViewer, ProgressBar, RadioButton, RadioButtonGroup, Reorder, Search, Select, SearchSelect, SelectSearch, SideBar, Slider, Skeletons, Switch, Table, TableToggle, Tag, TextInput, Timeline, Toaster, ToolTip, useToaster, VerifyEmailOtp, useCustomTheme, ThemesList, debounce, };
64
63
  export default withTheme;
package/dist/index.js CHANGED
@@ -27,8 +27,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
27
27
  return (mod && mod.__esModule) ? mod : { "default": mod };
28
28
  };
29
29
  Object.defineProperty(exports, "__esModule", { value: true });
30
- exports.RadioButton = exports.ProgressBar = exports.ProfilePhotoViewer = exports.ProfileCardFooter = exports.ProfileCardBody = exports.ProfileCardHeader = exports.ProfileCard = exports.ProductDetails = exports.ProductCard = exports.PinInput = exports.PhoneNumberInput = exports.PaymentCard = exports.NumberInput = exports.MultiSelect = exports.NoteTextArea = exports.Notification = exports.NavigationBar = exports.ModalFooter = exports.ModalBody = exports.ModalHeader = exports.Modal = exports.Loading = exports.KanbanBoard = exports.InputSwitch = exports.InputTextArea = exports.HeaderActions = exports.Header = exports.FormWrapper = exports.FileUploader = exports.FileUpload = exports.Editor = exports.Dropdown = exports.DrawerFooter = exports.DrawerBody = exports.DrawerHeader = exports.Drawer = exports.ThemeDatePicker = exports.DatePicker = exports.ContactForm = exports.Checkbox = exports.Card = exports.ButtonGroupIcon = exports.Button = exports.Breadcrumbs = exports.ApexLineChart = exports.ApexPolarChart = exports.ApexPieChart = exports.ApexBarChart = exports.AlertDialog = exports.Accordian = void 0;
31
- exports.debounce = exports.ThemesList = exports.useCustomTheme = exports.VerifyEmailOtp = exports.useToaster = exports.ToolTip = exports.Toaster = exports.Timeline = exports.TextInput = exports.Tag = exports.TableToggle = exports.Table = exports.Switch = exports.Skeletons = exports.Slider = exports.SideBar = exports.SelectSearch = exports.SearchSelect = exports.Select = exports.Search = exports.Reorder = exports.RadioButtonGroup = void 0;
30
+ exports.RadioButtonGroup = exports.RadioButton = exports.ProgressBar = exports.ProfilePhotoViewer = exports.ProfileCardFooter = exports.ProfileCardBody = exports.ProfileCardHeader = exports.ProfileCard = exports.ProductDetails = exports.ProductCard = exports.PinInput = exports.PhoneNumberInput = exports.PaymentCard = exports.NumberInput = exports.MultiSelect = exports.NoteTextArea = exports.Notification = exports.NavigationBar = exports.ModalFooter = exports.ModalBody = exports.ModalHeader = exports.Modal = exports.Loading = exports.KanbanBoard = exports.InputSwitch = exports.InputTextArea = exports.HeaderActions = exports.Header = exports.FormWrapper = exports.FileUploader = exports.FileUpload = exports.Editor = exports.Dropdown = exports.DrawerFooter = exports.DrawerBody = exports.DrawerHeader = exports.Drawer = exports.DatePicker = exports.ContactForm = exports.Checkbox = exports.Card = exports.ButtonGroupIcon = exports.Button = exports.Breadcrumbs = exports.ApexLineChart = exports.ApexPolarChart = exports.ApexPieChart = exports.ApexBarChart = exports.AlertDialog = exports.Accordian = void 0;
31
+ exports.debounce = exports.ThemesList = exports.useCustomTheme = exports.VerifyEmailOtp = exports.useToaster = exports.ToolTip = exports.Toaster = exports.Timeline = exports.TextInput = exports.Tag = exports.TableToggle = exports.Table = exports.Switch = exports.Skeletons = exports.Slider = exports.SideBar = exports.SelectSearch = exports.SearchSelect = exports.Select = exports.Search = exports.Reorder = void 0;
32
32
  var Accordion_1 = __importDefault(require("./Components/Accordion/Accordion"));
33
33
  exports.Accordian = Accordion_1.default;
34
34
  var AlertDialog_1 = __importDefault(require("./Components/AlertDialog/AlertDialog"));
@@ -51,8 +51,7 @@ var Checkbox_1 = __importDefault(require("./Components/Checkbox/Checkbox"));
51
51
  exports.Checkbox = Checkbox_1.default;
52
52
  var ContactForm_1 = __importDefault(require("./Components/ContactForm/ContactForm"));
53
53
  exports.ContactForm = ContactForm_1.default;
54
- var DatePicker_1 = __importDefault(require("./Components/DatePicker/DatePicker"));
55
- exports.DatePicker = DatePicker_1.default;
54
+ // import DatePicker from "./Components/DatePicker/DatePicker";
56
55
  var Drawer_1 = __importStar(require("./Components/Drawer/Drawer"));
57
56
  exports.Drawer = Drawer_1.default;
58
57
  Object.defineProperty(exports, "DrawerHeader", { enumerable: true, get: function () { return Drawer_1.DrawerHeader; } });
@@ -162,5 +161,5 @@ exports.ApexLineChart = ApexLineChart_1.default;
162
161
  var Notification_1 = __importDefault(require("./Components/Notification/Notification"));
163
162
  exports.Notification = Notification_1.default;
164
163
  var ThemeDatePicker_1 = __importDefault(require("./Components/DatePicker/ThemeDatePicker"));
165
- exports.ThemeDatePicker = ThemeDatePicker_1.default;
164
+ exports.DatePicker = ThemeDatePicker_1.default;
166
165
  exports.default = withTheme_1.default;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelize-design-library",
3
- "version": "2.2.53",
3
+ "version": "2.2.55",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",