pixelize-design-library 2.0.4 → 2.0.5
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,49 +45,31 @@ 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, autoComplete = props.autoComplete, disabled = props.disabled, _c = props.width, width = _c === void 0 ? "100%" : _c;
|
|
70
50
|
var theme = (0, useCustomTheme_1.useCustomTheme)();
|
|
71
|
-
var
|
|
51
|
+
var _d = (0, react_2.useDisclosure)(), isOpen = _d.isOpen, onOpen = _d.onOpen, onClose = _d.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 _e = (0, react_1.useState)(isRange ? new Date() : selectedDate !== null && selectedDate !== void 0 ? selectedDate : new Date()), currentMonth = _e[0], setCurrentMonth = _e[1];
|
|
59
|
+
var _f = (0, react_1.useState)(null), rangeStart = _f[0], setRangeStart = _f[1];
|
|
60
|
+
var _g = (0, react_1.useState)(null), rangeEnd = _g[0], setRangeEnd = _g[1];
|
|
61
|
+
var _h = (0, react_1.useState)(true), selectingStart = _h[0], setSelectingStart = _h[1];
|
|
62
|
+
var _j = (0, react_1.useState)(selectedDate !== null && selectedDate !== void 0 ? selectedDate : null), tempDate = _j[0], setTempDate = _j[1];
|
|
63
|
+
var _k = (0, react_1.useState)(rangeStart), tempRangeStart = _k[0], setTempRangeStart = _k[1];
|
|
64
|
+
var _l = (0, react_1.useState)(rangeEnd), tempRangeEnd = _l[0], setTempRangeEnd = _l[1];
|
|
85
65
|
(0, react_1.useEffect)(function () {
|
|
86
66
|
if (!isRange) {
|
|
87
67
|
setTempDate(selectedDate !== null && selectedDate !== void 0 ? selectedDate : null);
|
|
88
68
|
}
|
|
89
69
|
}, [selectedDate, isRange]);
|
|
70
|
+
(0, react_1.useEffect)(function () {
|
|
71
|
+
setTempDate(selectedDate !== null && selectedDate !== void 0 ? selectedDate : null);
|
|
72
|
+
}, [selectedDate]);
|
|
90
73
|
var handleDaySelect = function (day) {
|
|
91
74
|
var updated = new Date(day);
|
|
92
75
|
if (isRange) {
|
|
@@ -158,7 +141,7 @@ function CustomDatePicker(props) {
|
|
|
158
141
|
: tempDate
|
|
159
142
|
? (0, date_fns_1.format)(tempDate, dateFormat)
|
|
160
143
|
: "";
|
|
161
|
-
return (react_1.default.createElement(react_2.
|
|
144
|
+
return (react_1.default.createElement(react_2.Box, { width: width, position: "relative" },
|
|
162
145
|
label && (react_1.default.createElement(FormLabel_1.TextLabel, { label: label, isRequired: isRequired, isInformation: isInformation, informationMessage: informationMessage })),
|
|
163
146
|
react_1.default.createElement(react_2.Popover, { isLazy: true, isOpen: isOpen, onClose: onClose, placement: "bottom-start", modifiers: [
|
|
164
147
|
{
|
|
@@ -178,7 +161,7 @@ function CustomDatePicker(props) {
|
|
|
178
161
|
] },
|
|
179
162
|
react_1.default.createElement(react_2.PopoverTrigger, null,
|
|
180
163
|
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:
|
|
164
|
+
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
165
|
react_1.default.createElement(react_2.PopoverContent, { width: "auto", p: 2 },
|
|
183
166
|
react_1.default.createElement(react_2.PopoverBody, null,
|
|
184
167
|
showDate && (react_1.default.createElement(react_1.default.Fragment, null,
|
|
@@ -190,7 +173,7 @@ function CustomDatePicker(props) {
|
|
|
190
173
|
react_1.default.createElement(lucide_react_1.ChevronRightIcon, null))),
|
|
191
174
|
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
175
|
renderDays())),
|
|
193
|
-
!isRange && showTime && tempDate && (react_1.default.createElement(
|
|
176
|
+
!isRange && showTime && tempDate && (react_1.default.createElement(TimePicker_1.default, { date: tempDate, onChange: setTempDate })),
|
|
194
177
|
react_1.default.createElement(react_2.Box, { display: "flex", justifyContent: "space-between", mt: 3 },
|
|
195
178
|
react_1.default.createElement(Button_1.default, { size: "sm", variant: "ghost", onClick: function () {
|
|
196
179
|
setTempDate(null);
|
|
@@ -211,7 +194,7 @@ function CustomDatePicker(props) {
|
|
|
211
194
|
else if (!isRange && tempDate) {
|
|
212
195
|
props.onChange(tempDate);
|
|
213
196
|
}
|
|
214
|
-
onClose();
|
|
197
|
+
onClose();
|
|
215
198
|
} }, "OK")))))));
|
|
216
199
|
}
|
|
217
200
|
exports.default = CustomDatePicker;
|
|
@@ -16,8 +16,9 @@ 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;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
var react_1 = __importDefault(require("react"));
|
|
7
|
+
var TimePicker = function (_a) {
|
|
8
|
+
var date = _a.date, onChange = _a.onChange;
|
|
9
|
+
return (react_1.default.createElement("input", { type: "time", value: date.toISOString().substring(11, 16), onChange: function (e) {
|
|
10
|
+
var _a = e.target.value.split(':'), hours = _a[0], minutes = _a[1];
|
|
11
|
+
var newDate = new Date(date);
|
|
12
|
+
newDate.setHours(Number(hours), Number(minutes));
|
|
13
|
+
onChange(newDate);
|
|
14
|
+
} }));
|
|
15
|
+
};
|
|
16
|
+
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: "dd/MM/yyyy", pickerType: "
|
|
55
|
+
react_1.default.createElement(DatePicker_1.default, { selectedDate: selectedDate, onChange: handleDateChange, dateFormat: "dd/MM/yyyy", pickerType: "time", width: "20px" }),
|
|
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 })));
|