pixelize-design-library 2.0.5 → 2.0.6
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.
|
@@ -46,30 +46,27 @@ var inferPickerTypeFromFormat = function (formatStr) {
|
|
|
46
46
|
return "date";
|
|
47
47
|
};
|
|
48
48
|
function CustomDatePicker(props) {
|
|
49
|
-
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, _a = props.placeholderText, placeholderText = _a === void 0 ? "Select a date" : _a, _b = props.dateFormat, dateFormat = _b === void 0 ? "dd/MM/yyyy" : _b, pickerType = props.pickerType, minDate = props.minDate, maxDate = props.maxDate, disableFutureDates = props.disableFutureDates, disablePastDates = props.disablePastDates, isRange = props.isRange,
|
|
49
|
+
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, _a = props.placeholderText, placeholderText = _a === void 0 ? "Select a date" : _a, _b = props.dateFormat, dateFormat = _b === void 0 ? "dd/MM/yyyy" : _b, pickerType = props.pickerType, minDate = props.minDate, maxDate = props.maxDate, disableFutureDates = props.disableFutureDates, disablePastDates = props.disablePastDates, isRange = props.isRange, _c = props.autoComplete, autoComplete = _c === void 0 ? "off" : _c, disabled = props.disabled, _d = props.width, width = _d === void 0 ? "100%" : _d;
|
|
50
50
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
51
|
-
var
|
|
51
|
+
var _e = (0, react_2.useDisclosure)(), isOpen = _e.isOpen, onOpen = _e.onOpen, onClose = _e.onClose;
|
|
52
52
|
var resolvedPickerType = pickerType !== null && pickerType !== void 0 ? pickerType : inferPickerTypeFromFormat(dateFormat);
|
|
53
53
|
var inputRef = (0, react_1.useRef)(null);
|
|
54
54
|
var today = new Date();
|
|
55
55
|
var showDate = resolvedPickerType === "date" || resolvedPickerType === "datetime";
|
|
56
56
|
var showTime = resolvedPickerType === "time" || resolvedPickerType === "datetime";
|
|
57
57
|
var selectedDate = !isRange ? props.selectedDate : null;
|
|
58
|
-
var
|
|
59
|
-
var
|
|
60
|
-
var
|
|
61
|
-
var
|
|
62
|
-
var
|
|
63
|
-
var
|
|
64
|
-
var
|
|
58
|
+
var _f = (0, react_1.useState)(isRange ? new Date() : selectedDate !== null && selectedDate !== void 0 ? selectedDate : new Date()), currentMonth = _f[0], setCurrentMonth = _f[1];
|
|
59
|
+
var _g = (0, react_1.useState)(null), rangeStart = _g[0], setRangeStart = _g[1];
|
|
60
|
+
var _h = (0, react_1.useState)(null), rangeEnd = _h[0], setRangeEnd = _h[1];
|
|
61
|
+
var _j = (0, react_1.useState)(true), selectingStart = _j[0], setSelectingStart = _j[1];
|
|
62
|
+
var _k = (0, react_1.useState)(selectedDate !== null && selectedDate !== void 0 ? selectedDate : null), tempDate = _k[0], setTempDate = _k[1];
|
|
63
|
+
var _l = (0, react_1.useState)(rangeStart), tempRangeStart = _l[0], setTempRangeStart = _l[1];
|
|
64
|
+
var _m = (0, react_1.useState)(rangeEnd), tempRangeEnd = _m[0], setTempRangeEnd = _m[1];
|
|
65
65
|
(0, react_1.useEffect)(function () {
|
|
66
|
-
if (!isRange) {
|
|
67
|
-
setTempDate(
|
|
66
|
+
if (!isRange && selectedDate instanceof Date) {
|
|
67
|
+
setTempDate(new Date(selectedDate)); // clone with full time
|
|
68
68
|
}
|
|
69
69
|
}, [selectedDate, isRange]);
|
|
70
|
-
(0, react_1.useEffect)(function () {
|
|
71
|
-
setTempDate(selectedDate !== null && selectedDate !== void 0 ? selectedDate : null);
|
|
72
|
-
}, [selectedDate]);
|
|
73
70
|
var handleDaySelect = function (day) {
|
|
74
71
|
var updated = new Date(day);
|
|
75
72
|
if (isRange) {
|
|
@@ -87,7 +84,12 @@ function CustomDatePicker(props) {
|
|
|
87
84
|
}
|
|
88
85
|
}
|
|
89
86
|
else {
|
|
90
|
-
setTempDate(
|
|
87
|
+
setTempDate(function (prev) {
|
|
88
|
+
if (!prev)
|
|
89
|
+
return updated;
|
|
90
|
+
var newDateWithTime = new Date(updated.getFullYear(), updated.getMonth(), updated.getDate(), prev.getHours(), prev.getMinutes(), prev.getSeconds());
|
|
91
|
+
return newDateWithTime;
|
|
92
|
+
});
|
|
91
93
|
}
|
|
92
94
|
};
|
|
93
95
|
var renderDays = function () {
|
|
@@ -173,17 +175,21 @@ function CustomDatePicker(props) {
|
|
|
173
175
|
react_1.default.createElement(lucide_react_1.ChevronRightIcon, null))),
|
|
174
176
|
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)); })),
|
|
175
177
|
renderDays())),
|
|
176
|
-
!isRange && showTime && tempDate && (react_1.default.createElement(TimePicker_1.default, { date: tempDate, onChange:
|
|
178
|
+
!isRange && showTime && tempDate && (react_1.default.createElement(TimePicker_1.default, { date: tempDate, dateFormat: dateFormat, onChange: function (updatedDate) {
|
|
179
|
+
setTempDate(updatedDate);
|
|
180
|
+
props.onChange(updatedDate);
|
|
181
|
+
} })),
|
|
177
182
|
react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", mt: 3 },
|
|
178
183
|
react_1.default.createElement(Button_1.default, { size: "sm", variant: "ghost", onClick: function () {
|
|
179
|
-
|
|
184
|
+
var now = new Date();
|
|
185
|
+
setTempDate(now);
|
|
180
186
|
setTempRangeStart(null);
|
|
181
187
|
setTempRangeEnd(null);
|
|
182
188
|
setRangeStart(null);
|
|
183
189
|
setRangeEnd(null);
|
|
184
190
|
setSelectingStart(true);
|
|
185
191
|
props.onChange(null);
|
|
186
|
-
|
|
192
|
+
onOpen();
|
|
187
193
|
} }, "Clear"),
|
|
188
194
|
react_1.default.createElement(Button_1.default, { size: "sm", colorScheme: "primary", onClick: function () {
|
|
189
195
|
if (isRange && tempRangeStart && tempRangeEnd) {
|
|
@@ -22,7 +22,7 @@ export interface BaseDatePickerProps {
|
|
|
22
22
|
}
|
|
23
23
|
export interface SingleDatePickerProps extends BaseDatePickerProps {
|
|
24
24
|
isRange?: false;
|
|
25
|
-
selectedDate
|
|
25
|
+
selectedDate?: Date | null;
|
|
26
26
|
onChange: (date: Date | null) => void;
|
|
27
27
|
}
|
|
28
28
|
export interface RangeDatePickerProps extends BaseDatePickerProps {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
import React from
|
|
2
|
-
|
|
1
|
+
import React from "react";
|
|
2
|
+
interface TimePickerProps {
|
|
3
3
|
date: Date;
|
|
4
4
|
onChange: (date: Date) => void;
|
|
5
|
-
|
|
5
|
+
dateFormat: string;
|
|
6
|
+
}
|
|
7
|
+
declare const TimePicker: React.FC<TimePickerProps>;
|
|
6
8
|
export default TimePicker;
|
|
@@ -1,16 +1,88 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var
|
|
3
|
-
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
4
24
|
};
|
|
5
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
var react_1 =
|
|
26
|
+
var react_1 = __importStar(require("react"));
|
|
27
|
+
var padZero = function (num) { return (num < 10 ? "0".concat(num) : "".concat(num)); };
|
|
7
28
|
var TimePicker = function (_a) {
|
|
8
|
-
var date = _a.date, onChange = _a.onChange;
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
29
|
+
var date = _a.date, onChange = _a.onChange, dateFormat = _a.dateFormat;
|
|
30
|
+
var is12HourFormat = /(hh|h).*a/i.test(dateFormat);
|
|
31
|
+
var _b = (0, react_1.useState)(date.getHours()), hour = _b[0], setHour = _b[1];
|
|
32
|
+
var _c = (0, react_1.useState)(date.getMinutes()), minute = _c[0], setMinute = _c[1];
|
|
33
|
+
var ampm = is12HourFormat ? (hour >= 12 ? "PM" : "AM") : "";
|
|
34
|
+
(0, react_1.useEffect)(function () {
|
|
35
|
+
setHour(date.getHours());
|
|
36
|
+
setMinute(date.getMinutes());
|
|
37
|
+
}, [date]);
|
|
38
|
+
var convertTo24Hour = function (hr, meridiem) {
|
|
39
|
+
if (meridiem === "AM") {
|
|
40
|
+
return hr === 12 ? 0 : hr;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
return hr === 12 ? 12 : hr + 12;
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
var updateTime = function (hrInput, min, meridiem) {
|
|
47
|
+
var newHour = is12HourFormat ? convertTo24Hour(hrInput, meridiem || ampm) : hrInput;
|
|
48
|
+
var newDate = new Date(date);
|
|
49
|
+
newDate.setHours(newHour);
|
|
50
|
+
newDate.setMinutes(min);
|
|
51
|
+
newDate.setSeconds(0);
|
|
52
|
+
newDate.setMilliseconds(0);
|
|
53
|
+
onChange(newDate);
|
|
54
|
+
};
|
|
55
|
+
var handleHourChange = function (e) {
|
|
56
|
+
var hr = parseInt(e.target.value || "1", 10);
|
|
57
|
+
if (is12HourFormat) {
|
|
58
|
+
hr = Math.max(1, Math.min(12, hr));
|
|
59
|
+
updateTime(hr, minute, ampm);
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
hr = Math.max(0, Math.min(23, hr));
|
|
63
|
+
updateTime(hr, minute);
|
|
64
|
+
}
|
|
65
|
+
setHour(hr);
|
|
66
|
+
};
|
|
67
|
+
var handleMinuteChange = function (e) {
|
|
68
|
+
var min = parseInt(e.target.value || "0", 10);
|
|
69
|
+
min = Math.max(0, Math.min(59, min));
|
|
70
|
+
setMinute(min);
|
|
71
|
+
updateTime(hour, min, ampm);
|
|
72
|
+
};
|
|
73
|
+
var handleAmpmToggle = function (e) {
|
|
74
|
+
e.preventDefault();
|
|
75
|
+
var newMeridiem = ampm === "AM" ? "PM" : "AM";
|
|
76
|
+
var displayHr = hour % 12 === 0 ? 12 : hour % 12;
|
|
77
|
+
var newHr = convertTo24Hour(displayHr, newMeridiem);
|
|
78
|
+
setHour(newHr);
|
|
79
|
+
updateTime(newHr, minute, newMeridiem);
|
|
80
|
+
};
|
|
81
|
+
var displayHour = is12HourFormat ? (hour % 12 === 0 ? 12 : hour % 12) : hour;
|
|
82
|
+
return (react_1.default.createElement("div", { style: { display: "flex", alignItems: "center", gap: "0.5rem", fontSize: "1.25rem" } },
|
|
83
|
+
react_1.default.createElement("input", { type: "number", value: padZero(displayHour), onChange: handleHourChange, min: is12HourFormat ? 1 : 0, max: is12HourFormat ? 12 : 23, style: { width: "3rem", textAlign: "center" } }),
|
|
84
|
+
":",
|
|
85
|
+
react_1.default.createElement("input", { type: "number", value: padZero(minute), onChange: handleMinuteChange, min: 0, max: 59, style: { width: "3rem", textAlign: "center" } }),
|
|
86
|
+
is12HourFormat && (react_1.default.createElement("button", { onClick: function () { return handleAmpmToggle; }, style: { fontWeight: "bold", padding: "0.25rem 0.5rem" } }, ampm))));
|
|
15
87
|
};
|
|
16
88
|
exports.default = TimePicker;
|
package/dist/Pages/datePick.js
CHANGED
|
@@ -52,7 +52,7 @@ var DatePick = function () {
|
|
|
52
52
|
};
|
|
53
53
|
return (react_1.default.createElement("div", null,
|
|
54
54
|
react_1.default.createElement("h2", null, "Single Date Picker"),
|
|
55
|
-
react_1.default.createElement(DatePicker_1.default, { selectedDate: selectedDate, onChange: handleDateChange, dateFormat: "
|
|
55
|
+
react_1.default.createElement(DatePicker_1.default, { selectedDate: selectedDate, onChange: handleDateChange, dateFormat: "HH:mm", pickerType: "time", width: "300px" }),
|
|
56
56
|
react_1.default.createElement("br", null),
|
|
57
57
|
react_1.default.createElement("h2", null, "Date Range Picker"),
|
|
58
58
|
react_1.default.createElement(DatePicker_1.default, { isRange: true, dateFormat: "dd/MM/yyyy", pickerType: "datetime", onChange: handleDateChange })));
|