@activecollab/components 2.0.139 → 2.0.141

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 (60) hide show
  1. package/dist/cjs/components/DatePicker/DatePickerV2.js +661 -0
  2. package/dist/cjs/components/DatePicker/DatePickerV2.js.map +1 -0
  3. package/dist/cjs/components/DatePicker/StylesV2.js +100 -0
  4. package/dist/cjs/components/DatePicker/StylesV2.js.map +1 -0
  5. package/dist/cjs/components/DatePicker/index.js +11 -0
  6. package/dist/cjs/components/DatePicker/index.js.map +1 -1
  7. package/dist/cjs/components/GlobalStyle.js +1 -1
  8. package/dist/cjs/components/GlobalStyle.js.map +1 -1
  9. package/dist/cjs/components/SelectDate/SelectDateV2.js +233 -0
  10. package/dist/cjs/components/SelectDate/SelectDateV2.js.map +1 -0
  11. package/dist/cjs/components/SelectDate/index.js +11 -0
  12. package/dist/cjs/components/SelectDate/index.js.map +1 -1
  13. package/dist/cjs/components/Steppers/DateStepper/DateStepperV2.js +276 -0
  14. package/dist/cjs/components/Steppers/DateStepper/DateStepperV2.js.map +1 -0
  15. package/dist/cjs/components/Steppers/DateStepper/Styles.js +2 -3
  16. package/dist/cjs/components/Steppers/DateStepper/Styles.js.map +1 -1
  17. package/dist/cjs/components/Steppers/DateStepper/index.js +11 -0
  18. package/dist/cjs/components/Steppers/DateStepper/index.js.map +1 -1
  19. package/dist/cjs/custom.d.js.map +1 -1
  20. package/dist/esm/components/DatePicker/DatePickerV2.d.ts +67 -0
  21. package/dist/esm/components/DatePicker/DatePickerV2.d.ts.map +1 -0
  22. package/dist/esm/components/DatePicker/DatePickerV2.js +574 -0
  23. package/dist/esm/components/DatePicker/DatePickerV2.js.map +1 -0
  24. package/dist/esm/components/DatePicker/StylesV2.d.ts +22 -0
  25. package/dist/esm/components/DatePicker/StylesV2.d.ts.map +1 -0
  26. package/dist/esm/components/DatePicker/StylesV2.js +93 -0
  27. package/dist/esm/components/DatePicker/StylesV2.js.map +1 -0
  28. package/dist/esm/components/DatePicker/index.d.ts +1 -0
  29. package/dist/esm/components/DatePicker/index.d.ts.map +1 -1
  30. package/dist/esm/components/DatePicker/index.js +1 -0
  31. package/dist/esm/components/DatePicker/index.js.map +1 -1
  32. package/dist/esm/components/GlobalStyle.d.ts.map +1 -1
  33. package/dist/esm/components/GlobalStyle.js +1 -1
  34. package/dist/esm/components/GlobalStyle.js.map +1 -1
  35. package/dist/esm/components/SelectDate/SelectDateV2.d.ts +100 -0
  36. package/dist/esm/components/SelectDate/SelectDateV2.d.ts.map +1 -0
  37. package/dist/esm/components/SelectDate/SelectDateV2.js +195 -0
  38. package/dist/esm/components/SelectDate/SelectDateV2.js.map +1 -0
  39. package/dist/esm/components/SelectDate/Styles.d.ts +1 -1
  40. package/dist/esm/components/SelectDate/index.d.ts +1 -0
  41. package/dist/esm/components/SelectDate/index.d.ts.map +1 -1
  42. package/dist/esm/components/SelectDate/index.js +1 -0
  43. package/dist/esm/components/SelectDate/index.js.map +1 -1
  44. package/dist/esm/components/Steppers/DateStepper/DateStepperV2.d.ts +45 -0
  45. package/dist/esm/components/Steppers/DateStepper/DateStepperV2.d.ts.map +1 -0
  46. package/dist/esm/components/Steppers/DateStepper/DateStepperV2.js +241 -0
  47. package/dist/esm/components/Steppers/DateStepper/DateStepperV2.js.map +1 -0
  48. package/dist/esm/components/Steppers/DateStepper/Styles.d.ts.map +1 -1
  49. package/dist/esm/components/Steppers/DateStepper/Styles.js +2 -3
  50. package/dist/esm/components/Steppers/DateStepper/Styles.js.map +1 -1
  51. package/dist/esm/components/Steppers/DateStepper/index.d.ts +1 -0
  52. package/dist/esm/components/Steppers/DateStepper/index.d.ts.map +1 -1
  53. package/dist/esm/components/Steppers/DateStepper/index.js +1 -0
  54. package/dist/esm/components/Steppers/DateStepper/index.js.map +1 -1
  55. package/dist/esm/custom.d.js.map +1 -1
  56. package/dist/index.js +7079 -5876
  57. package/dist/index.js.map +1 -1
  58. package/dist/index.min.js +1 -1
  59. package/dist/index.min.js.map +1 -1
  60. package/package.json +2 -1
@@ -0,0 +1,661 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.DatePickerV2 = void 0;
7
+ var _react = _interopRequireWildcard(require("react"));
8
+ var _momentTimezone = _interopRequireDefault(require("moment-timezone"));
9
+ var _StylesV = require("./StylesV2");
10
+ var _Button = require("../Button");
11
+ var _IconButton = require("../IconButton");
12
+ var _Icons = require("../Icons");
13
+ var _Menu = require("../Menu");
14
+ var _Tooltip = require("../Tooltip");
15
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
16
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
17
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
18
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
19
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
20
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
21
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
22
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
23
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
24
+ var DatePickerV2 = exports.DatePickerV2 = function DatePickerV2(_ref) {
25
+ var _selected$to4;
26
+ var defaultSelected = _ref.selected,
27
+ onChange = _ref.onChange,
28
+ onSave = _ref.onSave,
29
+ onClear = _ref.onClear,
30
+ onClose = _ref.onClose,
31
+ _ref$instant = _ref.instant,
32
+ instant = _ref$instant === void 0 ? true : _ref$instant,
33
+ target = _ref.target,
34
+ _ref$mode = _ref.mode,
35
+ mode = _ref$mode === void 0 ? "daily" : _ref$mode,
36
+ _ref$saveLabel = _ref.saveLabel,
37
+ saveLabel = _ref$saveLabel === void 0 ? "Save" : _ref$saveLabel,
38
+ _ref$cancelLabel = _ref.cancelLabel,
39
+ cancelLabel = _ref$cancelLabel === void 0 ? "Cancel" : _ref$cancelLabel,
40
+ _ref$clearLabel = _ref.clearLabel,
41
+ clearLabel = _ref$clearLabel === void 0 ? "Clear" : _ref$clearLabel,
42
+ disabledDaysBefore = _ref.disabledDaysBefore,
43
+ disabledDaysAfter = _ref.disabledDaysAfter,
44
+ _ref$disabled = _ref.disabled,
45
+ disabledDays = _ref$disabled === void 0 ? [] : _ref$disabled,
46
+ modifiers = _ref.modifiers,
47
+ disableAnimations = _ref.disableAnimations,
48
+ _ref$firstDayOfWeek = _ref.firstDayOfWeek,
49
+ firstDayOfWeek = _ref$firstDayOfWeek === void 0 ? 0 : _ref$firstDayOfWeek,
50
+ forceClose = _ref.forceClose,
51
+ required = _ref.required,
52
+ month = _ref.month,
53
+ disableYearPicker = _ref.disableYearPicker,
54
+ _ref$position = _ref.position,
55
+ position = _ref$position === void 0 ? "bottom-start" : _ref$position,
56
+ menuClassName = _ref.menuClassName,
57
+ popperClassName = _ref.popperClassName,
58
+ _ref$enableConfirmMod = _ref.enableConfirmModal,
59
+ enableConfirmModal = _ref$enableConfirmMod === void 0 ? false : _ref$enableConfirmMod,
60
+ _ref$modalHeaderText = _ref.modalHeaderText,
61
+ modalHeaderText = _ref$modalHeaderText === void 0 ? "Discard changes?" : _ref$modalHeaderText,
62
+ _ref$modalDiscardMess = _ref.modalDiscardMessage,
63
+ modalDiscardMessage = _ref$modalDiscardMess === void 0 ? "All unsaved changes will be lost." : _ref$modalDiscardMess,
64
+ _ref$modalDiscardBtnT = _ref.modalDiscardBtnText,
65
+ modalDiscardBtnText = _ref$modalDiscardBtnT === void 0 ? "OK" : _ref$modalDiscardBtnT,
66
+ _ref$modalCancelBtnTe = _ref.modalCancelBtnText,
67
+ modalCancelBtnText = _ref$modalCancelBtnTe === void 0 ? "Cancel" : _ref$modalCancelBtnTe,
68
+ backgroundElementClass = _ref.backgroundElementClass,
69
+ popperTooltipClassName = _ref.popperTooltipClassName,
70
+ popperTooltipStyle = _ref.popperTooltipStyle,
71
+ open = _ref.open,
72
+ onCalendarToggle = _ref.onCalendarToggle,
73
+ onDayClick = _ref.onDayClick,
74
+ showControls = _ref.showControls;
75
+ var _useState = (0, _react.useState)(open),
76
+ _useState2 = _slicedToArray(_useState, 2),
77
+ isOpen = _useState2[0],
78
+ setIsOpen = _useState2[1];
79
+ var _useState3 = (0, _react.useState)(false),
80
+ _useState4 = _slicedToArray(_useState3, 2),
81
+ isYearSelectOpen = _useState4[0],
82
+ setIsYearSelectOpen = _useState4[1];
83
+ var _useState5 = (0, _react.useState)(false),
84
+ _useState6 = _slicedToArray(_useState5, 2),
85
+ showDiscardModal = _useState6[0],
86
+ setShowDiscardModal = _useState6[1];
87
+ var _useState7 = (0, _react.useState)(mode === "monthly" || mode === "quarterly"),
88
+ _useState8 = _slicedToArray(_useState7, 2),
89
+ isMonthSelectOpen = _useState8[0],
90
+ setIsMonthSelectOpen = _useState8[1];
91
+ var _useState9 = (0, _react.useState)(null),
92
+ _useState10 = _slicedToArray(_useState9, 2),
93
+ monthTransitionDirection = _useState10[0],
94
+ setMonthTransitionDirection = _useState10[1];
95
+ var _useState11 = (0, _react.useState)(defaultSelected !== null && defaultSelected !== void 0 && defaultSelected.from ? _momentTimezone.default.utc((defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.from) * 1000) : _momentTimezone.default.isMoment(month) ? month : _momentTimezone.default.utc(month)),
96
+ _useState12 = _slicedToArray(_useState11, 2),
97
+ currentDate = _useState12[0],
98
+ setCurrentDate = _useState12[1];
99
+ var _useState13 = (0, _react.useState)(defaultSelected !== null && defaultSelected !== void 0 && defaultSelected.from ? _momentTimezone.default.utc((defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.from) * 1000) : _momentTimezone.default.isMoment(month) ? month : _momentTimezone.default.utc(month)),
100
+ _useState14 = _slicedToArray(_useState13, 2),
101
+ targetDate = _useState14[0],
102
+ setTargetDate = _useState14[1];
103
+ var _useState15 = (0, _react.useState)(!defaultSelected ? null : {
104
+ from: _momentTimezone.default.utc(defaultSelected.from * 1000),
105
+ to: _momentTimezone.default.utc(Number(defaultSelected.to) * 1000)
106
+ }),
107
+ _useState16 = _slicedToArray(_useState15, 2),
108
+ selected = _useState16[0],
109
+ setSelected = _useState16[1];
110
+ var _useState17 = (0, _react.useState)(null),
111
+ _useState18 = _slicedToArray(_useState17, 2),
112
+ hoveredDate = _useState18[0],
113
+ setHoveredDate = _useState18[1];
114
+ var timezone = _momentTimezone.default.defaultZone ? _momentTimezone.default.defaultZone.name : _momentTimezone.default.tz.guess();
115
+ var currentDateInTimezone = (0, _momentTimezone.default)().tz(timezone).format("YYYY-MM-DD");
116
+ var today = _momentTimezone.default.utc(currentDateInTimezone);
117
+ var selectedYearRef = (0, _react.useRef)(null);
118
+ var datePickerRef = (0, _react.useRef)(null);
119
+ var handleSelection = (0, _react.useCallback)(function (range) {
120
+ if (!range) {
121
+ setSelected(null);
122
+ if (onChange) onChange(undefined);
123
+ if (instant && onSave) {
124
+ onSave(undefined);
125
+ }
126
+ } else {
127
+ setSelected(range);
128
+ if (onChange) onChange({
129
+ from: range.from.utc().unix(),
130
+ to: (0, _momentTimezone.default)(range.to).utc().unix()
131
+ });
132
+ if (instant && onSave) {
133
+ onSave({
134
+ from: range.from.utc().unix(),
135
+ to: (0, _momentTimezone.default)(range.to).utc().unix()
136
+ });
137
+ }
138
+ }
139
+ }, [onChange, onSave, instant]);
140
+ var toggleCalendar = (0, _react.useCallback)(function () {
141
+ setIsOpen(!isOpen);
142
+ if (onCalendarToggle) onCalendarToggle(!isOpen);
143
+ }, [isOpen, onCalendarToggle]);
144
+ var toggleYearSelect = (0, _react.useCallback)(function () {
145
+ setIsYearSelectOpen(!isYearSelectOpen);
146
+ setIsMonthSelectOpen(true);
147
+ }, [isYearSelectOpen]);
148
+ var toggleMonthSelect = (0, _react.useCallback)(function () {
149
+ if (mode !== "monthly" && mode !== "quarterly") {
150
+ setIsMonthSelectOpen(!isMonthSelectOpen);
151
+ }
152
+ }, [isMonthSelectOpen, mode]);
153
+ (0, _react.useEffect)(function () {
154
+ if (defaultSelected) {
155
+ setSelected({
156
+ from: _momentTimezone.default.utc(defaultSelected.from * 1000),
157
+ to: _momentTimezone.default.utc(Number(defaultSelected.to) * 1000)
158
+ });
159
+ setCurrentDate(_momentTimezone.default.utc(defaultSelected.from * 1000) || _momentTimezone.default.utc());
160
+ setTargetDate(_momentTimezone.default.utc(defaultSelected.from * 1000) || _momentTimezone.default.utc());
161
+ } else {
162
+ setSelected(null);
163
+ }
164
+ }, [defaultSelected, month]);
165
+ var handleDateSelect = function handleDateSelect(date) {
166
+ var isSameMonth = date.isSame(currentDate, "month");
167
+ if (isSameMonth || disableAnimations) {
168
+ setCurrentDate(date);
169
+ setTargetDate(date);
170
+ } else {
171
+ var direction = date.isBefore(currentDate, "month") ? "prev" : "next";
172
+ setTargetDate(date);
173
+ setMonthTransitionDirection(direction);
174
+ }
175
+ switch (mode) {
176
+ case "daily":
177
+ handleDailySelection(date);
178
+ break;
179
+ case "weekly":
180
+ handleWeeklySelection(date);
181
+ break;
182
+ case "custom":
183
+ handleCustomSelection(date);
184
+ break;
185
+ default:
186
+ console.warn("Unhandled mode: ".concat(mode));
187
+ }
188
+ if (instant && mode !== "custom" && forceClose) toggleCalendar();
189
+ };
190
+ var handleDailySelection = function handleDailySelection(date) {
191
+ if (!date.isSame(selected === null || selected === void 0 ? void 0 : selected.from)) {
192
+ handleSelection({
193
+ from: date,
194
+ to: date
195
+ });
196
+ } else if (!required) {
197
+ handleSelection(undefined);
198
+ }
199
+ };
200
+ var handleWeeklySelection = function handleWeeklySelection(date) {
201
+ var _selected$from;
202
+ var currentDayOfWeek = date.day();
203
+ var daysToSubtract = (currentDayOfWeek - firstDayOfWeek + 7) % 7;
204
+ var startOfWeek = date.clone().subtract(daysToSubtract, "days").startOf("day");
205
+ var endOfWeek = startOfWeek.clone().add(6, "days");
206
+ if (!startOfWeek.isSame(selected === null || selected === void 0 || (_selected$from = selected.from) === null || _selected$from === void 0 ? void 0 : _selected$from.startOf("day"))) {
207
+ handleSelection({
208
+ from: startOfWeek,
209
+ to: endOfWeek
210
+ });
211
+ } else if (!required) {
212
+ handleSelection(undefined);
213
+ }
214
+ };
215
+ var handleCustomSelection = function handleCustomSelection(date) {
216
+ if (!selected || (selected === null || selected === void 0 ? void 0 : selected.from) === _momentTimezone.default.utc(Number(defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.from) * 1000)) {
217
+ setSelected({
218
+ from: date.utc(),
219
+ to: null
220
+ });
221
+ onChange && onChange({
222
+ from: date.utc().unix(),
223
+ to: date.utc().unix()
224
+ });
225
+ return;
226
+ }
227
+ if (_momentTimezone.default.isMoment(selected === null || selected === void 0 ? void 0 : selected.from) && !(selected !== null && selected !== void 0 && selected.to) && !(selected !== null && selected !== void 0 && selected.from.isSame(date.utc(), "day"))) {
228
+ var newSelection = selected !== null && selected !== void 0 && selected.from.isBefore(date) ? {
229
+ from: selected.from,
230
+ to: date.utc()
231
+ } : {
232
+ from: date.utc(),
233
+ to: selected.from
234
+ };
235
+ setSelected(newSelection);
236
+ onChange && onChange({
237
+ from: newSelection.from.utc().unix(),
238
+ to: newSelection.to.utc().unix()
239
+ });
240
+ } else if (_momentTimezone.default.isMoment(selected === null || selected === void 0 ? void 0 : selected.from) && _momentTimezone.default.isMoment(selected === null || selected === void 0 ? void 0 : selected.to)) {
241
+ setSelected({
242
+ from: date.utc(),
243
+ to: null
244
+ });
245
+ } else if (selected !== null && selected !== void 0 && selected.from.isSame(date.utc(), "day") && !required) {
246
+ setSelected(null);
247
+ onChange && onChange(undefined);
248
+ }
249
+ };
250
+ var handleSave = function handleSave() {
251
+ if (onSave) {
252
+ toggleCalendar();
253
+ if (mode === "custom" && !(selected !== null && selected !== void 0 && selected.to)) {
254
+ setSelected({
255
+ from: _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.from),
256
+ to: _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.from)
257
+ });
258
+ }
259
+ if (selected) {
260
+ onSave({
261
+ from: _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.from).unix(),
262
+ to: selected !== null && selected !== void 0 && selected.to ? _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.to).unix() : _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.from).unix()
263
+ });
264
+ } else {
265
+ if (!required) {
266
+ onSave(undefined);
267
+ setCurrentDate(_momentTimezone.default.utc());
268
+ setTargetDate(_momentTimezone.default.utc());
269
+ }
270
+ }
271
+ }
272
+ };
273
+ var handleMonthChange = (0, _react.useCallback)(function (direction) {
274
+ setMonthTransitionDirection(direction);
275
+ if (isMonthSelectOpen) {
276
+ setTargetDate(function (prevDate) {
277
+ return direction === "prev" ? prevDate.clone().subtract(1, "year") : prevDate.clone().add(1, "year");
278
+ });
279
+ if (disableAnimations) {
280
+ setCurrentDate(function (prevDate) {
281
+ return direction === "prev" ? prevDate.clone().subtract(1, "year") : prevDate.clone().add(1, "year");
282
+ });
283
+ }
284
+ } else {
285
+ setTargetDate(function (prevDate) {
286
+ return direction === "prev" ? prevDate.clone().subtract(1, "month") : prevDate.clone().add(1, "month");
287
+ });
288
+ if (disableAnimations) {
289
+ setCurrentDate(function (prevDate) {
290
+ return direction === "prev" ? prevDate.clone().subtract(1, "month") : prevDate.clone().add(1, "month");
291
+ });
292
+ }
293
+ }
294
+ }, [disableAnimations, isMonthSelectOpen]);
295
+ var onAnimationEnd = function onAnimationEnd() {
296
+ if (targetDate) {
297
+ setCurrentDate(targetDate);
298
+ setMonthTransitionDirection(null);
299
+ }
300
+ };
301
+ var handleYearSelect = function handleYearSelect(year) {
302
+ setCurrentDate(currentDate.clone().year(year));
303
+ setTargetDate(currentDate.clone().year(year));
304
+ setIsYearSelectOpen(false);
305
+ setIsMonthSelectOpen(true);
306
+ };
307
+ var handleMonthSelect = function handleMonthSelect(month) {
308
+ var newDate = currentDate.clone().utc().month(month);
309
+ setCurrentDate(newDate);
310
+ setTargetDate(newDate);
311
+ if (mode === "monthly") {
312
+ var _selected$to;
313
+ var _range = {
314
+ from: newDate.clone().startOf("month"),
315
+ to: newDate.clone().endOf("month").startOf("day")
316
+ };
317
+ var isSameMonth = (selected === null || selected === void 0 ? void 0 : selected.from.isSame(_range.from, "month")) && (selected === null || selected === void 0 || (_selected$to = selected.to) === null || _selected$to === void 0 ? void 0 : _selected$to.isSame(_range.to, "month"));
318
+ if (isSameMonth) {
319
+ if (!required) {
320
+ handleSelection(undefined);
321
+ if (instant && onSave) {
322
+ setCurrentDate(_momentTimezone.default.utc());
323
+ setTargetDate(_momentTimezone.default.utc());
324
+ }
325
+ }
326
+ } else {
327
+ handleSelection(_range);
328
+ }
329
+ }
330
+ if (mode === "quarterly") {
331
+ var _selected$to2;
332
+ var quarterRange = {
333
+ from: newDate.clone().startOf("quarter"),
334
+ to: newDate.clone().endOf("quarter").startOf("day")
335
+ };
336
+ var isSameQuarter = (selected === null || selected === void 0 ? void 0 : selected.from.isSame(quarterRange.from, "quarter")) && (selected === null || selected === void 0 || (_selected$to2 = selected.to) === null || _selected$to2 === void 0 ? void 0 : _selected$to2.isSame(quarterRange.to, "quarter"));
337
+ if (isSameQuarter) {
338
+ if (!required) {
339
+ handleSelection(undefined);
340
+ if (instant && onSave) {
341
+ setCurrentDate(_momentTimezone.default.utc());
342
+ setTargetDate(_momentTimezone.default.utc());
343
+ }
344
+ }
345
+ } else {
346
+ handleSelection(quarterRange);
347
+ }
348
+ }
349
+ if (mode !== "monthly" && mode !== "quarterly") {
350
+ setIsMonthSelectOpen(false);
351
+ }
352
+ if (instant && (mode === "monthly" || mode === "quarterly") && forceClose) toggleCalendar();
353
+ };
354
+ (0, _react.useEffect)(function () {
355
+ if (isYearSelectOpen && selectedYearRef.current) {
356
+ var _selectedYearRef$curr;
357
+ selectedYearRef === null || selectedYearRef === void 0 || (_selectedYearRef$curr = selectedYearRef.current) === null || _selectedYearRef$curr === void 0 || _selectedYearRef$curr.scrollIntoView({
358
+ behavior: "smooth",
359
+ block: "center"
360
+ });
361
+ }
362
+ }, [isYearSelectOpen]);
363
+ var renderDaysOfWeek = function renderDaysOfWeek() {
364
+ var daysOfWeek = _momentTimezone.default.weekdaysShort();
365
+ var orderedDays = [...daysOfWeek.slice(firstDayOfWeek), ...daysOfWeek.slice(0, firstDayOfWeek)];
366
+ return orderedDays.map(function (day) {
367
+ return /*#__PURE__*/_react.default.createElement(_StylesV.StyledDayName, {
368
+ key: day
369
+ }, day[0]);
370
+ });
371
+ };
372
+ var animationClass = (0, _react.useMemo)(function () {
373
+ return monthTransitionDirection && !disableAnimations ? monthTransitionDirection === "next" ? "slide-down" : "slide-up" : "";
374
+ }, [disableAnimations, monthTransitionDirection]);
375
+ var handleDayClick = function handleDayClick(day, modifiers) {
376
+ handleDateSelect(day);
377
+ if (onDayClick) onDayClick(day, modifiers);
378
+ };
379
+ var getHoverRange = function getHoverRange() {
380
+ if (!hoveredDate) return null;
381
+ if (mode === "quarterly") {
382
+ var startMonth = hoveredDate.clone().startOf("quarter");
383
+ var endMonth = hoveredDate.clone().endOf("quarter");
384
+ return {
385
+ from: startMonth,
386
+ to: endMonth
387
+ };
388
+ }
389
+ if (mode === "weekly") {
390
+ var currentDayOfWeek = hoveredDate.day();
391
+ var daysToSubtract = (currentDayOfWeek - firstDayOfWeek + 7) % 7;
392
+ var startOfWeek = hoveredDate.clone().subtract(daysToSubtract, "days").startOf("day");
393
+ var endOfWeek = startOfWeek.clone().add(6, "days");
394
+ return {
395
+ from: startOfWeek,
396
+ to: endOfWeek
397
+ };
398
+ }
399
+ if (mode === "custom" && selected !== null && selected !== void 0 && selected.from && !(selected !== null && selected !== void 0 && selected.to)) {
400
+ var from = selected.from.isBefore(hoveredDate) ? selected.from : hoveredDate;
401
+ var to = selected.from.isAfter(hoveredDate) ? selected.from : hoveredDate;
402
+ return {
403
+ from,
404
+ to
405
+ };
406
+ }
407
+ return null;
408
+ };
409
+ var renderCalendarDates = function renderCalendarDates() {
410
+ var startOfMonth = currentDate.clone().startOf("month");
411
+ var startDate = startOfMonth.clone().isoWeekday(firstDayOfWeek);
412
+ var endDate = startDate.clone().add(6, "weeks");
413
+ var date = startDate.clone();
414
+ var dates = [];
415
+ var hoverRange = getHoverRange();
416
+ var _loop = function _loop() {
417
+ var clonedDate = date.clone();
418
+ var isToday = clonedDate.isSame(today, "day");
419
+ var isSelected = selected && (clonedDate.isBetween(selected.from, selected.to, "day", "[]") || clonedDate.isSame(selected.from, "day") || clonedDate.isSame(selected.to, "day"));
420
+ var isHovered = hoverRange && (mode === "weekly" || mode === "custom") && clonedDate.isBetween(hoverRange.from, hoverRange.to, "day", "[]");
421
+ var isDisabled = disabledDaysBefore && clonedDate.isBefore(disabledDaysBefore, "day") || disabledDaysAfter && clonedDate.isAfter(disabledDaysAfter, "day") || disabledDays.includes(clonedDate.day());
422
+ var modifierClasses = [];
423
+ var modifierTitles = [];
424
+ var titles;
425
+ if (modifiers) Object.keys(modifiers || {}).forEach(function (modifier) {
426
+ var _modifiers$modifier = modifiers[modifier](clonedDate.toDate()),
427
+ matched = _modifiers$modifier.matched,
428
+ title = _modifiers$modifier.title;
429
+ if (matched) {
430
+ modifierClasses.push(modifier);
431
+ if (title) modifierTitles.push(title);
432
+ }
433
+ });
434
+ if (modifierTitles.length) {
435
+ titles = /*#__PURE__*/_react.default.createElement("div", {
436
+ key: "title-wrapper-".concat(clonedDate.toString())
437
+ }, modifierTitles.map(function (title, index) {
438
+ return /*#__PURE__*/_react.default.createElement("div", {
439
+ key: "title-text-".concat(index)
440
+ }, title);
441
+ }));
442
+ }
443
+ var isOutside = !clonedDate.isSame(currentDate, "month");
444
+ dates.push( /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
445
+ title: titles,
446
+ disable: !modifierTitles.length,
447
+ key: clonedDate.toString(),
448
+ popperTooltipClassName: popperTooltipClassName,
449
+ popperTooltipStyle: popperTooltipStyle
450
+ }, /*#__PURE__*/_react.default.createElement(_StylesV.StyledCalendarDate, {
451
+ className: "".concat(isSelected ? "selected" : "", " ").concat(isToday ? "today-day" : "", " \n ").concat(isDisabled ? "disabled" : "", " ").concat(isHovered ? "hovered" : "", " ").concat(modifierClasses.join(" "), " \n ").concat(isOutside ? "outside" : ""),
452
+ onClick: function onClick() {
453
+ return handleDayClick(clonedDate, modifierClasses);
454
+ },
455
+ onMouseEnter: mode === "weekly" || mode === "custom" ? function () {
456
+ return setHoveredDate(clonedDate);
457
+ } : undefined,
458
+ onMouseLeave: mode === "weekly" || mode === "custom" ? function () {
459
+ return setHoveredDate(null);
460
+ } : undefined
461
+ }, clonedDate.date())));
462
+ date.add(1, "day");
463
+ };
464
+ while (date.isBefore(endDate)) {
465
+ _loop();
466
+ }
467
+ return dates;
468
+ };
469
+ var renderYearSelect = function renderYearSelect() {
470
+ var years = Array.from({
471
+ length: 200
472
+ }, function (_, i) {
473
+ return 1900 + i;
474
+ });
475
+ return /*#__PURE__*/_react.default.createElement(_StylesV.StyledYearSelect, null, years.map(function (year) {
476
+ var isSelected = selected && ((selected === null || selected === void 0 ? void 0 : selected.to) && year >= selected.from.year() && year <= selected.to.year() || year === selected.from.year() || (selected === null || selected === void 0 ? void 0 : selected.to) && year === selected.to.year());
477
+ var isDisabledYear = disabledDaysBefore && year < disabledDaysBefore.year() || disabledDaysAfter && year > disabledDaysAfter.year();
478
+ return /*#__PURE__*/_react.default.createElement(_StylesV.StyledYearOption, {
479
+ key: year,
480
+ ref: year === currentDate.year() ? selectedYearRef : null,
481
+ className: "".concat(isSelected ? "selected" : "", " ").concat(year === today.year() ? "today-year" : "", " ").concat(isDisabledYear ? "disabled" : ""),
482
+ onClick: function onClick() {
483
+ return handleYearSelect(year);
484
+ }
485
+ }, year);
486
+ }));
487
+ };
488
+ var renderMonthSelect = function renderMonthSelect() {
489
+ var months = _momentTimezone.default.months();
490
+ var hoverRange = getHoverRange();
491
+ return /*#__PURE__*/_react.default.createElement(_StylesV.StyledMonthSelect, null, months.map(function (month, index) {
492
+ var monthDate = currentDate.clone().month(index);
493
+ var isSelected = selected && (monthDate.isBetween(selected.from, selected.to, "month", "[]") || monthDate.isSame(selected.from, "month") || monthDate.isSame(selected.to, "month"));
494
+ var isDisabledMonth = disabledDaysBefore && monthDate.isBefore(disabledDaysBefore, "month") || disabledDaysAfter && monthDate.isAfter(disabledDaysAfter, "month");
495
+ var isHoveredQuarter = hoverRange && mode === "quarterly" && monthDate.isBetween(hoverRange.from, hoverRange.to, "month", "[]");
496
+ return /*#__PURE__*/_react.default.createElement(_StylesV.StyledMonthOption, {
497
+ key: month,
498
+ className: "".concat(isSelected ? "selected" : "", " ").concat(index === today.month() && currentDate.year() === today.year() ? "today-month" : "", " ").concat(isDisabledMonth ? "disabled" : "", " ").concat(isHoveredQuarter ? "hovered" : ""),
499
+ onClick: function onClick() {
500
+ return handleMonthSelect(index);
501
+ },
502
+ onMouseEnter: mode === "quarterly" ? function () {
503
+ return setHoveredDate(monthDate);
504
+ } : undefined,
505
+ onMouseLeave: mode === "quarterly" ? function () {
506
+ return setHoveredDate(null);
507
+ } : undefined
508
+ }, month.substring(0, 3));
509
+ }));
510
+ };
511
+ var captionText = (0, _react.useMemo)(function () {
512
+ var isCurrentYear = currentDate.isSame(today, "year");
513
+ return !isMonthSelectOpen && !isYearSelectOpen ? "".concat(currentDate.format("MMMM")).concat(isCurrentYear ? "" : " ".concat(currentDate.format("YYYY"))) : currentDate.format("YYYY");
514
+ }, [currentDate, isMonthSelectOpen, isYearSelectOpen, today]);
515
+ var handleClear = (0, _react.useCallback)(function () {
516
+ if (typeof onClear === "function") onClear();
517
+ handleSelection(undefined);
518
+ }, [handleSelection, onClear]);
519
+ var handleClose = (0, _react.useCallback)(function () {
520
+ var _selected$to3;
521
+ if (mode === "custom" && instant && selected) {
522
+ setSelected({
523
+ from: _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.from),
524
+ to: selected !== null && selected !== void 0 && selected.to ? _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.to) : _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.from)
525
+ });
526
+ }
527
+ if (instant && onSave && mode === "custom" && selected && (!(selected !== null && selected !== void 0 && selected.from.isSame(_momentTimezone.default.utc(Number(defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.from) * 1000))) || !(selected !== null && selected !== void 0 && (_selected$to3 = selected.to) !== null && _selected$to3 !== void 0 && _selected$to3.isSame(_momentTimezone.default.utc(Number(defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.to) * 1000))))) {
528
+ onSave({
529
+ from: _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.from).unix(),
530
+ to: selected !== null && selected !== void 0 && selected.to ? _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.to).unix() : _momentTimezone.default.utc(selected === null || selected === void 0 ? void 0 : selected.from).unix()
531
+ });
532
+ }
533
+ if (mode === "custom" && instant && !selected && onSave) {
534
+ onSave(undefined);
535
+ }
536
+ setCurrentDate(defaultSelected !== null && defaultSelected !== void 0 && defaultSelected.from ? _momentTimezone.default.utc((defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.from) * 1000) : _momentTimezone.default.isMoment(month) ? month : _momentTimezone.default.utc());
537
+ setTargetDate(defaultSelected !== null && defaultSelected !== void 0 && defaultSelected.from ? _momentTimezone.default.utc((defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.from) * 1000) : _momentTimezone.default.isMoment(month) ? month : _momentTimezone.default.utc());
538
+ setSelected(defaultSelected ? {
539
+ from: _momentTimezone.default.utc(defaultSelected.from * 1000),
540
+ to: _momentTimezone.default.utc(Number(defaultSelected.to) * 1000)
541
+ } : null);
542
+ toggleCalendar();
543
+ setIsYearSelectOpen(false);
544
+ setIsMonthSelectOpen(mode === "monthly" || mode === "quarterly");
545
+ setMonthTransitionDirection(null);
546
+ if (typeof onClose === "function") onClose();
547
+ }, [defaultSelected, instant, mode, month, onClose, onSave, selected, toggleCalendar]);
548
+ var handleBeforeClose = (0, _react.useCallback)(function () {
549
+ var shouldClose = true;
550
+ if (!target || !enableConfirmModal || instant || required) {
551
+ shouldClose = true;
552
+ }
553
+ if (target && enableConfirmModal && !instant && !required && (selected && !defaultSelected || !selected && defaultSelected || selected !== null && selected !== void 0 && selected.from && defaultSelected !== null && defaultSelected !== void 0 && defaultSelected.from && !selected.from.isSame(_momentTimezone.default.utc(defaultSelected.from * 1000)) || selected !== null && selected !== void 0 && selected.to && defaultSelected !== null && defaultSelected !== void 0 && defaultSelected.to && !selected.to.isSame(_momentTimezone.default.utc(defaultSelected.to * 1000)))) {
554
+ shouldClose = false;
555
+ setShowDiscardModal(true);
556
+ }
557
+ if (shouldClose) handleClose();
558
+ return shouldClose;
559
+ }, [defaultSelected, enableConfirmModal, handleClose, instant, required, selected, target]);
560
+ var Wrapper = target ? _Menu.Menu : "div";
561
+ var handleCaptionClick = (0, _react.useCallback)(function () {
562
+ isMonthSelectOpen && !disableYearPicker ? toggleYearSelect() : toggleMonthSelect();
563
+ }, [disableYearPicker, isMonthSelectOpen, toggleMonthSelect, toggleYearSelect]);
564
+ var handleCloseDiscardModal = (0, _react.useCallback)(function () {
565
+ setShowDiscardModal(false);
566
+ }, []);
567
+ var handleSaveDiscardModal = (0, _react.useCallback)(function () {
568
+ setSelected(defaultSelected !== null && defaultSelected !== void 0 && defaultSelected.from ? {
569
+ from: _momentTimezone.default.utc(defaultSelected.from * 1000),
570
+ to: _momentTimezone.default.utc(Number(defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.to) * 1000)
571
+ } : null);
572
+ setShowDiscardModal(false);
573
+ handleClose();
574
+ }, [defaultSelected, handleClose]);
575
+ var wrapperProps = target ? {
576
+ className: "c-date-picker--calendar",
577
+ target,
578
+ onBeforeClose: handleBeforeClose,
579
+ onClose: handleClose,
580
+ open: isOpen,
581
+ onOpen: toggleCalendar,
582
+ position,
583
+ menuClassName,
584
+ popperClassName,
585
+ backgroundElementClass
586
+ } : {
587
+ className: "c-date-picker--calendar"
588
+ };
589
+ (0, _react.useEffect)(function () {
590
+ var handleKeyDown = function handleKeyDown(event) {
591
+ if (event.key === "ArrowRight") {
592
+ handleMonthChange("next");
593
+ } else if (event.key === "ArrowLeft") {
594
+ handleMonthChange("prev");
595
+ }
596
+ };
597
+ window.addEventListener("keydown", handleKeyDown);
598
+ return function () {
599
+ window.removeEventListener("keydown", handleKeyDown);
600
+ };
601
+ }, [handleMonthChange]);
602
+ return /*#__PURE__*/_react.default.createElement(_StylesV.StyledDatePickerWrapper, {
603
+ ref: datePickerRef
604
+ }, /*#__PURE__*/_react.default.createElement(Wrapper, wrapperProps, /*#__PURE__*/_react.default.createElement(_StylesV.StyledDatePickerContainerInner, null, /*#__PURE__*/_react.default.createElement(_StylesV.StyledCalendarHeader, null, isYearSelectOpen ? null : /*#__PURE__*/_react.default.createElement(_IconButton.IconButton, {
605
+ onClick: function onClick() {
606
+ return handleMonthChange("prev");
607
+ },
608
+ variant: "text gray",
609
+ size: "small"
610
+ }, /*#__PURE__*/_react.default.createElement(_Icons.ArrowLeftIcon, null)), /*#__PURE__*/_react.default.createElement(_StylesV.StyledCaption, {
611
+ className: "".concat(animationClass, " ").concat(isYearSelectOpen ? "year-caption" : ""),
612
+ key: isMonthSelectOpen ? currentDate.year() : currentDate.month(),
613
+ onClick: handleCaptionClick,
614
+ onAnimationEnd: onAnimationEnd
615
+ }, captionText), isYearSelectOpen ? null : /*#__PURE__*/_react.default.createElement(_IconButton.IconButton, {
616
+ onClick: function onClick() {
617
+ return handleMonthChange("next");
618
+ },
619
+ variant: "text gray",
620
+ size: "small"
621
+ }, /*#__PURE__*/_react.default.createElement(_Icons.ArrowRightIcon, null))), /*#__PURE__*/_react.default.createElement(_StylesV.StyledCalendarSelector, null, isYearSelectOpen ? renderYearSelect() : isMonthSelectOpen ? /*#__PURE__*/_react.default.createElement(_StylesV.StyledMonthSelector, {
622
+ className: animationClass,
623
+ key: currentDate.year(),
624
+ onAnimationEnd: onAnimationEnd
625
+ }, renderMonthSelect()) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_StylesV.StyledDaysOfWeek, null, renderDaysOfWeek()), /*#__PURE__*/_react.default.createElement(_StylesV.StyledCalendarDates, {
626
+ className: animationClass,
627
+ key: currentDate.month()
628
+ }, renderCalendarDates()))), (target || showControls) && (!instant ? /*#__PURE__*/_react.default.createElement(_StylesV.StyledControls, null, /*#__PURE__*/_react.default.createElement(_StylesV.StyledControlsLeft, null, /*#__PURE__*/_react.default.createElement(_Button.Button, {
629
+ size: "small",
630
+ variant: "primary",
631
+ onClick: handleSave,
632
+ disabled: (selected === null || selected === void 0 ? void 0 : selected.from.isSame(_momentTimezone.default.utc(Number(defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.from) * 1000))) && (selected === null || selected === void 0 || (_selected$to4 = selected.to) === null || _selected$to4 === void 0 ? void 0 : _selected$to4.isSame(_momentTimezone.default.utc(Number(defaultSelected === null || defaultSelected === void 0 ? void 0 : defaultSelected.to) * 1000))) || !defaultSelected && !selected
633
+ }, saveLabel), /*#__PURE__*/_react.default.createElement(_Tooltip.Tooltip, {
634
+ title: cancelLabel,
635
+ popperTooltipStyle: {
636
+ zIndex: 1301
637
+ }
638
+ }, /*#__PURE__*/_react.default.createElement(_IconButton.IconButton, {
639
+ size: "small",
640
+ variant: "text gray",
641
+ onClick: handleBeforeClose
642
+ }, /*#__PURE__*/_react.default.createElement(_Icons.CancelCrossIcon, null)))), !required ? /*#__PURE__*/_react.default.createElement(_Button.Button, {
643
+ size: "small",
644
+ onClick: handleClear,
645
+ variant: "text gray"
646
+ }, clearLabel) : null) : !required ? /*#__PURE__*/_react.default.createElement(_StylesV.StyledControls, null, /*#__PURE__*/_react.default.createElement(_StylesV.StyledClearInstantButton, {
647
+ size: "small",
648
+ onClick: handleClear,
649
+ variant: "text gray"
650
+ }, clearLabel)) : null))), !instant && target && !required && enableConfirmModal ? /*#__PURE__*/_react.default.createElement(_StylesV.StyledConfirmDialog, {
651
+ className: "modal-select-date",
652
+ open: showDiscardModal,
653
+ onCancel: handleCloseDiscardModal,
654
+ onConfirm: handleSaveDiscardModal,
655
+ dialogTitle: modalHeaderText,
656
+ dialogContent: modalDiscardMessage,
657
+ cancelBtnText: modalCancelBtnText,
658
+ confirmBtnText: modalDiscardBtnText
659
+ }) : null);
660
+ };
661
+ //# sourceMappingURL=DatePickerV2.js.map