@itilite/lumina-ui 1.1.14 → 1.2.0

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 (116) hide show
  1. package/dist/AdvancedDateRangePicker-D7xn4So6.d.mts +59 -0
  2. package/dist/AdvancedDateRangePicker-D7xn4So6.d.ts +59 -0
  3. package/dist/AdvancedDateRangePicker-D9Sdk4rK.d.mts +64 -0
  4. package/dist/AdvancedDateRangePicker-D9Sdk4rK.d.ts +64 -0
  5. package/dist/AdvancedDateRangePicker-DGg-rucL.d.mts +62 -0
  6. package/dist/AdvancedDateRangePicker-DGg-rucL.d.ts +62 -0
  7. package/dist/AdvancedDateRangePicker-DOSprRQR.d.mts +52 -0
  8. package/dist/AdvancedDateRangePicker-DOSprRQR.d.ts +52 -0
  9. package/dist/AdvancedDateRangePicker-Di3rHxqf.d.mts +64 -0
  10. package/dist/AdvancedDateRangePicker-Di3rHxqf.d.ts +64 -0
  11. package/dist/AdvancedDateRangePicker-Dxug2Mcf.d.mts +60 -0
  12. package/dist/AdvancedDateRangePicker-Dxug2Mcf.d.ts +60 -0
  13. package/dist/AdvancedDateRangePicker-ozItnkhp.d.mts +57 -0
  14. package/dist/AdvancedDateRangePicker-ozItnkhp.d.ts +57 -0
  15. package/dist/Table-BOq-_9Nr.d.mts +121 -0
  16. package/dist/Table-BOq-_9Nr.d.ts +121 -0
  17. package/dist/Table-BxaCiQmh.d.mts +82 -0
  18. package/dist/Table-BxaCiQmh.d.ts +82 -0
  19. package/dist/Table-DNvoh2P8.d.mts +127 -0
  20. package/dist/Table-DNvoh2P8.d.ts +127 -0
  21. package/dist/Table-DSFYzrpU.d.mts +129 -0
  22. package/dist/Table-DSFYzrpU.d.ts +129 -0
  23. package/dist/Table-DoCPt3ri.d.mts +129 -0
  24. package/dist/Table-DoCPt3ri.d.ts +129 -0
  25. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.d.mts +2 -0
  26. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.d.ts +2 -0
  27. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.js +1648 -0
  28. package/dist/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.mjs +15 -0
  29. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.d.mts +17 -0
  30. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.d.ts +17 -0
  31. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.js +370 -0
  32. package/dist/atom/AdvancedDateRangePicker/InternalCalendar.mjs +8 -0
  33. package/dist/atom/Button/Button.js +1 -1
  34. package/dist/atom/Button/Button.mjs +1 -1
  35. package/dist/atom/LoadingSpinner/LoadingSpinner.d.mts +2 -2
  36. package/dist/atom/LoadingSpinner/LoadingSpinner.d.ts +2 -2
  37. package/dist/atom/Modal/Modal.js +1 -1
  38. package/dist/atom/Modal/Modal.mjs +2 -2
  39. package/dist/atom/RangePicker/RangePicker.mjs +1 -1
  40. package/dist/atom/Table/Table.d.mts +3 -0
  41. package/dist/atom/Table/Table.d.ts +3 -0
  42. package/dist/atom/Table/Table.js +340 -0
  43. package/dist/atom/Table/Table.mjs +9 -0
  44. package/dist/chunk-27LRL4RO.mjs +428 -0
  45. package/dist/chunk-2IT3XM7C.mjs +473 -0
  46. package/dist/chunk-3HXZIFV6.mjs +438 -0
  47. package/dist/{chunk-35KDS27M.mjs → chunk-4JX54OKI.mjs} +27 -18
  48. package/dist/chunk-53O7JM5I.mjs +424 -0
  49. package/dist/chunk-5JXIJTAS.mjs +448 -0
  50. package/dist/chunk-5PQ43JFX.mjs +440 -0
  51. package/dist/chunk-62VAYFZA.mjs +437 -0
  52. package/dist/chunk-6ON32H2N.mjs +431 -0
  53. package/dist/chunk-6RIZXTFP.mjs +290 -0
  54. package/dist/chunk-6XIT27XY.mjs +269 -0
  55. package/dist/chunk-772C454L.mjs +438 -0
  56. package/dist/chunk-7L267Y4P.mjs +429 -0
  57. package/dist/chunk-7WSVCE2C.mjs +269 -0
  58. package/dist/chunk-ANJI6SPV.mjs +283 -0
  59. package/dist/chunk-BFFLWW7N.mjs +250 -0
  60. package/dist/chunk-C5VYFNVC.mjs +441 -0
  61. package/dist/chunk-DL7BZMGE.mjs +295 -0
  62. package/dist/chunk-DXPVJNGY.mjs +284 -0
  63. package/dist/chunk-FPH63V2R.mjs +269 -0
  64. package/dist/chunk-FTL3PFC2.mjs +438 -0
  65. package/dist/chunk-G4P6XGQX.mjs +278 -0
  66. package/dist/chunk-GGWY2SYX.mjs +452 -0
  67. package/dist/chunk-GZ4P7OL3.mjs +429 -0
  68. package/dist/chunk-I6GLPWHS.mjs +278 -0
  69. package/dist/chunk-IPVJEGDI.mjs +476 -0
  70. package/dist/chunk-J4YYP4IZ.mjs +0 -0
  71. package/dist/chunk-J5JDQ4R6.mjs +278 -0
  72. package/dist/chunk-K2A4TWA3.mjs +430 -0
  73. package/dist/chunk-L3L42SIL.mjs +429 -0
  74. package/dist/chunk-LRNKIRH3.mjs +289 -0
  75. package/dist/chunk-MA23J4WQ.mjs +430 -0
  76. package/dist/chunk-N4DPPZVJ.mjs +269 -0
  77. package/dist/chunk-PQ3B2FEB.mjs +249 -0
  78. package/dist/chunk-QRGHJP7U.mjs +437 -0
  79. package/dist/chunk-QU73KNTT.mjs +452 -0
  80. package/dist/chunk-RC6IGURJ.mjs +428 -0
  81. package/dist/chunk-SKPCOHON.mjs +473 -0
  82. package/dist/chunk-SRKN7WS7.mjs +448 -0
  83. package/dist/chunk-TQDZWJZP.mjs +269 -0
  84. package/dist/chunk-UAGSPM3T.mjs +288 -0
  85. package/dist/chunk-UC4NTBDH.mjs +439 -0
  86. package/dist/chunk-UPSQTJJ4.mjs +294 -0
  87. package/dist/chunk-V3CHJHUX.mjs +424 -0
  88. package/dist/chunk-X3NDICAU.mjs +284 -0
  89. package/dist/chunk-XECXKSTC.mjs +453 -0
  90. package/dist/chunk-XIVTXS3Y.mjs +439 -0
  91. package/dist/chunk-ZGV6QMVM.mjs +437 -0
  92. package/dist/index.d.mts +16 -14
  93. package/dist/index.d.ts +16 -14
  94. package/dist/index.js +1017 -16
  95. package/dist/index.mjs +23 -14
  96. package/dist/styles.css +1277 -178
  97. package/package.json +1 -1
  98. package/dist/Avatar-DX2JwvAs.d.mts +0 -17
  99. package/dist/Avatar-DX2JwvAs.d.ts +0 -17
  100. package/dist/Tag-l7I5oeyk.d.mts +0 -13
  101. package/dist/Tag-l7I5oeyk.d.ts +0 -13
  102. package/dist/chunk-3S4X3YO2.mjs +0 -64
  103. package/dist/chunk-3XUHGVYA.mjs +0 -77
  104. package/dist/chunk-DLLT6V65.mjs +0 -141
  105. package/dist/chunk-E4FCLHYA.mjs +0 -678
  106. package/dist/chunk-HISCHZ5H.mjs +0 -77
  107. package/dist/chunk-I5VHKSQR.mjs +0 -64
  108. package/dist/chunk-N355RJGH.mjs +0 -141
  109. package/dist/chunk-N3YFQDW7.mjs +0 -77
  110. package/dist/chunk-QWK3MYDM.mjs +0 -64
  111. package/dist/chunk-SWRFCTJW.mjs +0 -77
  112. package/dist/chunk-UTMZY37A.mjs +0 -141
  113. package/dist/chunk-UUEPD2FH.mjs +0 -141
  114. package/dist/chunk-X76GNSBB.mjs +0 -87
  115. package/dist/chunk-Y3BIY4DW.mjs +0 -618
  116. package/dist/chunk-ZGFE3OPJ.mjs +0 -678
@@ -0,0 +1,438 @@
1
+ import {
2
+ Select_default
3
+ } from "./chunk-GU5F7Z7I.mjs";
4
+ import {
5
+ InternalCalendar_default
6
+ } from "./chunk-7WSVCE2C.mjs";
7
+ import {
8
+ Button_default
9
+ } from "./chunk-AF2RKLH6.mjs";
10
+
11
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.tsx
12
+ import { memo, useCallback, useEffect, useMemo, useState } from "react";
13
+ import clsx from "clsx";
14
+ import dayjs from "dayjs";
15
+ import customParseFormat from "dayjs/plugin/customParseFormat.js";
16
+ import isSameOrBefore from "dayjs/plugin/isSameOrBefore.js";
17
+
18
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.module.scss
19
+ var AdvancedDateRangePicker_module_default = { "root": "AdvancedDateRangePicker-module__root___udir8", "inner": "AdvancedDateRangePicker-module__inner___P4OHa", "left": "AdvancedDateRangePicker-module__left___T6E84", "sidebarItem": "AdvancedDateRangePicker-module__sidebarItem___-NXPm", "sidebarItemActive": "AdvancedDateRangePicker-module__sidebarItemActive___5GmBY", "main": "AdvancedDateRangePicker-module__main___G4MU9", "header": "AdvancedDateRangePicker-module__header___mxXEE", "timezoneWrapper": "AdvancedDateRangePicker-module__timezoneWrapper___886Qm", "dateTimeWrapper": "AdvancedDateRangePicker-module__dateTimeWrapper___unDQJ", "headerGroup": "AdvancedDateRangePicker-module__headerGroup___J7mJB", "headerLabel": "AdvancedDateRangePicker-module__headerLabel___Yvhkr", "headerSeparator": "AdvancedDateRangePicker-module__headerSeparator___Vwx6P", "timezoneSelect": "AdvancedDateRangePicker-module__timezoneSelect___f4oln", "timezoneSelectContainer": "AdvancedDateRangePicker-module__timezoneSelectContainer___8SMc4", "timezoneDisabledBadge": "AdvancedDateRangePicker-module__timezoneDisabledBadge___VBxOd", "inputWrapper": "AdvancedDateRangePicker-module__inputWrapper___bFFNF", "dateTimeColumn": "AdvancedDateRangePicker-module__dateTimeColumn___tdDV3", "dateTimeGroup": "AdvancedDateRangePicker-module__dateTimeGroup___azF09", "dateInput": "AdvancedDateRangePicker-module__dateInput___0t9ww", "inputError": "AdvancedDateRangePicker-module__inputError___A5hid", "timeInput": "AdvancedDateRangePicker-module__timeInput___Jalr9", "errorMessage": "AdvancedDateRangePicker-module__errorMessage___gx7ag", "body": "AdvancedDateRangePicker-module__body___f8XYj", "footer": "AdvancedDateRangePicker-module__footer___rsJ2w", "doneBtn": "AdvancedDateRangePicker-module__doneBtn___mt-Sv" };
20
+
21
+ // src/atom/AdvancedDateRangePicker/AdvancedDateRangePicker.tsx
22
+ import { jsx, jsxs } from "react/jsx-runtime";
23
+ dayjs.extend(customParseFormat);
24
+ dayjs.extend(isSameOrBefore);
25
+ var DEFAULT_TIME = { hour: "12", minute: "00", period: "PM" };
26
+ function getPresets() {
27
+ const today = /* @__PURE__ */ new Date();
28
+ today.setHours(0, 0, 0, 0);
29
+ return [
30
+ {
31
+ label: "Custom",
32
+ key: "custom",
33
+ getRange: () => [null, null]
34
+ },
35
+ {
36
+ label: "Yesterday",
37
+ key: "yesterday",
38
+ getRange: () => {
39
+ const d = new Date(today);
40
+ d.setDate(d.getDate() - 1);
41
+ return [d, d];
42
+ }
43
+ },
44
+ {
45
+ label: "Previous week",
46
+ key: "previous-week",
47
+ getRange: () => {
48
+ const dayOfWeek = today.getDay();
49
+ const start = new Date(today);
50
+ start.setDate(today.getDate() - dayOfWeek - 6);
51
+ const end = new Date(today);
52
+ return [start, end];
53
+ }
54
+ },
55
+ {
56
+ label: "This month",
57
+ key: "this-month",
58
+ getRange: () => {
59
+ const start = new Date(today.getFullYear(), today.getMonth(), 1);
60
+ const end = new Date(today.getFullYear(), today.getMonth() + 1, 0);
61
+ return [start, end];
62
+ }
63
+ },
64
+ {
65
+ label: "Previous month",
66
+ key: "previous-month",
67
+ getRange: () => {
68
+ const start = new Date(today.getFullYear(), today.getMonth() - 1, 1);
69
+ const end = new Date(today.getFullYear(), today.getMonth(), 0);
70
+ return [start, end];
71
+ }
72
+ },
73
+ {
74
+ label: "Previous quarter",
75
+ key: "previous-quarter",
76
+ getRange: () => {
77
+ const month = today.getMonth();
78
+ const quarter = Math.floor(month / 3);
79
+ const startMonth = (quarter - 1) * 3;
80
+ const start = new Date(today.getFullYear(), startMonth, 1);
81
+ const end = new Date(today.getFullYear(), startMonth + 3, 0);
82
+ return [start, end];
83
+ }
84
+ }
85
+ ];
86
+ }
87
+ function applyDateMask(v, prev) {
88
+ if (v.length < prev.length) return v;
89
+ const digits = v.replace(/[^\d]/g, "").slice(0, 8);
90
+ if (digits.length >= 2) {
91
+ const d = Number(digits.slice(0, 2));
92
+ if (d < 1 || d > 31) return prev;
93
+ }
94
+ if (digits.length >= 4) {
95
+ const m = Number(digits.slice(2, 4));
96
+ if (m < 1 || m > 12) return prev;
97
+ }
98
+ let result = "";
99
+ if (digits.length > 0) result += digits.slice(0, 2);
100
+ if (digits.length >= 2) result += "-";
101
+ if (digits.length > 2) result += digits.slice(2, 4);
102
+ if (digits.length >= 4) result += "-";
103
+ if (digits.length > 4) result += digits.slice(4, 8);
104
+ return result.slice(0, 10);
105
+ }
106
+ function applyTimeMask(v, prev) {
107
+ if (v.length < prev.length) return v;
108
+ const digits = v.replace(/[^\d]/g, "").slice(0, 4);
109
+ if (digits.length >= 2) {
110
+ const h = Number(digits.slice(0, 2));
111
+ if (h < 1 || h > 12) return prev;
112
+ }
113
+ if (digits.length >= 4) {
114
+ const m = Number(digits.slice(2, 4));
115
+ if (m > 59) return prev;
116
+ }
117
+ let result = "";
118
+ if (digits.length > 0) result += digits.slice(0, 2);
119
+ if (digits.length >= 2) result += ":";
120
+ if (digits.length > 2) result += digits.slice(2, 4);
121
+ if (v.toUpperCase().includes("A")) result += " AM";
122
+ else if (v.toUpperCase().includes("P")) result += " PM";
123
+ else if (digits.length === 4) result += " ";
124
+ return result.slice(0, 8);
125
+ }
126
+ function formatForDisplay(date) {
127
+ if (!date) return "";
128
+ return dayjs(date).format("DD-MM-YYYY");
129
+ }
130
+ function validateDateString(raw) {
131
+ const regex = /^(0[1-9]|[12][0-9]|3[01])-(0[1-9]|1[0-2])-\d{4}$/;
132
+ if (!regex.test(raw)) return false;
133
+ const [d, m, y] = raw.split("-").map(Number);
134
+ const date = new Date(y, m - 1, d);
135
+ return date.getFullYear() === y && date.getMonth() === m - 1 && date.getDate() === d;
136
+ }
137
+ function validateTimeString(raw) {
138
+ const regex = /^(0[1-9]|1[0-2]):(0[0-9]|[1-5][0-9])\s(AM|PM)$/i;
139
+ return regex.test(raw);
140
+ }
141
+ function parseDateInput(raw) {
142
+ if (!validateDateString(raw)) return null;
143
+ return dayjs(raw, "DD-MM-YYYY", true).toDate();
144
+ }
145
+ function parseTimeInput(raw) {
146
+ if (!validateTimeString(raw)) return null;
147
+ const match = raw.match(/^(\d{1,2}):(\d{2})\s*(AM|PM)$/i);
148
+ if (!match) return null;
149
+ return {
150
+ hour: match[1].padStart(2, "0"),
151
+ minute: match[2].padStart(2, "0"),
152
+ period: match[3].toUpperCase()
153
+ };
154
+ }
155
+ function formatTime(t) {
156
+ return `${t.hour}:${t.minute} ${t.period}`;
157
+ }
158
+ var DateTimeInputGroup = memo(function DateTimeInputGroup2({
159
+ label,
160
+ dateValue,
161
+ timeValue,
162
+ dateError,
163
+ timeError,
164
+ onDateChange,
165
+ onTimeChange
166
+ }) {
167
+ const [isDateFocused, setIsDateFocused] = useState(false);
168
+ const [isTimeFocused, setIsTimeFocused] = useState(false);
169
+ const showDateError = dateError && !isDateFocused;
170
+ const showTimeError = timeError && !isTimeFocused;
171
+ return /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.headerGroup, children: [
172
+ /* @__PURE__ */ jsx("span", { className: AdvancedDateRangePicker_module_default.headerLabel, children: label }),
173
+ /* @__PURE__ */ jsx("div", { className: AdvancedDateRangePicker_module_default.dateTimeColumn, children: /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.dateTimeGroup, children: [
174
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.inputWrapper, children: [
175
+ /* @__PURE__ */ jsx(
176
+ "input",
177
+ {
178
+ type: "text",
179
+ placeholder: "dd-mm-yyyy",
180
+ value: dateValue,
181
+ onFocus: () => setIsDateFocused(true),
182
+ onBlur: () => setIsDateFocused(false),
183
+ onChange: (e) => onDateChange(e.target.value),
184
+ className: clsx(AdvancedDateRangePicker_module_default.dateInput, { [AdvancedDateRangePicker_module_default.inputError]: showDateError })
185
+ }
186
+ ),
187
+ showDateError && /* @__PURE__ */ jsx("span", { className: AdvancedDateRangePicker_module_default.errorMessage, children: "Enter valid date" })
188
+ ] }),
189
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.inputWrapper, children: [
190
+ /* @__PURE__ */ jsx(
191
+ "input",
192
+ {
193
+ type: "text",
194
+ placeholder: "12:00 PM",
195
+ value: timeValue,
196
+ onFocus: () => setIsTimeFocused(true),
197
+ onBlur: () => setIsTimeFocused(false),
198
+ onChange: (e) => onTimeChange(e.target.value),
199
+ className: clsx(AdvancedDateRangePicker_module_default.timeInput, { [AdvancedDateRangePicker_module_default.inputError]: showTimeError })
200
+ }
201
+ ),
202
+ showTimeError && /* @__PURE__ */ jsx("span", { className: AdvancedDateRangePicker_module_default.errorMessage, children: "Enter valid time" })
203
+ ] })
204
+ ] }) })
205
+ ] });
206
+ });
207
+ function AdvancedDateRangePicker({
208
+ value,
209
+ onChange,
210
+ confirmLabel = "Done",
211
+ className = "",
212
+ disabled = false,
213
+ disablePastDates = false,
214
+ minDate = null,
215
+ maxDate = null,
216
+ showSingleCalendar = false,
217
+ id = "adv-drp",
218
+ defaultTimezone = "UTC",
219
+ isTimezoneDisabled = false,
220
+ timezoneOptions = [],
221
+ defaultPreset = "custom"
222
+ }) {
223
+ var _a, _b, _c;
224
+ const PRESETS = useMemo(() => getPresets(), []);
225
+ const [startDate, setStartDate] = useState((_a = value == null ? void 0 : value.startDate) != null ? _a : null);
226
+ const [endDate, setEndDate] = useState((_b = value == null ? void 0 : value.endDate) != null ? _b : null);
227
+ const [timezone, setTimezone] = useState((_c = value == null ? void 0 : value.timezone) != null ? _c : defaultTimezone);
228
+ const [fromDateStr, setFromDateStr] = useState(formatForDisplay(startDate));
229
+ const [toDateStr, setToDateStr] = useState(formatForDisplay(endDate));
230
+ const [fromTimeStr, setFromTimeStr] = useState(
231
+ (value == null ? void 0 : value.startTime) ? formatTime(value.startTime) : "12:00 PM"
232
+ );
233
+ const [toTimeStr, setToTimeStr] = useState(
234
+ (value == null ? void 0 : value.endTime) ? formatTime(value.endTime) : "12:00 PM"
235
+ );
236
+ const [activePreset, setActivePreset] = useState(defaultPreset);
237
+ const fromDateError = useMemo(() => fromDateStr.length > 0 && (fromDateStr.length < 10 || !validateDateString(fromDateStr)), [fromDateStr]);
238
+ const toDateError = useMemo(() => toDateStr.length > 0 && (toDateStr.length < 10 || !validateDateString(toDateStr)), [toDateStr]);
239
+ const fromTimeError = useMemo(() => fromTimeStr.length > 0 && (fromTimeStr.length < 8 || !validateTimeString(fromTimeStr)), [fromTimeStr]);
240
+ const toTimeError = useMemo(() => toTimeStr.length > 0 && (toTimeStr.length < 8 || !validateTimeString(toTimeStr)), [toTimeStr]);
241
+ const isReady = useMemo(() => {
242
+ return startDate !== null && endDate !== null && validateDateString(fromDateStr) && validateDateString(toDateStr) && validateTimeString(fromTimeStr) && validateTimeString(toTimeStr) && dayjs(startDate).isSameOrBefore(dayjs(endDate), "day");
243
+ }, [startDate, endDate, fromDateStr, toDateStr, fromTimeStr, toTimeStr]);
244
+ useEffect(() => {
245
+ var _a2, _b2, _c2;
246
+ if (value) {
247
+ setStartDate((_a2 = value.startDate) != null ? _a2 : null);
248
+ setEndDate((_b2 = value.endDate) != null ? _b2 : null);
249
+ setTimezone((_c2 = value.timezone) != null ? _c2 : defaultTimezone);
250
+ if (value.startTime) setFromTimeStr(formatTime(value.startTime));
251
+ if (value.endTime) setToTimeStr(formatTime(value.endTime));
252
+ }
253
+ }, [value, defaultTimezone]);
254
+ useEffect(() => {
255
+ setFromDateStr(formatForDisplay(startDate));
256
+ }, [startDate]);
257
+ useEffect(() => {
258
+ setToDateStr(formatForDisplay(endDate));
259
+ }, [endDate]);
260
+ const rangeValue = useMemo(() => [
261
+ startDate ? startDate.toISOString() : "",
262
+ endDate ? endDate.toISOString() : ""
263
+ ], [startDate, endDate]);
264
+ const handleRangeChange = useCallback(
265
+ (range) => {
266
+ const [s, e] = range;
267
+ if (s) {
268
+ const sDateByDayjs = dayjs(s, "D MMM, YYYY").toDate();
269
+ setStartDate(sDateByDayjs);
270
+ } else {
271
+ setStartDate(null);
272
+ }
273
+ if (e) {
274
+ const eDateByDayjs = dayjs(e, "D MMM, YYYY").toDate();
275
+ setEndDate(eDateByDayjs);
276
+ } else {
277
+ setEndDate(null);
278
+ }
279
+ setActivePreset("custom");
280
+ },
281
+ []
282
+ );
283
+ const handlePreset = useCallback(
284
+ (preset) => {
285
+ const [s, e] = preset.getRange();
286
+ setStartDate(s);
287
+ setEndDate(e);
288
+ setActivePreset(preset.key);
289
+ },
290
+ []
291
+ );
292
+ const handleFromDateChange = useCallback((v) => {
293
+ const masked = applyDateMask(v, fromDateStr);
294
+ setFromDateStr(masked);
295
+ setActivePreset("custom");
296
+ if (masked.length === 10) {
297
+ const parsed = parseDateInput(masked);
298
+ if (parsed) {
299
+ setStartDate(parsed);
300
+ if (endDate && dayjs(parsed).isAfter(dayjs(endDate), "day")) {
301
+ setEndDate(null);
302
+ }
303
+ }
304
+ }
305
+ }, [fromDateStr, endDate]);
306
+ const handleToDateChange = useCallback((v) => {
307
+ const masked = applyDateMask(v, toDateStr);
308
+ setToDateStr(masked);
309
+ setActivePreset("custom");
310
+ if (masked.length === 10) {
311
+ const parsed = parseDateInput(masked);
312
+ if (parsed) {
313
+ setEndDate(parsed);
314
+ if (startDate && dayjs(parsed).isBefore(dayjs(startDate), "day")) {
315
+ setStartDate(null);
316
+ }
317
+ }
318
+ }
319
+ }, [toDateStr, startDate]);
320
+ const handleFromTimeChange = useCallback((v) => {
321
+ const masked = applyTimeMask(v, fromTimeStr);
322
+ setFromTimeStr(masked);
323
+ setActivePreset("custom");
324
+ }, [fromTimeStr]);
325
+ const handleToTimeChange = useCallback((v) => {
326
+ const masked = applyTimeMask(v, toTimeStr);
327
+ setToTimeStr(masked);
328
+ setActivePreset("custom");
329
+ }, [toTimeStr]);
330
+ const handleDone = useCallback(() => {
331
+ var _a2, _b2;
332
+ if (!isReady) return;
333
+ const fromTime = (_a2 = parseTimeInput(fromTimeStr)) != null ? _a2 : DEFAULT_TIME;
334
+ const toTime = (_b2 = parseTimeInput(toTimeStr)) != null ? _b2 : DEFAULT_TIME;
335
+ onChange == null ? void 0 : onChange({
336
+ startDate,
337
+ endDate,
338
+ startTime: fromTime,
339
+ endTime: toTime,
340
+ timezone
341
+ });
342
+ }, [isReady, onChange, startDate, endDate, fromTimeStr, toTimeStr, timezone]);
343
+ return /* @__PURE__ */ jsxs("div", { className: clsx(AdvancedDateRangePicker_module_default.root, className), id, children: [
344
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.inner, children: [
345
+ /* @__PURE__ */ jsx("aside", { className: AdvancedDateRangePicker_module_default.left, children: PRESETS.map((p) => /* @__PURE__ */ jsx(
346
+ "button",
347
+ {
348
+ type: "button",
349
+ onClick: () => handlePreset(p),
350
+ className: clsx(AdvancedDateRangePicker_module_default.sidebarItem, {
351
+ [AdvancedDateRangePicker_module_default.sidebarItemActive]: activePreset === p.key
352
+ }),
353
+ children: p.label
354
+ },
355
+ p.key
356
+ )) }),
357
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.main, children: [
358
+ /* @__PURE__ */ jsxs("header", { className: AdvancedDateRangePicker_module_default.header, children: [
359
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.timezoneWrapper, children: [
360
+ /* @__PURE__ */ jsx("span", { className: AdvancedDateRangePicker_module_default.headerLabel, children: "Timezone" }),
361
+ isTimezoneDisabled ? (
362
+ /* Disabled state: plain text badge instead of empty dropdown */
363
+ /* @__PURE__ */ jsx("div", { className: AdvancedDateRangePicker_module_default.timezoneDisabledBadge, children: timezone })
364
+ ) : /* @__PURE__ */ jsx(
365
+ Select_default,
366
+ {
367
+ value: timezone,
368
+ onChange: (val) => {
369
+ if (val) setTimezone(String(val));
370
+ },
371
+ options: timezoneOptions,
372
+ size: "small",
373
+ allowClear: false,
374
+ enableSearch: false,
375
+ wrapperClassName: AdvancedDateRangePicker_module_default.timezoneSelectContainer,
376
+ inputClassName: AdvancedDateRangePicker_module_default.timezoneSelectInput
377
+ }
378
+ )
379
+ ] }),
380
+ /* @__PURE__ */ jsxs("div", { className: AdvancedDateRangePicker_module_default.dateTimeWrapper, children: [
381
+ /* @__PURE__ */ jsx(
382
+ DateTimeInputGroup,
383
+ {
384
+ label: "From",
385
+ dateValue: fromDateStr,
386
+ timeValue: fromTimeStr,
387
+ dateError: fromDateError,
388
+ timeError: fromTimeError,
389
+ onDateChange: handleFromDateChange,
390
+ onTimeChange: handleFromTimeChange
391
+ }
392
+ ),
393
+ /* @__PURE__ */ jsx(
394
+ DateTimeInputGroup,
395
+ {
396
+ label: "To",
397
+ dateValue: toDateStr,
398
+ timeValue: toTimeStr,
399
+ dateError: toDateError,
400
+ timeError: toTimeError,
401
+ onDateChange: handleToDateChange,
402
+ onTimeChange: handleToTimeChange
403
+ }
404
+ )
405
+ ] })
406
+ ] }),
407
+ /* @__PURE__ */ jsx("div", { className: AdvancedDateRangePicker_module_default.body, children: /* @__PURE__ */ jsx(
408
+ InternalCalendar_default,
409
+ {
410
+ id: `${id}-calendar`,
411
+ dateRange: rangeValue,
412
+ onChange: handleRangeChange,
413
+ disablePastDates,
414
+ minDate,
415
+ maxDate,
416
+ showSingleCalendar
417
+ }
418
+ ) })
419
+ ] })
420
+ ] }),
421
+ /* @__PURE__ */ jsx("footer", { className: AdvancedDateRangePicker_module_default.footer, children: /* @__PURE__ */ jsx(
422
+ Button_default,
423
+ {
424
+ onClick: handleDone,
425
+ disabled: disabled || !isReady,
426
+ shape: "round",
427
+ children: confirmLabel
428
+ }
429
+ ) })
430
+ ] });
431
+ }
432
+ AdvancedDateRangePicker.displayName = "AdvancedDateRangePicker";
433
+ var AdvancedDateRangePicker_default = AdvancedDateRangePicker;
434
+
435
+ export {
436
+ AdvancedDateRangePicker,
437
+ AdvancedDateRangePicker_default
438
+ };
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Select_default
3
- } from "./chunk-E4FCLHYA.mjs";
3
+ } from "./chunk-GU5F7Z7I.mjs";
4
4
  import {
5
5
  Chevron
6
6
  } from "./chunk-ZTRM4HZJ.mjs";
@@ -87,6 +87,15 @@ function CustomRangePicker(props) {
87
87
  const [selectedDate, setSelectedDate] = useState(
88
88
  !isRange && dateRange[0] ? new Date(dateRange[0]) : null
89
89
  );
90
+ useEffect(() => {
91
+ const newStart = dateRange[0] ? new Date(dateRange[0]) : null;
92
+ const newEnd = dateRange[1] ? new Date(dateRange[1]) : null;
93
+ setStartDate(newStart);
94
+ setEndDate(newEnd);
95
+ if (newStart) {
96
+ setCurrentDate(new Date(newStart.getFullYear(), newStart.getMonth(), 1));
97
+ }
98
+ }, [dateRange]);
90
99
  const getDaysBetween = (start, end) => {
91
100
  if (!start || !end) return 0;
92
101
  const startDay = dayjs(start).startOf("day");
@@ -228,8 +237,11 @@ function CustomRangePicker(props) {
228
237
  if (isDateDisabled(date)) return;
229
238
  if (!isRange) {
230
239
  setSelectedDate(date);
240
+ onChangeRef.current(null, dayjs(date).format("D MMM, YYYY"));
231
241
  return;
232
242
  }
243
+ let nextStart = startDate;
244
+ let nextEnd = endDate;
233
245
  const isCheckinCheckoutSame = dayjs(date).format("D MMM, YYYY") === dayjs(startDate).format("D MMM, YYYY");
234
246
  if (showNightCount && isCheckinCheckoutSame) {
235
247
  setStartDate(null);
@@ -237,32 +249,34 @@ function CustomRangePicker(props) {
237
249
  setIsSelectingEnd(false);
238
250
  setHoverDate(null);
239
251
  showToastError("Check-in and check-out dates cannot be the same.");
252
+ onChangeRef.current(null, ["", ""]);
240
253
  return;
241
254
  }
242
255
  if (!startDate || startDate && endDate) {
243
- setStartDate(date);
244
- setEndDate(null);
256
+ nextStart = date;
257
+ nextEnd = null;
258
+ setStartDate(nextStart);
259
+ setEndDate(nextEnd);
245
260
  setIsSelectingEnd(true);
246
261
  setHoverDate(null);
247
262
  } else if (startDate && !endDate) {
248
263
  if (date < startDate) {
249
- setEndDate(startDate);
250
- setStartDate(date);
264
+ nextEnd = startDate;
265
+ nextStart = date;
251
266
  } else {
252
- setEndDate(date);
267
+ nextEnd = date;
253
268
  }
269
+ setStartDate(nextStart);
270
+ setEndDate(nextEnd);
254
271
  setIsSelectingEnd(false);
255
272
  setHoverDate(null);
256
273
  }
274
+ onChangeRef.current(null, [
275
+ nextStart ? dayjs(nextStart).format("D MMM, YYYY") : "",
276
+ nextEnd ? dayjs(nextEnd).format("D MMM, YYYY") : ""
277
+ ]);
257
278
  };
258
279
  useEffect(() => {
259
- if (isRange) {
260
- sessionStorage.removeItem("rangePickerStartDate");
261
- onChangeRef.current(null, [
262
- startDate ? dayjs(startDate).format("D MMM, YYYY") : "",
263
- endDate ? dayjs(endDate).format("D MMM, YYYY") : ""
264
- ]);
265
- }
266
280
  if (isRange && startDate && !endDate) {
267
281
  sessionStorage.setItem(
268
282
  "rangePickerStartDate",
@@ -270,11 +284,6 @@ function CustomRangePicker(props) {
270
284
  );
271
285
  }
272
286
  }, [startDate, endDate, isRange]);
273
- useEffect(() => {
274
- if (!isRange && selectedDate) {
275
- onChangeRef.current(null, dayjs(selectedDate).format("D MMM, YYYY"));
276
- }
277
- }, [selectedDate, isRange]);
278
287
  const handleDateHover = (date) => {
279
288
  if (isDateDisabled(date) || !isRange) return;
280
289
  if (isSelectingEnd && startDate && !endDate) {