pixelize-design-library 2.2.52 → 2.2.54

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 (38) hide show
  1. package/dist/Assets/defaultLogo.tsx +31 -0
  2. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.stories.d.ts +1 -0
  3. package/dist/Components/Apexcharts/ApexBarChart/ApexBarChart.stories.js +6 -0
  4. package/dist/Components/Apexcharts/ApexDonutChart/ApexDonutChart.d.ts +4 -0
  5. package/dist/Components/Apexcharts/ApexDonutChart/ApexDonutChart.js +58 -0
  6. package/dist/Components/Apexcharts/ApexDonutChart/ApexDonutChartProps.d.ts +21 -0
  7. package/dist/Components/Apexcharts/ApexDonutChart/ApexDonutChartProps.js +2 -0
  8. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.stories.d.ts +1 -0
  9. package/dist/Components/Apexcharts/ApexPieChart/ApexPieChart.stories.js +6 -0
  10. package/dist/Components/DatePicker/CalendarPanel.js +22 -9
  11. package/dist/Components/DatePicker/DatePicker.js +11 -2
  12. package/dist/Components/DatePicker/DatePickerProps.d.ts +1 -0
  13. package/dist/Components/DatePicker/RangeDatePicker.js +41 -12
  14. package/dist/Components/DatePicker/SingleDatePicker.js +15 -15
  15. package/dist/Components/DatePicker/TimeOnlyPicker.js +3 -0
  16. package/dist/Components/DatePicker/TimePicker.js +8 -8
  17. package/dist/Components/DatePicker/TimePickerInput.js +78 -8
  18. package/dist/Components/InputTextArea/InputTextArea.stories.d.ts +1 -0
  19. package/dist/Components/InputTextArea/InputTextArea.stories.js +7 -0
  20. package/dist/Components/KaTable/CustomHeader.d.ts +14 -0
  21. package/dist/Components/KaTable/CustomHeader.js +69 -0
  22. package/dist/Components/KaTable/KaTable.d.ts +13 -0
  23. package/dist/Components/KaTable/KaTable.js +111 -0
  24. package/dist/Components/KaTable/KaTableProps.d.ts +23 -0
  25. package/dist/Components/KaTable/KaTableProps.js +2 -0
  26. package/dist/Components/KaTable/SelectionCell.d.ts +8 -0
  27. package/dist/Components/KaTable/SelectionCell.js +38 -0
  28. package/dist/Components/KaTable/SelectionHeader.d.ts +3 -0
  29. package/dist/Components/KaTable/SelectionHeader.js +56 -0
  30. package/dist/Components/KaTable/ka-table.css +27 -0
  31. package/dist/Components/KaTable/useMergedChildComponents.d.ts +14 -0
  32. package/dist/Components/KaTable/useMergedChildComponents.js +224 -0
  33. package/dist/Components/NumberInput/NumberInput.stories.d.ts +1 -0
  34. package/dist/Components/NumberInput/NumberInput.stories.js +5 -0
  35. package/dist/Components/Table/Table.css +16 -0
  36. package/dist/Theme/Default/fonts.d.ts +35 -0
  37. package/dist/Theme/Default/fonts.js +37 -0
  38. package/package.json +1 -1
@@ -0,0 +1,31 @@
1
+ import React from 'react';
2
+ import { useCustomTheme } from "../Theme/useCustomTheme";
3
+
4
+ const DefaultLogo = () => {
5
+ const theme = useCustomTheme();
6
+ return (
7
+ <svg
8
+ width="12.09"
9
+ height="15.95"
10
+ viewBox="0 0 31 29"
11
+ fill="none"
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ >
14
+ <path
15
+ d="M30.4999 6.26137V7.81058H15.9761H14.8787V22.8508V28.8862H12.5226C9.6824 28.8862 7.32632 26.4656 7.06812 23.3995C7.06812 23.2381 7.06812 23.0444 7.06812 22.8508V18.3323C7.06812 18.2677 7.06812 18.2032 7.06812 18.1063V15.5889V6.2291C7.06812 2.80793 9.84378 -5.72205e-06 13.2972 -5.72205e-06H24.8517C28.0147 0.355021 30.4676 3.00158 30.4676 6.2291L30.4999 6.26137Z"
16
+ fill={theme.colors.black}
17
+ />
18
+ <path
19
+ d="M7.10053 23.3672H7.03598C5.16402 23.2381 3.48571 22.4635 2.25926 21.3338C0.871428 20.0428 0 18.2677 0 16.3312V15.6211H7.06825V18.1386C7.06825 18.2032 7.06825 18.2677 7.06825 18.3645V22.883C7.06825 23.0767 7.06825 23.2381 7.06825 23.4317L7.10053 23.3672Z"
20
+ fill={theme.colors.black}
21
+ />
22
+ <path
23
+ d="M30.4678 12.0063V15.6211V17.1703C30.4678 20.6238 26.272 23.3994 21.0757 23.3994H14.8789V22.8508V15.6211H22.6572V7.81056C22.6895 7.81056 30.5001 7.81056 30.5001 7.81056V11.5868C30.5001 11.7159 30.5001 11.8772 30.5001 12.0063H30.4678Z"
24
+ fill={theme.colors.black}
25
+ />
26
+ </svg>
27
+
28
+ )
29
+ };
30
+
31
+ export default DefaultLogo;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // import React from 'react';
3
+ // import { StoryFn, Meta } from '@storybook/react';
4
+ // import ApexBarChart from './ApexBarChart';
5
+ // import { ApexBarChartProps } from './ApexBarChartProps';
6
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { ApexDonutChartProps } from "./ApexDonutChartProps";
3
+ declare const ApexDonutChart: ({ data, labels, title, titlePosition, height, width, donutColors, chartColor, titleStyle, legendStyle, }: ApexDonutChartProps) => React.JSX.Element;
4
+ export default ApexDonutChart;
@@ -0,0 +1,58 @@
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 __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ var react_1 = __importDefault(require("react"));
18
+ var react_apexcharts_1 = __importDefault(require("react-apexcharts"));
19
+ var ApexDonutChart = function (_a) {
20
+ var _b;
21
+ var data = _a.data, labels = _a.labels, title = _a.title, _c = _a.titlePosition, titlePosition = _c === void 0 ? "center" : _c, _d = _a.height, height = _d === void 0 ? 400 : _d, _e = _a.width, width = _e === void 0 ? 500 : _e, donutColors = _a.donutColors, chartColor = _a.chartColor, _f = _a.titleStyle, titleStyle = _f === void 0 ? {
22
+ color: "#3182ce",
23
+ fontSize: "16px",
24
+ fontWeight: 600,
25
+ fontFamily: "Arial",
26
+ } : _f, _g = _a.legendStyle, legendStyle = _g === void 0 ? {
27
+ colors: "#000",
28
+ position: "bottom",
29
+ useSeriesColors: false,
30
+ } : _g;
31
+ var options = {
32
+ chart: {
33
+ type: "donut",
34
+ },
35
+ labels: labels,
36
+ colors: (_b = chartColor !== null && chartColor !== void 0 ? chartColor : donutColors) !== null && _b !== void 0 ? _b : ["#3182ce", "#e53e3e", "#38a169", "#dd6b20"],
37
+ legend: {
38
+ position: legendStyle.position,
39
+ labels: {
40
+ colors: legendStyle.colors,
41
+ useSeriesColors: legendStyle.useSeriesColors,
42
+ },
43
+ },
44
+ title: {
45
+ text: title,
46
+ align: titlePosition,
47
+ style: __assign(__assign({}, titleStyle), { fontSize: (titleStyle === null || titleStyle === void 0 ? void 0 : titleStyle.fontSize)
48
+ ? String(titleStyle.fontSize) // ✅ ensures string if number passed
49
+ : undefined }),
50
+ },
51
+ dataLabels: {
52
+ enabled: true,
53
+ },
54
+ };
55
+ return (react_1.default.createElement("div", null,
56
+ react_1.default.createElement(react_apexcharts_1.default, { options: options, series: data, type: "donut", height: height, width: width })));
57
+ };
58
+ exports.default = ApexDonutChart;
@@ -0,0 +1,21 @@
1
+ export type ApexDonutChartProps = {
2
+ data: number[];
3
+ labels: string[];
4
+ title?: string;
5
+ titlePosition?: "left" | "center" | "right";
6
+ height?: number;
7
+ width?: number;
8
+ donutColors?: string[];
9
+ chartColor?: string[];
10
+ titleStyle?: {
11
+ color?: string;
12
+ fontSize?: string | number;
13
+ fontWeight?: number | string;
14
+ fontFamily?: string;
15
+ };
16
+ legendStyle?: {
17
+ colors?: string | string[];
18
+ useSeriesColors?: boolean;
19
+ position?: "top" | "right" | "bottom" | "left";
20
+ };
21
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // import React from 'react';
3
+ // import { StoryFn, Meta } from '@storybook/react';
4
+ // import ApexPieChart from './ApexPieChart';
5
+ // import { ApexPieChartProps } from './ApexPieChartProps';
6
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -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);
@@ -40,25 +42,25 @@ var CalendarPanel = function (_a) {
40
42
  (disablePastDates && isBefore(thisDay, today) && !isSameDay(thisDay, today)) ||
41
43
  (disableFutureDates && isAfter(thisDay, today) && !isSameDay(thisDay, today)) ||
42
44
  (disableToday && isToday);
43
- 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")));
44
46
  day = (0, date_fns_1.addDays)(day, 1);
45
47
  };
46
48
  for (var i = 0; i < 7; i++) {
47
49
  _loop_1(i);
48
50
  }
49
- 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));
50
52
  }
51
53
  return rows;
52
54
  };
53
55
  return (react_1.default.createElement(react_1.default.Fragment, null,
54
- react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", justifyContent: "space-between", mb: 4 },
55
- 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" },
56
- 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 })),
57
59
  react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 2 },
58
60
  react_1.default.createElement(react_2.Box, { as: "select", value: currentMonth.getMonth(), onChange: function (e) {
59
61
  var newMonth = parseInt(e.target.value, 10);
60
62
  setCurrentMonth(function (prev) { return new Date(prev.getFullYear(), newMonth, 1); });
61
- }, 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: {
62
64
  borderColor: "gray.400",
63
65
  borderWidth: "1px",
64
66
  borderStyle: "solid",
@@ -70,6 +72,8 @@ var CalendarPanel = function (_a) {
70
72
  boxShadow: "0 0 0 1px ".concat(theme.colors.primary[500]),
71
73
  }, style: {
72
74
  border: "1px solid #CBD5E0",
75
+ fontSize: "12px",
76
+ lineHeight: "1.25rem",
73
77
  WebkitAppearance: "menulist",
74
78
  MozAppearance: "menulist",
75
79
  appearance: "menulist",
@@ -77,7 +81,7 @@ var CalendarPanel = function (_a) {
77
81
  react_1.default.createElement(react_2.Box, { as: "select", value: currentMonth.getFullYear(), onChange: function (e) {
78
82
  var newYear = parseInt(e.target.value, 10);
79
83
  setCurrentMonth(function (prev) { return new Date(newYear, prev.getMonth(), 1); });
80
- }, 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: {
81
85
  borderColor: "gray.400",
82
86
  borderWidth: "1px",
83
87
  borderStyle: "solid",
@@ -89,6 +93,8 @@ var CalendarPanel = function (_a) {
89
93
  boxShadow: "0 0 0 1px ".concat(theme.colors.primary[500]),
90
94
  }, style: {
91
95
  border: "1px solid #CBD5E0",
96
+ fontSize: "12px",
97
+ lineHeight: "1.25rem",
92
98
  WebkitAppearance: "menulist",
93
99
  MozAppearance: "menulist",
94
100
  appearance: "menulist",
@@ -96,8 +102,15 @@ var CalendarPanel = function (_a) {
96
102
  var year = new Date().getFullYear() - 50 + i;
97
103
  return (react_1.default.createElement("option", { key: year, value: year }, year));
98
104
  }))),
99
- 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" },
100
- 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)); }))),
105
+ react_1.default.createElement(react_2.Box, { display: "flex", alignItems: "center", gap: 1 },
106
+ !isViewingCurrentMonth && (react_1.default.createElement(Button_1.default, { variant: "ghost", size: "xs", onClick: function () {
107
+ setCurrentMonth(function (_prev) { return new Date(today.getFullYear(), today.getMonth(), 1); });
108
+ if (!disableToday) {
109
+ onDaySelect(new Date(today));
110
+ }
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)); }))),
101
114
  renderDays()));
102
115
  };
103
116
  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(Button_1.default, { variant: "ghost", size: "sm", onClick: function () { return setCurrentMonth(function (prev) { return (0, date_fns_1.addMonths)(prev, 1); }); } },
238
- react_1.default.createElement(lucide_react_1.ChevronRightIcon, null))),
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
@@ -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"))))),
@@ -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, _k = props.dateFormat, dateFormat = _k === void 0 ? "dd/MM/yyyy" : _k, pickerType = props.pickerType, minDate = props.minDate, maxDate = props.maxDate, disableFutureDates = props.disableFutureDates, disablePastDates = props.disablePastDates, _l = props.autoComplete, autoComplete = _l === void 0 ? "off" : _l, disabled = props.disabled, _m = props.width, width = _m === void 0 ? "100%" : _m, _o = props.disableToday, disableToday = _o === void 0 ? false : _o;
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 _p = (0, react_2.useDisclosure)(), isOpen = _p.isOpen, onOpen = _p.onOpen, onClose = _p.onClose;
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 _q = (0, react_1.useState)(selectedDate
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 = _q[0], setCurrentMonth = _q[1];
337
- var _r = (0, react_1.useState)(selectedDate !== null && selectedDate !== void 0 ? selectedDate : null), tempDate = _r[0], setTempDate = _r[1];
338
- var _s = (0, react_1.useState)(""), inputValue = _s[0], setInputValue = _s[1];
339
- var _t = (0, react_1.useState)(false), isTyping = _t[0], setIsTyping = _t[1];
340
- var _u = (0, react_1.useState)(false), isMaskActive = _u[0], setIsMaskActive = _u[1];
341
- var _v = (0, react_1.useState)(0), currentSegmentIndex = _v[0], setCurrentSegmentIndex = _v[1];
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 1px ".concat((_g = (_f = theme.colors.semantic) === null || _f === void 0 ? void 0 : _f.error) === null || _g === void 0 ? void 0 : _g[500])
952
- : "0 0 0 1px ".concat(theme.colors.primary[500]),
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) {
@@ -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);
@@ -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 () {
@@ -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.5rem", 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
  };