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, autocomplete = props.autocomplete, disabled = props.disabled;
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 _c = (0, react_2.useDisclosure)(), isOpen = _c.isOpen, onOpen = _c.onOpen, onClose = _c.onClose;
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 _d = (0, react_1.useState)(isRange ? new Date() : selectedDate !== null && selectedDate !== void 0 ? selectedDate : new Date()), currentMonth = _d[0], setCurrentMonth = _d[1];
79
- var _e = (0, react_1.useState)(null), rangeStart = _e[0], setRangeStart = _e[1];
80
- var _f = (0, react_1.useState)(null), rangeEnd = _f[0], setRangeEnd = _f[1];
81
- var _g = (0, react_1.useState)(true), selectingStart = _g[0], setSelectingStart = _g[1];
82
- var _h = (0, react_1.useState)(selectedDate !== null && selectedDate !== void 0 ? selectedDate : null), tempDate = _h[0], setTempDate = _h[1];
83
- var _j = (0, react_1.useState)(rangeStart), tempRangeStart = _j[0], setTempRangeStart = _j[1];
84
- var _k = (0, react_1.useState)(rangeEnd), tempRangeEnd = _k[0], setTempRangeEnd = _k[1];
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.FormControl, { isInvalid: error },
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: autocomplete, isDisabled: disabled }))),
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(TimeSelector, { date: tempDate, onChange: setTempDate })),
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(); // Close popover after confirming
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
- autocomplete?: string;
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,6 @@
1
+ import React from 'react';
2
+ declare const TimePicker: ({ date, onChange }: {
3
+ date: Date;
4
+ onChange: (date: Date) => void;
5
+ }) => React.JSX.Element;
6
+ export default TimePicker;
@@ -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;
@@ -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: "date" }),
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 })));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pixelize-design-library",
3
- "version": "2.0.4",
3
+ "version": "2.0.5",
4
4
  "private": false,
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.js",