pixelize-design-library 2.0.4 → 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.
|
@@ -34,6 +34,7 @@ var Button_1 = __importDefault(require("../Button/Button"));
|
|
|
34
34
|
var TextInput_1 = __importDefault(require("../Input/TextInput"));
|
|
35
35
|
var useCustomTheme_1 = require("../../Theme/useCustomTheme");
|
|
36
36
|
var FormLabel_1 = require("../Common/FormLabel");
|
|
37
|
+
var TimePicker_1 = __importDefault(require("./TimePicker"));
|
|
37
38
|
var inferPickerTypeFromFormat = function (formatStr) {
|
|
38
39
|
var lower = formatStr.toLowerCase();
|
|
39
40
|
var hasTime = lower.includes("hh") || lower.includes("mm") || lower.includes("ss");
|
|
@@ -44,47 +45,26 @@ var inferPickerTypeFromFormat = function (formatStr) {
|
|
|
44
45
|
return "time";
|
|
45
46
|
return "date";
|
|
46
47
|
};
|
|
47
|
-
var TimeSelector = function (_a) {
|
|
48
|
-
var date = _a.date, onChange = _a.onChange;
|
|
49
|
-
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
50
|
-
var handleTimeChange = function (e) {
|
|
51
|
-
var _a = e.target.value.split(":").map(Number), hours = _a[0], minutes = _a[1];
|
|
52
|
-
var updated = new Date(date);
|
|
53
|
-
updated.setHours(hours);
|
|
54
|
-
updated.setMinutes(minutes);
|
|
55
|
-
onChange(updated);
|
|
56
|
-
};
|
|
57
|
-
return (react_1.default.createElement("input", { type: "time", value: (0, date_fns_1.format)(date, "HH:mm"), onChange: handleTimeChange, style: {
|
|
58
|
-
marginTop: "0.5rem",
|
|
59
|
-
width: "100%",
|
|
60
|
-
background: theme.colors.background[500],
|
|
61
|
-
border: "0.063rem solid ".concat(theme.colors.primary[500]),
|
|
62
|
-
borderRadius: "0.25rem",
|
|
63
|
-
fontSize: "1rem",
|
|
64
|
-
padding: "0.5rem",
|
|
65
|
-
color: theme.colors.text[500],
|
|
66
|
-
} }));
|
|
67
|
-
};
|
|
68
48
|
function CustomDatePicker(props) {
|
|
69
|
-
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;
|
|
70
50
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
71
|
-
var
|
|
51
|
+
var _e = (0, react_2.useDisclosure)(), isOpen = _e.isOpen, onOpen = _e.onOpen, onClose = _e.onClose;
|
|
72
52
|
var resolvedPickerType = pickerType !== null && pickerType !== void 0 ? pickerType : inferPickerTypeFromFormat(dateFormat);
|
|
73
53
|
var inputRef = (0, react_1.useRef)(null);
|
|
74
54
|
var today = new Date();
|
|
75
55
|
var showDate = resolvedPickerType === "date" || resolvedPickerType === "datetime";
|
|
76
56
|
var showTime = resolvedPickerType === "time" || resolvedPickerType === "datetime";
|
|
77
57
|
var selectedDate = !isRange ? props.selectedDate : null;
|
|
78
|
-
var
|
|
79
|
-
var
|
|
80
|
-
var
|
|
81
|
-
var
|
|
82
|
-
var
|
|
83
|
-
var
|
|
84
|
-
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];
|
|
85
65
|
(0, react_1.useEffect)(function () {
|
|
86
|
-
if (!isRange) {
|
|
87
|
-
setTempDate(
|
|
66
|
+
if (!isRange && selectedDate instanceof Date) {
|
|
67
|
+
setTempDate(new Date(selectedDate)); // clone with full time
|
|
88
68
|
}
|
|
89
69
|
}, [selectedDate, isRange]);
|
|
90
70
|
var handleDaySelect = function (day) {
|
|
@@ -104,7 +84,12 @@ function CustomDatePicker(props) {
|
|
|
104
84
|
}
|
|
105
85
|
}
|
|
106
86
|
else {
|
|
107
|
-
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
|
+
});
|
|
108
93
|
}
|
|
109
94
|
};
|
|
110
95
|
var renderDays = function () {
|
|
@@ -158,7 +143,7 @@ function CustomDatePicker(props) {
|
|
|
158
143
|
: tempDate
|
|
159
144
|
? (0, date_fns_1.format)(tempDate, dateFormat)
|
|
160
145
|
: "";
|
|
161
|
-
return (react_1.default.createElement(react_2.
|
|
146
|
+
return (react_1.default.createElement(react_2.Box, { width: width, position: "relative" },
|
|
162
147
|
label && (react_1.default.createElement(FormLabel_1.TextLabel, { label: label, isRequired: isRequired, isInformation: isInformation, informationMessage: informationMessage })),
|
|
163
148
|
react_1.default.createElement(react_2.Popover, { isLazy: true, isOpen: isOpen, onClose: onClose, placement: "bottom-start", modifiers: [
|
|
164
149
|
{
|
|
@@ -178,7 +163,7 @@ function CustomDatePicker(props) {
|
|
|
178
163
|
] },
|
|
179
164
|
react_1.default.createElement(react_2.PopoverTrigger, null,
|
|
180
165
|
react_1.default.createElement(react_2.Box, { onClick: onOpen },
|
|
181
|
-
react_1.default.createElement(TextInput_1.default, { id: id, name: name, ref: inputRef, placeholder: placeholderText, value: displayValue, isReadOnly: true, error: error, errorMessage: errorMessage, helperText: helperText, autoComplete:
|
|
166
|
+
react_1.default.createElement(TextInput_1.default, { id: id, name: name, ref: inputRef, placeholder: placeholderText, value: displayValue, isReadOnly: true, error: error, errorMessage: errorMessage, helperText: helperText, autoComplete: autoComplete, isDisabled: disabled, width: width }))),
|
|
182
167
|
react_1.default.createElement(react_2.PopoverContent, { width: "auto", p: 2 },
|
|
183
168
|
react_1.default.createElement(react_2.PopoverBody, null,
|
|
184
169
|
showDate && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
@@ -190,17 +175,21 @@ function CustomDatePicker(props) {
|
|
|
190
175
|
react_1.default.createElement(lucide_react_1.ChevronRightIcon, null))),
|
|
191
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)); })),
|
|
192
177
|
renderDays())),
|
|
193
|
-
!isRange && showTime && tempDate && (react_1.default.createElement(
|
|
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
|
+
} })),
|
|
194
182
|
react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", mt: 3 },
|
|
195
183
|
react_1.default.createElement(Button_1.default, { size: "sm", variant: "ghost", onClick: function () {
|
|
196
|
-
|
|
184
|
+
var now = new Date();
|
|
185
|
+
setTempDate(now);
|
|
197
186
|
setTempRangeStart(null);
|
|
198
187
|
setTempRangeEnd(null);
|
|
199
188
|
setRangeStart(null);
|
|
200
189
|
setRangeEnd(null);
|
|
201
190
|
setSelectingStart(true);
|
|
202
191
|
props.onChange(null);
|
|
203
|
-
|
|
192
|
+
onOpen();
|
|
204
193
|
} }, "Clear"),
|
|
205
194
|
react_1.default.createElement(Button_1.default, { size: "sm", colorScheme: "primary", onClick: function () {
|
|
206
195
|
if (isRange && tempRangeStart && tempRangeEnd) {
|
|
@@ -211,7 +200,7 @@ function CustomDatePicker(props) {
|
|
|
211
200
|
else if (!isRange && tempDate) {
|
|
212
201
|
props.onChange(tempDate);
|
|
213
202
|
}
|
|
214
|
-
onClose();
|
|
203
|
+
onClose();
|
|
215
204
|
} }, "OK")))))));
|
|
216
205
|
}
|
|
217
206
|
exports.default = CustomDatePicker;
|
|
@@ -16,12 +16,13 @@ export interface BaseDatePickerProps {
|
|
|
16
16
|
maxDate?: Date;
|
|
17
17
|
disableFutureDates?: boolean;
|
|
18
18
|
disablePastDates?: boolean;
|
|
19
|
-
|
|
19
|
+
autoComplete?: string;
|
|
20
20
|
disabled?: boolean;
|
|
21
|
+
width?: string | number;
|
|
21
22
|
}
|
|
22
23
|
export interface SingleDatePickerProps extends BaseDatePickerProps {
|
|
23
24
|
isRange?: false;
|
|
24
|
-
selectedDate
|
|
25
|
+
selectedDate?: Date | null;
|
|
25
26
|
onChange: (date: Date | null) => void;
|
|
26
27
|
}
|
|
27
28
|
export interface RangeDatePickerProps extends BaseDatePickerProps {
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
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;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
var react_1 = __importStar(require("react"));
|
|
27
|
+
var padZero = function (num) { return (num < 10 ? "0".concat(num) : "".concat(num)); };
|
|
28
|
+
var TimePicker = function (_a) {
|
|
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))));
|
|
87
|
+
};
|
|
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 })));
|