@bigbinary/neeto-molecules 1.1.0 → 1.1.2
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.
- package/README.md +1 -0
- package/dist/CalendarView.cjs.js +610 -0
- package/dist/CalendarView.cjs.js.map +1 -0
- package/dist/CalendarView.js +598 -0
- package/dist/CalendarView.js.map +1 -0
- package/dist/CustomDomainDashboard.cjs.js.map +1 -1
- package/dist/CustomDomainDashboard.js.map +1 -1
- package/dist/NavigationHeader.cjs.js +7 -3
- package/dist/NavigationHeader.cjs.js.map +1 -1
- package/dist/NavigationHeader.js +7 -3
- package/dist/NavigationHeader.js.map +1 -1
- package/dist/Rename.cjs.js +7 -3
- package/dist/Rename.cjs.js.map +1 -1
- package/dist/Rename.js +7 -3
- package/dist/Rename.js.map +1 -1
- package/dist/Sidebar.cjs.js.map +1 -1
- package/dist/Sidebar.js.map +1 -1
- package/dist/SubHeader.cjs.js.map +1 -1
- package/dist/SubHeader.js.map +1 -1
- package/package.json +11 -1
- package/src/translations/en.json +6 -0
- package/types/CalendarView.d.ts +66 -0
- package/types/Rename.d.ts +2 -0
|
@@ -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
|