@bigbinary/neeto-molecules 1.1.1 → 1.1.3

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.
@@ -0,0 +1,598 @@
1
+ import React, { forwardRef, useState, useRef, useEffect } from 'react';
2
+ import dayGridPlugin from '@fullcalendar/daygrid';
3
+ import interactionPlugin from '@fullcalendar/interaction';
4
+ import FullCalendar from '@fullcalendar/react';
5
+ import timeGridPlugin from '@fullcalendar/timegrid';
6
+ import dayjs from 'dayjs';
7
+ import { isNotPresent, capitalize, noop } from '@bigbinary/neeto-commons-frontend/pure';
8
+ import { Button, Typography, DatePicker, Dropdown } from '@bigbinary/neetoui';
9
+ import { useTranslation } from 'react-i18next';
10
+ import { not, prop, values } from 'ramda';
11
+ import { Column, Download, Filter, Left, Down, Right } from '@bigbinary/neeto-icons';
12
+ import ManageColumns from '@bigbinary/neeto-molecules/Columns';
13
+ import { Filters } from '@bigbinary/neeto-filters-frontend';
14
+ import { t as t$1 } from 'i18next';
15
+
16
+ function _extends() {
17
+ _extends = Object.assign ? Object.assign.bind() : function (target) {
18
+ for (var i = 1; i < arguments.length; i++) {
19
+ var source = arguments[i];
20
+ for (var key in source) {
21
+ if (Object.prototype.hasOwnProperty.call(source, key)) {
22
+ target[key] = source[key];
23
+ }
24
+ }
25
+ }
26
+ return target;
27
+ };
28
+ return _extends.apply(this, arguments);
29
+ }
30
+
31
+ function _typeof(obj) {
32
+ "@babel/helpers - typeof";
33
+
34
+ return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
35
+ return typeof obj;
36
+ } : function (obj) {
37
+ return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
38
+ }, _typeof(obj);
39
+ }
40
+
41
+ function _toPrimitive(input, hint) {
42
+ if (_typeof(input) !== "object" || input === null) return input;
43
+ var prim = input[Symbol.toPrimitive];
44
+ if (prim !== undefined) {
45
+ var res = prim.call(input, hint || "default");
46
+ if (_typeof(res) !== "object") return res;
47
+ throw new TypeError("@@toPrimitive must return a primitive value.");
48
+ }
49
+ return (hint === "string" ? String : Number)(input);
50
+ }
51
+
52
+ function _toPropertyKey(arg) {
53
+ var key = _toPrimitive(arg, "string");
54
+ return _typeof(key) === "symbol" ? key : String(key);
55
+ }
56
+
57
+ function _defineProperty(obj, key, value) {
58
+ key = _toPropertyKey(key);
59
+ if (key in obj) {
60
+ Object.defineProperty(obj, key, {
61
+ value: value,
62
+ enumerable: true,
63
+ configurable: true,
64
+ writable: true
65
+ });
66
+ } else {
67
+ obj[key] = value;
68
+ }
69
+ return obj;
70
+ }
71
+
72
+ function _arrayWithHoles(arr) {
73
+ if (Array.isArray(arr)) return arr;
74
+ }
75
+
76
+ function _iterableToArrayLimit(arr, i) {
77
+ var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
78
+ if (null != _i) {
79
+ var _s,
80
+ _e,
81
+ _x,
82
+ _r,
83
+ _arr = [],
84
+ _n = !0,
85
+ _d = !1;
86
+ try {
87
+ if (_x = (_i = _i.call(arr)).next, 0 === i) {
88
+ if (Object(_i) !== _i) return;
89
+ _n = !1;
90
+ } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
91
+ } catch (err) {
92
+ _d = !0, _e = err;
93
+ } finally {
94
+ try {
95
+ if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
96
+ } finally {
97
+ if (_d) throw _e;
98
+ }
99
+ }
100
+ return _arr;
101
+ }
102
+ }
103
+
104
+ function _arrayLikeToArray(arr, len) {
105
+ if (len == null || len > arr.length) len = arr.length;
106
+ for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
107
+ return arr2;
108
+ }
109
+
110
+ function _unsupportedIterableToArray(o, minLen) {
111
+ if (!o) return;
112
+ if (typeof o === "string") return _arrayLikeToArray(o, minLen);
113
+ var n = Object.prototype.toString.call(o).slice(8, -1);
114
+ if (n === "Object" && o.constructor) n = o.constructor.name;
115
+ if (n === "Map" || n === "Set") return Array.from(o);
116
+ if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
117
+ }
118
+
119
+ function _nonIterableRest() {
120
+ throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
121
+ }
122
+
123
+ function _slicedToArray(arr, i) {
124
+ return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
125
+ }
126
+
127
+ function _objectWithoutPropertiesLoose(source, excluded) {
128
+ if (source == null) return {};
129
+ var target = {};
130
+ var sourceKeys = Object.keys(source);
131
+ var key, i;
132
+ for (i = 0; i < sourceKeys.length; i++) {
133
+ key = sourceKeys[i];
134
+ if (excluded.indexOf(key) >= 0) continue;
135
+ target[key] = source[key];
136
+ }
137
+ return target;
138
+ }
139
+
140
+ function _objectWithoutProperties(source, excluded) {
141
+ if (source == null) return {};
142
+ var target = _objectWithoutPropertiesLoose(source, excluded);
143
+ var key, i;
144
+ if (Object.getOwnPropertySymbols) {
145
+ var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
146
+ for (i = 0; i < sourceSymbolKeys.length; i++) {
147
+ key = sourceSymbolKeys[i];
148
+ if (excluded.indexOf(key) >= 0) continue;
149
+ if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
150
+ target[key] = source[key];
151
+ }
152
+ }
153
+ return target;
154
+ }
155
+
156
+ var classnames$1 = {exports: {}};
157
+
158
+ /*!
159
+ Copyright (c) 2018 Jed Watson.
160
+ Licensed under the MIT License (MIT), see
161
+ http://jedwatson.github.io/classnames
162
+ */
163
+
164
+ (function (module) {
165
+ /* global define */
166
+
167
+ (function () {
168
+
169
+ var hasOwn = {}.hasOwnProperty;
170
+
171
+ function classNames() {
172
+ var classes = [];
173
+
174
+ for (var i = 0; i < arguments.length; i++) {
175
+ var arg = arguments[i];
176
+ if (!arg) continue;
177
+
178
+ var argType = typeof arg;
179
+
180
+ if (argType === 'string' || argType === 'number') {
181
+ classes.push(arg);
182
+ } else if (Array.isArray(arg)) {
183
+ if (arg.length) {
184
+ var inner = classNames.apply(null, arg);
185
+ if (inner) {
186
+ classes.push(inner);
187
+ }
188
+ }
189
+ } else if (argType === 'object') {
190
+ if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
191
+ classes.push(arg.toString());
192
+ continue;
193
+ }
194
+
195
+ for (var key in arg) {
196
+ if (hasOwn.call(arg, key) && arg[key]) {
197
+ classes.push(key);
198
+ }
199
+ }
200
+ }
201
+ }
202
+
203
+ return classes.join(' ');
204
+ }
205
+
206
+ if (module.exports) {
207
+ classNames.default = classNames;
208
+ module.exports = classNames;
209
+ } else {
210
+ window.classNames = classNames;
211
+ }
212
+ }());
213
+ } (classnames$1));
214
+
215
+ var classnames = classnames$1.exports;
216
+
217
+ var _excluded$3 = ["buttonProps"];
218
+ function ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
219
+ function _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
220
+ var Columns = /*#__PURE__*/forwardRef(function (_ref, ref) {
221
+ var _ref$buttonProps = _ref.buttonProps,
222
+ buttonProps = _ref$buttonProps === void 0 ? {} : _ref$buttonProps,
223
+ props = _objectWithoutProperties(_ref, _excluded$3);
224
+ var _useTranslation = useTranslation(),
225
+ t = _useTranslation.t;
226
+ return /*#__PURE__*/React.createElement("div", {
227
+ className: "neeto-molecules-subheader__columns"
228
+ }, /*#__PURE__*/React.createElement(ManageColumns, _extends({
229
+ buttonProps: _objectSpread$3({
230
+ icon: Column,
231
+ label: null,
232
+ tooltipProps: {
233
+ content: t("neetoMolecules.columns.columns"),
234
+ position: "bottom"
235
+ },
236
+ "data-testid": "columns-button",
237
+ "data-cy": "columns-dropdown-button"
238
+ }, buttonProps)
239
+ }, _objectSpread$3(_objectSpread$3({}, props), {}, {
240
+ ref: ref
241
+ }))));
242
+ });
243
+ Columns.displayName = "Columns";
244
+
245
+ var DownloadButton = function DownloadButton(_ref) {
246
+ var count = _ref.count,
247
+ onClick = _ref.onClick,
248
+ _ref$dataCy = _ref["data-cy"],
249
+ dataCy = _ref$dataCy === void 0 ? "download-button" : _ref$dataCy;
250
+ var _useTranslation = useTranslation(),
251
+ t = _useTranslation.t;
252
+ return /*#__PURE__*/React.createElement("div", {
253
+ className: "neeto-molecules-subheader__download"
254
+ }, /*#__PURE__*/React.createElement(Button, {
255
+ "data-cy": dataCy,
256
+ "data-testid": "download-button",
257
+ icon: Download,
258
+ style: "text",
259
+ tooltipProps: {
260
+ content: t("neetoMolecules.common.download"),
261
+ position: "bottom"
262
+ },
263
+ onClick: onClick
264
+ }), count && /*#__PURE__*/React.createElement("span", {
265
+ className: "neeto-molecules-subheader__download-count"
266
+ }, count));
267
+ };
268
+
269
+ var _excluded$2 = ["buttonProps"];
270
+ function ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
271
+ function _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
272
+ var FilterButton = function FilterButton(_ref) {
273
+ var buttonProps = _ref.buttonProps,
274
+ props = _objectWithoutProperties(_ref, _excluded$2);
275
+ var _useTranslation = useTranslation(),
276
+ t = _useTranslation.t;
277
+ return /*#__PURE__*/React.createElement("div", {
278
+ className: "neeto-molecules-subheader__filter"
279
+ }, /*#__PURE__*/React.createElement(Filters, _extends({
280
+ buttonProps: _objectSpread$2({
281
+ "data-testid": "filter-button",
282
+ icon: Filter,
283
+ style: "text",
284
+ tooltipProps: {
285
+ content: t("neetoMolecules.common.filter"),
286
+ position: "bottom"
287
+ },
288
+ label: null
289
+ }, buttonProps)
290
+ }, props)));
291
+ };
292
+
293
+ var RightBlock = function RightBlock(_ref) {
294
+ var downloadButtonProps = _ref.downloadButtonProps,
295
+ columnsButtonProps = _ref.columnsButtonProps,
296
+ filterProps = _ref.filterProps,
297
+ dataProps = _ref.dataProps;
298
+ var showIcons = isNotPresent(dataProps === null || dataProps === void 0 ? void 0 : dataProps.totalCount) ? true : (dataProps === null || dataProps === void 0 ? void 0 : dataProps.totalCount) > 0;
299
+ return /*#__PURE__*/React.createElement("div", {
300
+ "data-testid": "subheader-rightblock-buttons-container",
301
+ className: classnames("neeto-molecules-subheader__right-actions", {
302
+ hidden: not(showIcons)
303
+ })
304
+ }, downloadButtonProps && /*#__PURE__*/React.createElement(DownloadButton, downloadButtonProps), columnsButtonProps && /*#__PURE__*/React.createElement(Columns, columnsButtonProps), filterProps && /*#__PURE__*/React.createElement(FilterButton, filterProps));
305
+ };
306
+
307
+ var e=[],t=[];function n(n,r){if(n&&"undefined"!=typeof document){var a,s=!0===r.prepend?"prepend":"append",d=!0===r.singleTag,i="string"==typeof r.container?document.querySelector(r.container):document.getElementsByTagName("head")[0];if(d){var u=e.indexOf(i);-1===u&&(u=e.push(i)-1,t[u]={}),a=t[u]&&t[u][s]?t[u][s]:t[u][s]=c();}else a=c();65279===n.charCodeAt(0)&&(n=n.substring(1)),a.styleSheet?a.styleSheet.cssText+=n:a.appendChild(document.createTextNode(n));}function c(){var e=document.createElement("style");if(e.setAttribute("type","text/css"),r.attributes)for(var t=Object.keys(r.attributes),n=0;n<t.length;n++)e.setAttribute(t[n],r.attributes[t[n]]);var a="prepend"===s?"afterbegin":"beforeend";return i.insertAdjacentElement(a,e),e}}
308
+
309
+ var css = ":root{--neeto-molecules-sub-header-height:37px;--neeto-molecules-sub-header-bottom-margin:20px}.neeto-molecules-subheader{align-items:center;background-color:rgb(var(--neeto-ui-white));display:flex;flex-direction:row;justify-content:space-between;margin-bottom:20px;margin-bottom:var(--neeto-molecules-sub-header-bottom-margin);min-height:37px;min-height:var(--neeto-molecules-sub-header-height);width:100%}.neeto-molecules-subheader .neeto-molecules-subheader__left-wrapper{display:flex;flex-grow:1}.neeto-molecules-subheader .neeto-molecules-subheader__left-wrapper .neeto-molecules-subheader__left{align-items:center;display:flex;flex-direction:row;justify-content:flex-start}.neeto-molecules-subheader .neeto-molecules-subheader__left-wrapper .neeto-molecules-subheader__left .neeto-molecules-input__prefix{color:rgb(var(--neeto-ui-gray-400))}.neeto-molecules-subheader .neeto-molecules-subheader__right{align-items:center;display:flex;flex-direction:row;gap:12px;justify-content:flex-end}.neeto-molecules-subheader .neeto-molecules-subheader__right-actions{align-items:center;display:flex;flex-direction:row;gap:8px;justify-content:flex-end}.neeto-molecules-subheader .neeto-molecules-subheader__right-actions>:not([hidden])~:not([hidden]){border-left:thin solid rgb(var(--neeto-ui-gray-300));padding-left:8px}.neeto-molecules-subheader__download{position:relative}.neeto-molecules-subheader__download-count{align-items:center;background-color:rgb(var(--neeto-ui-primary-500));border-radius:var(--neeto-ui-rounded-full);color:rgb(var(--neeto-ui-white));display:inline-flex;font-size:10px;justify-content:center;min-height:16px;min-width:16px;position:absolute;right:-2px;text-align:center;top:-2px;z-index:1}";
310
+ n(css,{});
311
+
312
+ var SubHeader = function SubHeader(_ref) {
313
+ var _ref$className = _ref.className,
314
+ className = _ref$className === void 0 ? "" : _ref$className,
315
+ leftActionBlock = _ref.leftActionBlock,
316
+ rightActionBlock = _ref.rightActionBlock,
317
+ _ref$dataCy = _ref["data-cy"],
318
+ dataCy = _ref$dataCy === void 0 ? "subheader" : _ref$dataCy;
319
+ return /*#__PURE__*/React.createElement("div", {
320
+ className: classnames(["neeto-molecules-subheader", className]),
321
+ "data-cy": dataCy,
322
+ "data-testid": "subheader"
323
+ }, /*#__PURE__*/React.createElement("div", {
324
+ className: "neeto-molecules-subheader__left-wrapper",
325
+ "data-cy": "subheader-left-wrapper"
326
+ }, leftActionBlock && /*#__PURE__*/React.createElement("div", {
327
+ className: "neeto-molecules-subheader__left",
328
+ "data-cy": "subheader-left"
329
+ }, leftActionBlock)), rightActionBlock && /*#__PURE__*/React.createElement("div", {
330
+ className: "neeto-molecules-subheader__right",
331
+ "data-cy": "subheader-right"
332
+ }, rightActionBlock));
333
+ };
334
+ SubHeader.RightBlock = RightBlock;
335
+
336
+ var _VIEW_OPTIONS;
337
+ var WEEKLY_VIEW = t$1("neetoMolecules.calendarView.weekly");
338
+ var MONTHLY_VIEW = t$1("neetoMolecules.calendarView.monthly");
339
+ var DAILY_VIEW = t$1("neetoMolecules.calendarView.daily");
340
+ var VIEW_OPTIONS = (_VIEW_OPTIONS = {}, _defineProperty(_VIEW_OPTIONS, DAILY_VIEW, {
341
+ label: DAILY_VIEW,
342
+ fullCalendarView: "timeGridDay",
343
+ picker: "day"
344
+ }), _defineProperty(_VIEW_OPTIONS, WEEKLY_VIEW, {
345
+ label: WEEKLY_VIEW,
346
+ fullCalendarView: "timeGridWeek",
347
+ picker: "week"
348
+ }), _defineProperty(_VIEW_OPTIONS, MONTHLY_VIEW, {
349
+ label: MONTHLY_VIEW,
350
+ fullCalendarView: "dayGridMonth",
351
+ picker: "month"
352
+ }), _VIEW_OPTIONS);
353
+
354
+ var getWeekString = function getWeekString(_ref) {
355
+ var date = _ref.date,
356
+ _ref$isStartOfWeek = _ref.isStartOfWeek,
357
+ isStartOfWeek = _ref$isStartOfWeek === void 0 ? true : _ref$isStartOfWeek,
358
+ _ref$showMonth = _ref.showMonth,
359
+ showMonth = _ref$showMonth === void 0 ? false : _ref$showMonth,
360
+ _ref$showYear = _ref.showYear,
361
+ showYear = _ref$showYear === void 0 ? false : _ref$showYear;
362
+ return "".concat(showMonth || isStartOfWeek ? date.format("MMM") : "", " ").concat(date.date(), " ").concat(showYear || !isStartOfWeek ? date.format("YYYY") : "");
363
+ };
364
+ var getStartOfWeek = function getStartOfWeek(date) {
365
+ return dayjs(date).startOf("week");
366
+ };
367
+ var getEndOfWeek = function getEndOfWeek(date) {
368
+ return dayjs(date).endOf("week");
369
+ };
370
+ var getFormattedMonthStr = function getFormattedMonthStr(date) {
371
+ return date.format("MMM YYYY");
372
+ };
373
+ var getFormattedWeekRangeStr = function getFormattedWeekRangeStr(date) {
374
+ var startOfWeek = getStartOfWeek(date);
375
+ var endOfWeek = getEndOfWeek(date);
376
+ var shouldShowMonthsSeparately = startOfWeek.month() !== endOfWeek.month();
377
+ var shouldShowYearsSeparately = startOfWeek.year() !== endOfWeek.year();
378
+ var startOfWeekStr = getWeekString({
379
+ date: startOfWeek,
380
+ showMonth: shouldShowMonthsSeparately,
381
+ showYear: shouldShowYearsSeparately
382
+ });
383
+ var endOfWeekStr = getWeekString({
384
+ date: endOfWeek,
385
+ isStartOfWeek: false,
386
+ showMonth: shouldShowMonthsSeparately,
387
+ showYear: shouldShowYearsSeparately
388
+ });
389
+ return "".concat(startOfWeekStr, " - ").concat(endOfWeekStr);
390
+ };
391
+ var getFormattedDayStr = function getFormattedDayStr(date) {
392
+ return date.format("DD MMM YYYY");
393
+ };
394
+ var getFormattedRangeStr = function getFormattedRangeStr(date, picker) {
395
+ var formatFunctions = {
396
+ month: getFormattedMonthStr,
397
+ week: getFormattedWeekRangeStr,
398
+ day: getFormattedDayStr
399
+ };
400
+ var selectedFormatter = formatFunctions[picker];
401
+ return selectedFormatter(date);
402
+ };
403
+
404
+ var _excluded$1 = ["selectedDate", "setSelectedDate", "picker"];
405
+ function ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
406
+ function _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
407
+ var CustomDatePicker = function CustomDatePicker(_ref) {
408
+ var selectedDate = _ref.selectedDate,
409
+ setSelectedDate = _ref.setSelectedDate,
410
+ picker = _ref.picker,
411
+ otherProps = _objectWithoutProperties(_ref, _excluded$1);
412
+ var _useState = useState(false),
413
+ _useState2 = _slicedToArray(_useState, 2),
414
+ isOpen = _useState2[0],
415
+ setIsOpen = _useState2[1];
416
+ var datePickerRef = useRef(null);
417
+ var buttonRef = useRef(null);
418
+ var selectedRangeStr = getFormattedRangeStr(selectedDate, picker);
419
+ var onPrevious = function onPrevious() {
420
+ return setSelectedDate(function (selectedDate) {
421
+ return selectedDate.subtract(1, picker);
422
+ });
423
+ };
424
+ var onNext = function onNext() {
425
+ return setSelectedDate(function (selectedDate) {
426
+ return selectedDate.add(1, picker);
427
+ });
428
+ };
429
+ var onToday = function onToday() {
430
+ return setSelectedDate(dayjs());
431
+ };
432
+ var handleButtonMouseDown = function handleButtonMouseDown(e) {
433
+ if (buttonRef.current && buttonRef.current.contains(e.target)) {
434
+ e.stopPropagation();
435
+ if (isOpen) datePickerRef.current.focus();
436
+ }
437
+ };
438
+ return /*#__PURE__*/React.createElement("div", {
439
+ className: "flex items-center justify-start space-x-4"
440
+ }, /*#__PURE__*/React.createElement(Button, {
441
+ label: "Today",
442
+ style: "secondary",
443
+ onClick: onToday
444
+ }), /*#__PURE__*/React.createElement("div", {
445
+ className: "flex"
446
+ }, /*#__PURE__*/React.createElement(Button, {
447
+ className: "mr-1",
448
+ icon: Left,
449
+ style: "text",
450
+ onClick: onPrevious
451
+ }), /*#__PURE__*/React.createElement(Button, {
452
+ icon: Down,
453
+ ref: buttonRef,
454
+ style: "text",
455
+ onClick: function onClick() {
456
+ return setIsOpen(function (isOpen) {
457
+ return !isOpen;
458
+ });
459
+ },
460
+ onMouseDown: handleButtonMouseDown
461
+ }, /*#__PURE__*/React.createElement(Typography, {
462
+ style: "h5"
463
+ }, selectedRangeStr)), /*#__PURE__*/React.createElement(DatePicker, _extends({
464
+ className: "invisible w-0 px-0",
465
+ defaultValue: selectedDate,
466
+ open: isOpen,
467
+ placement: "topRight",
468
+ ref: datePickerRef,
469
+ value: selectedDate,
470
+ onChange: setSelectedDate,
471
+ onOpenChange: setIsOpen
472
+ }, _objectSpread$1({
473
+ picker: picker
474
+ }, otherProps))), /*#__PURE__*/React.createElement(Button, {
475
+ className: "ml-1",
476
+ icon: Right,
477
+ style: "text",
478
+ onClick: onNext
479
+ })));
480
+ };
481
+
482
+ var Header = function Header(_ref) {
483
+ var calendarRef = _ref.calendarRef,
484
+ selectedView = _ref.selectedView,
485
+ setSelectedView = _ref.setSelectedView,
486
+ setSelectedDate = _ref.setSelectedDate,
487
+ selectedDate = _ref.selectedDate,
488
+ calenderViewOptions = _ref.calenderViewOptions;
489
+ var Menu = Dropdown.Menu,
490
+ MenuItem = Dropdown.MenuItem;
491
+ var handleViewSelection = function handleViewSelection(option) {
492
+ setSelectedView(option);
493
+ calendarRef.current.calendar.changeView(option.fullCalendarView);
494
+ };
495
+ var navigateToSelectedDate = function navigateToSelectedDate() {
496
+ var _calendarRef$current, _calendarRef$current$;
497
+ return calendarRef === null || calendarRef === void 0 ? void 0 : (_calendarRef$current = calendarRef.current) === null || _calendarRef$current === void 0 ? void 0 : (_calendarRef$current$ = _calendarRef$current.calendar) === null || _calendarRef$current$ === void 0 ? void 0 : _calendarRef$current$.gotoDate(selectedDate.format("YYYY-MM-DD"));
498
+ };
499
+ useEffect(function () {
500
+ setTimeout(navigateToSelectedDate);
501
+ }, [selectedDate]);
502
+ return /*#__PURE__*/React.createElement("div", {
503
+ className: "flex space-x-4"
504
+ }, /*#__PURE__*/React.createElement(CustomDatePicker, {
505
+ getPopupContainer: prop("parentNode"),
506
+ picker: selectedView.picker,
507
+ selectedDate: selectedDate,
508
+ setSelectedDate: setSelectedDate
509
+ }), Object.keys(calenderViewOptions).length === 1 ? /*#__PURE__*/React.createElement(Button, {
510
+ className: "pointer-events-none",
511
+ label: calenderViewOptions[Object.keys(calenderViewOptions)[0]].label,
512
+ style: "secondary"
513
+ }) : /*#__PURE__*/React.createElement(Dropdown, {
514
+ buttonProps: {
515
+ "data-testid": "calendar-view-dropdown"
516
+ },
517
+ buttonStyle: "secondary",
518
+ label: capitalize(selectedView.label)
519
+ }, /*#__PURE__*/React.createElement(Menu, null, values(calenderViewOptions).map(function (option, idx) {
520
+ return /*#__PURE__*/React.createElement(MenuItem.Button, {
521
+ isActive: selectedView === option,
522
+ key: idx,
523
+ onClick: function onClick() {
524
+ return handleViewSelection(option);
525
+ }
526
+ }, capitalize(option.label));
527
+ }))));
528
+ };
529
+
530
+ var _excluded = ["viewOptions", "events", "handleDateClick", "handleEventClick", "eventClassNames", "dayCellClassNames", "dayMaxEvents", "eventMaxStack"];
531
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
532
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
533
+ var CalendarView = function CalendarView(_ref) {
534
+ var _ref$viewOptions = _ref.viewOptions,
535
+ viewOptions = _ref$viewOptions === void 0 ? VIEW_OPTIONS : _ref$viewOptions,
536
+ _ref$events = _ref.events,
537
+ events = _ref$events === void 0 ? [] : _ref$events,
538
+ _ref$handleDateClick = _ref.handleDateClick,
539
+ handleDateClick = _ref$handleDateClick === void 0 ? noop : _ref$handleDateClick,
540
+ _ref$handleEventClick = _ref.handleEventClick,
541
+ handleEventClick = _ref$handleEventClick === void 0 ? noop : _ref$handleEventClick,
542
+ _ref$eventClassNames = _ref.eventClassNames,
543
+ eventClassNames = _ref$eventClassNames === void 0 ? "" : _ref$eventClassNames,
544
+ _ref$dayCellClassName = _ref.dayCellClassNames,
545
+ dayCellClassNames = _ref$dayCellClassName === void 0 ? "" : _ref$dayCellClassName,
546
+ dayMaxEvents = _ref.dayMaxEvents,
547
+ eventMaxStack = _ref.eventMaxStack,
548
+ otherProps = _objectWithoutProperties(_ref, _excluded);
549
+ var calenderViewOptions = viewOptions || VIEW_OPTIONS;
550
+ var _useState = useState(calenderViewOptions[Object.keys(calenderViewOptions)[0]]),
551
+ _useState2 = _slicedToArray(_useState, 2),
552
+ selectedView = _useState2[0],
553
+ setSelectedView = _useState2[1];
554
+ var _useState3 = useState(dayjs()),
555
+ _useState4 = _slicedToArray(_useState3, 2),
556
+ selectedDate = _useState4[0],
557
+ setSelectedDate = _useState4[1];
558
+ var _useTranslation = useTranslation(),
559
+ t = _useTranslation.t;
560
+ var calendarRef = useRef();
561
+ return /*#__PURE__*/React.createElement("div", {
562
+ className: "flex-col",
563
+ "data-testid": "calendar-view"
564
+ }, /*#__PURE__*/React.createElement(SubHeader, {
565
+ leftActionBlock: /*#__PURE__*/React.createElement(Typography, {
566
+ style: "h2"
567
+ }, selectedDate.format("MMMM, YYYY")),
568
+ rightActionBlock: /*#__PURE__*/React.createElement(Header, {
569
+ calendarRef: calendarRef,
570
+ calenderViewOptions: calenderViewOptions,
571
+ selectedDate: selectedDate,
572
+ selectedView: selectedView,
573
+ setSelectedDate: setSelectedDate,
574
+ setSelectedView: setSelectedView
575
+ })
576
+ }), /*#__PURE__*/React.createElement(FullCalendar, _extends({
577
+ expandRows: true,
578
+ allDayText: t("neetoMolecules.calendarView.allDay"),
579
+ dateClick: handleDateClick,
580
+ dayHeaderClassNames: "p-2",
581
+ displayEventTime: false,
582
+ eventClick: handleEventClick,
583
+ headerToolbar: false,
584
+ height: "auto",
585
+ initialView: selectedView.fullCalendarView,
586
+ plugins: [dayGridPlugin, timeGridPlugin, interactionPlugin],
587
+ ref: calendarRef
588
+ }, _objectSpread({
589
+ dayCellClassNames: dayCellClassNames,
590
+ dayMaxEvents: dayMaxEvents,
591
+ eventClassNames: eventClassNames,
592
+ eventMaxStack: eventMaxStack,
593
+ events: events
594
+ }, otherProps))));
595
+ };
596
+
597
+ export { CalendarView as default };
598
+ //# sourceMappingURL=CalendarView.js.map