intelicoreact 0.0.93 → 0.0.96

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 (31) hide show
  1. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +1 -1
  2. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +33 -9
  3. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.scss +5 -0
  4. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +27 -6
  5. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +20 -9
  6. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +7 -5
  7. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +29 -24
  8. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +13 -7
  9. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +427 -0
  10. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.scss +120 -0
  11. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +56 -0
  12. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +11 -8
  13. package/dist/Atomic/UI/Calendar/Calendar.js +16 -13
  14. package/dist/Functions/customEventListener.js +66 -0
  15. package/dist/Functions/useMouseUpOutside.js +23 -0
  16. package/package.json +1 -1
  17. package/src/Atomic/FormElements/Dropdown/Dropdown.stories.js +1 -1
  18. package/src/Atomic/FormElements/InputCalendar/InputCalendar.js +45 -6
  19. package/src/Atomic/FormElements/InputCalendar/InputCalendar.scss +5 -0
  20. package/src/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +15 -6
  21. package/src/Atomic/FormElements/InputDateRange/InputDateRange.js +57 -22
  22. package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +10 -8
  23. package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +391 -392
  24. package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +11 -3
  25. package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.js +315 -0
  26. package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.scss +120 -0
  27. package/src/Atomic/FormElements/MobileCalendar/MobileCalendar.stories.js +30 -0
  28. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.js +132 -126
  29. package/src/Atomic/UI/Calendar/Calendar.js +29 -12
  30. package/src/Functions/customEventListener.js +58 -0
  31. package/src/Functions/useMouseUpOutside.js +16 -0
@@ -0,0 +1,427 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.default = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _moment = _interopRequireDefault(require("moment"));
17
+
18
+ require("./MobileCalendar.scss");
19
+
20
+ var _reactFeather = require("react-feather");
21
+
22
+ var _io = require("react-icons/io5");
23
+
24
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
25
+
26
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
27
+
28
+ require('./../../../../src/Functions/customEventListener');
29
+
30
+ var MobileCalendar = function MobileCalendar(_ref) {
31
+ var _listItem$getBounding;
32
+
33
+ var _ref$minDate = _ref.minDate,
34
+ minDate = _ref$minDate === void 0 ? (0, _moment.default)().subtract('10', 'years') : _ref$minDate,
35
+ _ref$maxDate = _ref.maxDate,
36
+ maxDate = _ref$maxDate === void 0 ? (0, _moment.default)().add('10', 'years') : _ref$maxDate,
37
+ value = _ref.value,
38
+ _ref$rows = _ref.rows,
39
+ rows = _ref$rows === void 0 ? 5 : _ref$rows,
40
+ _ref$label = _ref.label,
41
+ label = _ref$label === void 0 ? "" : _ref$label,
42
+ _ref$timeout = _ref.timeout,
43
+ timeout = _ref$timeout === void 0 ? 500 : _ref$timeout,
44
+ _ref$isMobile = _ref.isMobile,
45
+ isMobile = _ref$isMobile === void 0 ? true : _ref$isMobile,
46
+ _ref$showSelectedDate = _ref.showSelectedDate,
47
+ showSelectedDate = _ref$showSelectedDate === void 0 ? false : _ref$showSelectedDate,
48
+ _ref$classes = _ref.classes,
49
+ classes = _ref$classes === void 0 ? {
50
+ wrapper: "",
51
+ label: "",
52
+ body: "",
53
+ yearsBlock: "",
54
+ yearsList: "",
55
+ yearsListItem: "",
56
+ monthsBlock: "",
57
+ monthsList: "",
58
+ monthsListItem: "",
59
+ daysBlock: "",
60
+ daysList: "",
61
+ daysListItem: "",
62
+ prevItem: "",
63
+ nextItem: "",
64
+ activeItem: ""
65
+ } : _ref$classes,
66
+ _ref$onChange = _ref.onChange,
67
+ onChange = _ref$onChange === void 0 ? function () {} : _ref$onChange;
68
+ var Body = document.querySelector("body");
69
+ var listItem = document.querySelector(".mobile-calendar_wrapper_body_months-list--item");
70
+
71
+ var _useState = (0, _react.useState)(value || (0, _moment.default)()),
72
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
73
+ date = _useState2[0],
74
+ setDate = _useState2[1];
75
+
76
+ var _useState3 = (0, _react.useState)(false),
77
+ _useState4 = (0, _slicedToArray2.default)(_useState3, 2),
78
+ isMouseDown = _useState4[0],
79
+ setIsMouseDown = _useState4[1];
80
+
81
+ var _useState5 = (0, _react.useState)(null),
82
+ _useState6 = (0, _slicedToArray2.default)(_useState5, 2),
83
+ mouseDownOn = _useState6[0],
84
+ setMouseDownOn = _useState6[1];
85
+
86
+ var _useState7 = (0, _react.useState)(null),
87
+ _useState8 = (0, _slicedToArray2.default)(_useState7, 2),
88
+ changeInterval = _useState8[0],
89
+ setChangeInterval = _useState8[1];
90
+
91
+ var _useState9 = (0, _react.useState)(null),
92
+ _useState10 = (0, _slicedToArray2.default)(_useState9, 2),
93
+ touchY = _useState10[0],
94
+ setTouchY = _useState10[1];
95
+
96
+ var _useState11 = (0, _react.useState)(null),
97
+ _useState12 = (0, _slicedToArray2.default)(_useState11, 2),
98
+ touchType = _useState12[0],
99
+ setTouchType = _useState12[1];
100
+
101
+ var _useState13 = (0, _react.useState)(null),
102
+ _useState14 = (0, _slicedToArray2.default)(_useState13, 2),
103
+ touchTimestamp = _useState14[0],
104
+ setTouchTimestamp = _useState14[1];
105
+
106
+ var _useState15 = (0, _react.useState)(0),
107
+ _useState16 = (0, _slicedToArray2.default)(_useState15, 2),
108
+ scrollDirection = _useState16[0],
109
+ setScrollDirection = _useState16[1];
110
+
111
+ var listItemHeight = listItem === null || listItem === void 0 ? void 0 : (_listItem$getBounding = listItem.getBoundingClientRect()) === null || _listItem$getBounding === void 0 ? void 0 : _listItem$getBounding.height; //--HANDLERS--//
112
+
113
+ var changeItem = function changeItem(type, value) {
114
+ setScrollDirection(value);
115
+ setDate(function (date) {
116
+ var newDate = (0, _moment.default)(date).add(value, type);
117
+ if ((0, _moment.default)(newDate).isBefore(minDate)) return minDate;
118
+ if ((0, _moment.default)(newDate).isAfter(maxDate)) return maxDate;
119
+ return newDate;
120
+ });
121
+ setTimeout(function () {
122
+ setScrollDirection(0);
123
+ }, 50);
124
+ };
125
+
126
+ var onArrowMouseDown = function onArrowMouseDown(type, value) {
127
+ setIsMouseDown(true);
128
+ setMouseDownOn({
129
+ type: type,
130
+ value: value
131
+ });
132
+ };
133
+
134
+ var onArrowMouseUp = function onArrowMouseUp() {
135
+ setIsMouseDown(false);
136
+ setMouseDownOn(null);
137
+ };
138
+
139
+ var _onWheel = function onWheel(e, type) {
140
+ var deltaY = e.deltaY;
141
+ changeItem(type, deltaY < 0 ? -1 : 1);
142
+ };
143
+
144
+ var _onTouchStart = function onTouchStart(e, type) {
145
+ var timeStamp = e.timeStamp,
146
+ changedTouches = e.changedTouches;
147
+ var pageY = changedTouches[0].pageY;
148
+ setTouchY(pageY);
149
+ setTouchTimestamp(timeStamp);
150
+ setTouchType(type);
151
+ Body === null || Body === void 0 ? void 0 : Body.addEventListener('touchend', function (e) {
152
+ return onTouchEnd(e, pageY, timeStamp, type);
153
+ });
154
+ };
155
+
156
+ var onTouchMove = function onTouchMove(e) {
157
+ if (!touchY || !touchType) return;
158
+ var timeStamp = e.timeStamp,
159
+ changedTouches = e.changedTouches;
160
+ var pageY = changedTouches[0].pageY;
161
+ var deltaY = touchY - pageY;
162
+ if (Math.abs(deltaY) < listItemHeight / 2) return;
163
+ var direction = deltaY < 0 ? -1 : 1;
164
+ setScrollDirection(direction);
165
+ changeItem(touchType, direction);
166
+ setTouchY(pageY);
167
+ setTouchTimestamp(timeStamp);
168
+ };
169
+
170
+ var onTouchEnd = function onTouchEnd(e, startY, startTime, touchType) {
171
+ var timeStamp = e.timeStamp,
172
+ changedTouches = e.changedTouches;
173
+ var pageY = changedTouches[0].pageY;
174
+ var path = Math.abs(startY - pageY); //in px
175
+
176
+ var time = timeStamp - startTime; //ms
177
+
178
+ var pxPerMs = path / time;
179
+ if (pxPerMs > 1) innertionScroll({
180
+ startY: startY,
181
+ pageY: pageY,
182
+ timeStamp: timeStamp,
183
+ startTime: startTime,
184
+ touchType: touchType
185
+ });else setTouchType(null);
186
+ setTouchY(null);
187
+ Body === null || Body === void 0 ? void 0 : Body.clearEventListeners('touchend');
188
+ };
189
+
190
+ var innertionScroll = function innertionScroll(_ref2) {
191
+ var startY = _ref2.startY,
192
+ pageY = _ref2.pageY,
193
+ timeStamp = _ref2.timeStamp,
194
+ startTime = _ref2.startTime,
195
+ touchType = _ref2.touchType;
196
+ var path = Math.abs(startY - pageY); //in px
197
+
198
+ var time = timeStamp - startTime; //ms
199
+
200
+ var pxPerMs = path / time; //speed
201
+
202
+ var S = pxPerMs / 2 * time / 2;
203
+ var blocks = Math.ceil(S / listItemHeight) * 6 * pxPerMs;
204
+ var timeout;
205
+
206
+ for (var i = 1; i <= blocks; ++i) {
207
+ timeout = i * pxPerMs + Math.pow(i, 2) * 1.2;
208
+ setTimeout(function () {
209
+ changeItem(touchType, startY - pageY < 0 ? -1 : 1);
210
+ }, timeout);
211
+ }
212
+
213
+ setTimeout(function () {
214
+ setTouchType(null);
215
+ }, timeout);
216
+ }; //--FUNCTIONS--//
217
+
218
+
219
+ var intervalWorker = function intervalWorker() {
220
+ if (!mouseDownOn) return;
221
+ var type = mouseDownOn.type,
222
+ value = mouseDownOn.value;
223
+ changeItem(type, value);
224
+ };
225
+
226
+ var getList = function getList(type, format) {
227
+ var list = [];
228
+ var renderRows = rows;
229
+
230
+ for (var i = (renderRows - 1) / 2; i >= (renderRows - 1) / 2 * -1; --i) {
231
+ list.push((0, _moment.default)(date).subtract(i, type).format(format));
232
+ }
233
+
234
+ return list;
235
+ };
236
+
237
+ var getMonthList = function getMonthList() {
238
+ return getList('months', 'MMMM');
239
+ };
240
+
241
+ var getDaysList = function getDaysList() {
242
+ return getList('days', 'D');
243
+ };
244
+
245
+ var getYearsList = function getYearsList() {
246
+ return getList('years', 'YYYY');
247
+ }; //--OBSERVERS--//
248
+ //Events Observer
249
+
250
+
251
+ (0, _react.useEffect)(function () {
252
+ document.addEventListener('mouseup', onArrowMouseUp);
253
+ return function () {
254
+ document.removeEventListener('mouseup', onArrowMouseUp);
255
+ };
256
+ }, []);
257
+ (0, _react.useEffect)(function () {
258
+ onChange(date);
259
+ }, [date]); //--RENDER--//
260
+
261
+ var renderMonthsList = function renderMonthsList() {
262
+ var half = (rows - 1) / 2;
263
+ return getMonthList().map(function (month, i) {
264
+ return /*#__PURE__*/_react.default.createElement("div", {
265
+ className: "mobile-calendar_wrapper_body_months-list--item ".concat(i === half ? 'active' : '', " ").concat(i === 0 || i === rows - 1 ? 'transparent' : '', " ").concat(classes === null || classes === void 0 ? void 0 : classes.monthsListItem, " ").concat(i === half ? classes === null || classes === void 0 ? void 0 : classes.activeItem : ''),
266
+ key: "month-".concat(month),
267
+ onClick: touchY ? null : function () {
268
+ return i - half === 0 ? {} : changeItem('months', i - half);
269
+ },
270
+ "attr-scroll-direction": touchType === 'months' ? scrollDirection : 0,
271
+ "attr-is-scrolling": touchType === 'months' ? 1 : 0
272
+ }, month);
273
+ });
274
+ };
275
+
276
+ var renderDaysList = function renderDaysList() {
277
+ var half = (rows - 1) / 2;
278
+ return getDaysList().map(function (day, i) {
279
+ return /*#__PURE__*/_react.default.createElement("div", {
280
+ className: "mobile-calendar_wrapper_body_days-list--item ".concat(i === half ? 'active' : '', " ").concat(i === 0 || i === rows - 1 ? 'transparent' : '', " ").concat(classes === null || classes === void 0 ? void 0 : classes.daysListItem, " ").concat(i === half ? classes === null || classes === void 0 ? void 0 : classes.activeItem : ''),
281
+ key: "day-".concat(day),
282
+ onClick: function onClick() {
283
+ return i - half === 0 ? {} : changeItem('days', i - half);
284
+ },
285
+ "attr-scroll-direction": touchType === 'days' ? scrollDirection : 0,
286
+ "attr-is-scrolling": touchType === 'days' ? 1 : 0
287
+ }, day);
288
+ });
289
+ };
290
+
291
+ var renderYearsList = function renderYearsList() {
292
+ var half = (rows - 1) / 2;
293
+ return getYearsList().map(function (year, i) {
294
+ return /*#__PURE__*/_react.default.createElement("div", {
295
+ className: "mobile-calendar_wrapper_body_years-list--item ".concat(i === half ? 'active' : '', " ").concat(i === 0 || i === rows - 1 ? 'transparent' : '', " ").concat(classes === null || classes === void 0 ? void 0 : classes.yearsListItem, " ").concat(i === half ? classes === null || classes === void 0 ? void 0 : classes.activeItem : ''),
296
+ key: "year-".concat(year),
297
+ onClick: function onClick() {
298
+ return i - half === 0 ? {} : changeItem('years', i - half);
299
+ },
300
+ "attr-scroll-direction": touchType === 'years' ? scrollDirection : 0,
301
+ "attr-is-scrolling": touchType === 'years' ? 1 : 0
302
+ }, year);
303
+ });
304
+ };
305
+
306
+ var renderMonthBlock = function renderMonthBlock() {
307
+ return /*#__PURE__*/_react.default.createElement("div", {
308
+ className: "mobile-calendar_wrapper_body_months ".concat(classes === null || classes === void 0 ? void 0 : classes.monthsBlock)
309
+ }, /*#__PURE__*/_react.default.createElement("div", {
310
+ className: "mobile-calendar_wrapper_body_months--prev ".concat(classes === null || classes === void 0 ? void 0 : classes.prevItem)
311
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronUp, {
312
+ onClick: function onClick() {
313
+ return changeItem('months', -1);
314
+ },
315
+ onMouseDown: function onMouseDown() {
316
+ return onArrowMouseDown('months', -1);
317
+ },
318
+ onMouseUp: onArrowMouseUp
319
+ })), /*#__PURE__*/_react.default.createElement("div", {
320
+ className: "mobile-calendar_wrapper_body_months-list ".concat(classes === null || classes === void 0 ? void 0 : classes.monthsList),
321
+ onTouchStart: function onTouchStart(e) {
322
+ return _onTouchStart(e, "months");
323
+ },
324
+ onWheel: function onWheel(e) {
325
+ return _onWheel(e, "months");
326
+ }
327
+ }, renderMonthsList(), isMobile && /*#__PURE__*/_react.default.createElement("div", {
328
+ className: "mobile-calendar_wrapper_body_months-list_touch-zone"
329
+ })), /*#__PURE__*/_react.default.createElement("div", {
330
+ className: "mobile-calendar_wrapper_body_months--next ".concat(classes === null || classes === void 0 ? void 0 : classes.nextItem)
331
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronDown, {
332
+ onClick: function onClick() {
333
+ return changeItem('months', 1);
334
+ },
335
+ onMouseDown: function onMouseDown() {
336
+ return onArrowMouseDown('months', 1);
337
+ },
338
+ onMouseUp: onArrowMouseUp
339
+ })));
340
+ };
341
+
342
+ var renderDaysBlock = function renderDaysBlock() {
343
+ return /*#__PURE__*/_react.default.createElement("div", {
344
+ className: "mobile-calendar_wrapper_body_days ".concat(classes === null || classes === void 0 ? void 0 : classes.daysBlock)
345
+ }, /*#__PURE__*/_react.default.createElement("div", {
346
+ className: "mobile-calendar_wrapper_body_days--prev ".concat(classes === null || classes === void 0 ? void 0 : classes.prevItem)
347
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronUp, {
348
+ onClick: function onClick() {
349
+ return changeItem('days', -1);
350
+ },
351
+ onMouseDown: function onMouseDown() {
352
+ return onArrowMouseDown('days', -1);
353
+ },
354
+ onMouseUp: onArrowMouseUp
355
+ })), /*#__PURE__*/_react.default.createElement("div", {
356
+ className: "mobile-calendar_wrapper_body_days-list ".concat(classes === null || classes === void 0 ? void 0 : classes.daysList),
357
+ onTouchStart: function onTouchStart(e) {
358
+ return _onTouchStart(e, "days");
359
+ },
360
+ onWheel: function onWheel(e) {
361
+ return _onWheel(e, "days");
362
+ }
363
+ }, renderDaysList(), isMobile && /*#__PURE__*/_react.default.createElement("div", {
364
+ className: "mobile-calendar_wrapper_body_days-list_touch-zone"
365
+ })), /*#__PURE__*/_react.default.createElement("div", {
366
+ className: "mobile-calendar_wrapper_body_days--next ".concat(classes === null || classes === void 0 ? void 0 : classes.nextItem)
367
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronDown, {
368
+ onClick: function onClick() {
369
+ return changeItem('days', 1);
370
+ },
371
+ onMouseDown: function onMouseDown() {
372
+ return onArrowMouseDown('days', 1);
373
+ },
374
+ onMouseUp: onArrowMouseUp
375
+ })));
376
+ };
377
+
378
+ var renderYearsBlock = function renderYearsBlock() {
379
+ return /*#__PURE__*/_react.default.createElement("div", {
380
+ className: "mobile-calendar_wrapper_body_years ".concat(classes === null || classes === void 0 ? void 0 : classes.yearsBlock)
381
+ }, /*#__PURE__*/_react.default.createElement("div", {
382
+ className: "mobile-calendar_wrapper_body_years--prev ".concat(classes === null || classes === void 0 ? void 0 : classes.prevItem)
383
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronUp, {
384
+ onClick: function onClick() {
385
+ return changeItem('years', -1);
386
+ },
387
+ onMouseDown: function onMouseDown() {
388
+ return onArrowMouseDown('years', -1);
389
+ },
390
+ onMouseUp: onArrowMouseUp
391
+ })), /*#__PURE__*/_react.default.createElement("div", {
392
+ className: "mobile-calendar_wrapper_body_years-list ".concat(classes === null || classes === void 0 ? void 0 : classes.yearsList),
393
+ onTouchStart: function onTouchStart(e) {
394
+ return _onTouchStart(e, "years");
395
+ },
396
+ onWheel: function onWheel(e) {
397
+ return _onWheel(e, "years");
398
+ }
399
+ }, renderYearsList(), isMobile && /*#__PURE__*/_react.default.createElement("div", {
400
+ className: "mobile-calendar_wrapper_body_years-list_touch-zone"
401
+ })), /*#__PURE__*/_react.default.createElement("div", {
402
+ className: "mobile-calendar_wrapper_body_years--next ".concat(classes === null || classes === void 0 ? void 0 : classes.nextItem)
403
+ }, /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronDown, {
404
+ onClick: function onClick() {
405
+ return changeItem('years', 1);
406
+ },
407
+ onMouseDown: function onMouseDown() {
408
+ return onArrowMouseDown('years', 1);
409
+ },
410
+ onMouseUp: onArrowMouseUp
411
+ })));
412
+ };
413
+
414
+ return /*#__PURE__*/_react.default.createElement("div", {
415
+ className: "mobile-calendar_wrapper ".concat(classes === null || classes === void 0 ? void 0 : classes.wrapper),
416
+ onTouchMove: onTouchMove
417
+ }, /*#__PURE__*/_react.default.createElement("div", {
418
+ className: "mobile-calendar_wrapper_label ".concat(classes === null || classes === void 0 ? void 0 : classes.label)
419
+ }, label), showSelectedDate && /*#__PURE__*/_react.default.createElement("div", {
420
+ className: "mobile-calendar_wrapper_label ".concat(classes === null || classes === void 0 ? void 0 : classes.label)
421
+ }, (0, _moment.default)(date).format("LL")), /*#__PURE__*/_react.default.createElement("div", {
422
+ className: "mobile-calendar_wrapper_body ".concat(classes === null || classes === void 0 ? void 0 : classes.body)
423
+ }, renderMonthBlock(), renderDaysBlock(), renderYearsBlock()));
424
+ };
425
+
426
+ var _default = MobileCalendar;
427
+ exports.default = _default;
@@ -0,0 +1,120 @@
1
+ .unselectable {
2
+ -webkit-touch-callout: none;
3
+ -webkit-user-select: none;
4
+ -khtml-user-select: none;
5
+ -moz-user-select: none;
6
+ -ms-user-select: none;
7
+ user-select: none;
8
+ }
9
+
10
+ .mobile-calendar_wrapper{
11
+ @extend .unselectable;
12
+ max-width: 350px;
13
+ background: #F8FBFF;
14
+ padding: 10px;
15
+ box-shadow: 0 0 10px 10px #00000014;
16
+ border-radius: 16px;
17
+
18
+ &_label{
19
+ text-align: center;
20
+ font-size: 16px;
21
+ line-height: 24px;
22
+ margin: 16px 0px;
23
+ }
24
+
25
+ &_body{
26
+ display: flex;
27
+ justify-content: space-between;
28
+
29
+ &_months,
30
+ &_days,
31
+ &_years{
32
+ display: flex;
33
+ flex-direction: column;
34
+ align-items: center;
35
+
36
+ &--prev,
37
+ &--next{
38
+ color:#A6AAB4;
39
+ cursor: pointer;
40
+ }
41
+
42
+ &-list{
43
+ position: relative;
44
+ overflow: hidden;
45
+
46
+ &::before,
47
+ &::after{
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ color: #3B414B;
52
+ height: 32px;
53
+ width: 90px;
54
+ cursor: pointer;
55
+ content: "0000";
56
+ background-color: red;
57
+ position: absolute;
58
+ }
59
+
60
+ &::before{
61
+ top: 0;
62
+ transform: translateY(-100%);
63
+ }
64
+
65
+ &::after{
66
+ bottom: 0;
67
+ transform: translateY(100%);
68
+ }
69
+
70
+ &--item{
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ color: #3B414B;
75
+ height: 32px;
76
+ width: 90px;
77
+ cursor: pointer;
78
+
79
+ &:not(.active){
80
+ transition: transform 1s;
81
+ }
82
+ &:not(.active)[attr-scroll-direction="1"]{
83
+ transform: translateY(25%);
84
+ }
85
+ &:not(.active)[attr-scroll-direction="-1"]{
86
+ transform: translateY(-25%);
87
+ }
88
+
89
+ &:not(.active)[attr-is-scrolling="1"]{
90
+ opacity: 0.3;
91
+ }
92
+
93
+
94
+ &.active{
95
+ background: #FFFFFF;
96
+ border: 1px solid #FFFFFF;
97
+ box-sizing: border-box;
98
+ box-shadow: 0px 4px 26px rgba(0, 67, 96, 0.1);
99
+ border-radius: 8px;
100
+ }
101
+
102
+ &.transparent{
103
+ opacity: 0.5;
104
+ }
105
+ }
106
+
107
+ &_touch-zone{
108
+ top: 0;
109
+ left: 0;
110
+ width: 100%;
111
+ height: 100%;
112
+ position: absolute;
113
+ z-index: 5;
114
+ }
115
+ }
116
+
117
+
118
+ }
119
+ }
120
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
5
+ var _typeof = require("@babel/runtime/helpers/typeof");
6
+
7
+ Object.defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+ exports.CalendarTemplate = exports.default = void 0;
11
+
12
+ var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
13
+
14
+ var _react = _interopRequireWildcard(require("react"));
15
+
16
+ var _MobileCalendar = _interopRequireDefault(require("./MobileCalendar"));
17
+
18
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
19
+
20
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
21
+
22
+ global.lng = 'en';
23
+ var _default = {
24
+ title: 'Form Elements/Mobile Calendar',
25
+ component: _MobileCalendar.default,
26
+ argTypes: {
27
+ value: {
28
+ description: 'string (mm.dd.yyyy)'
29
+ }
30
+ }
31
+ };
32
+ exports.default = _default;
33
+
34
+ var Template = function Template(args) {
35
+ var _useState = (0, _react.useState)(''),
36
+ _useState2 = (0, _slicedToArray2.default)(_useState, 2),
37
+ date = _useState2[0],
38
+ setDate = _useState2[1];
39
+
40
+ return /*#__PURE__*/_react.default.createElement(_MobileCalendar.default, {
41
+ classes: {
42
+ wrapper: "123"
43
+ },
44
+ onChange: console.log
45
+ });
46
+ };
47
+
48
+ var CalendarTemplate = Template.bind({});
49
+ exports.CalendarTemplate = CalendarTemplate;
50
+ CalendarTemplate.args = {
51
+ value: '',
52
+ minDate: '01/01/1900',
53
+ maxDate: '01/01/2100',
54
+ isDontLimitFuture: true // isListTop: true,
55
+
56
+ };
@@ -44,7 +44,12 @@ var RangeCalendar = function RangeCalendar(props) {
44
44
  startPrevDate = props.startPrevDate,
45
45
  endPrevDate = props.endPrevDate,
46
46
  limitRange = props.limitRange,
47
- isShortWeekNames = props.isShortWeekNames;
47
+ isShortWeekNames = props.isShortWeekNames,
48
+ minDate = props.minDate,
49
+ maxDate = props.maxDate,
50
+ momentMinDate = props.momentMinDate,
51
+ momentMaxDate = props.momentMaxDate,
52
+ isDontLimitFuture = props.isDontLimitFuture;
48
53
 
49
54
  var _useState = (0, _react.useState)({}),
50
55
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -89,9 +94,7 @@ var RangeCalendar = function RangeCalendar(props) {
89
94
  var classNames = (0, _classnames.default)('range-calendar__day', {
90
95
  'range-calendar__day--clickable': day
91
96
  }, {
92
- 'range-calendar__day--disabled': isFutureDay
93
- }, {
94
- 'range-calendar__day--disabled': isPastDay
97
+ 'range-calendar__day--disabled': isPastDay || minDate && (0, _momentTimezone.default)(day === null || day === void 0 ? void 0 : day.date).isBefore(minDate, 'day') || !isDontLimitFuture && (maxDate ? (0, _momentTimezone.default)(day === null || day === void 0 ? void 0 : day.date).isAfter(momentMaxDate) : isFutureDay)
95
98
  }, {
96
99
  'range-calendar__day--range-start': isRangeStart
97
100
  }, {
@@ -106,10 +109,10 @@ var RangeCalendar = function RangeCalendar(props) {
106
109
  return /*#__PURE__*/_react.default.createElement("div", {
107
110
  key: "".concat(week, "_").concat(dayOfWeek),
108
111
  className: classNames,
109
- onClick: day && !isFutureDay ? function (e) {
112
+ onClick: day ? function (e) {
110
113
  return onClick(day.date, e);
111
114
  } : null,
112
- onMouseOver: day && !isFutureDay ? function () {
115
+ onMouseOver: day ? function () {
113
116
  return onHover(day.date);
114
117
  } : null,
115
118
  onMouseLeave: function onMouseLeave() {
@@ -138,14 +141,14 @@ var RangeCalendar = function RangeCalendar(props) {
138
141
  className: "range-calendar-header"
139
142
  }, /*#__PURE__*/_react.default.createElement(_Arrow.default, {
140
143
  type: "left",
141
- disabled: !allowPrev,
144
+ disabled: !allowPrev || minDate && (0, _momentTimezone.default)(date).startOf('month').isSameOrBefore(momentMinDate, 'months'),
142
145
  onClick: handlePrev,
143
146
  className: "range-calendar-header__prev"
144
147
  }), /*#__PURE__*/_react.default.createElement("div", {
145
148
  className: "range-calendar-header__title"
146
149
  }, title), /*#__PURE__*/_react.default.createElement(_Arrow.default, {
147
150
  type: "right",
148
- disabled: !allowNext,
151
+ disabled: !allowNext || !isDontLimitFuture && (0, _momentTimezone.default)(date).startOf('month').isSameOrAfter(maxDate ? momentMaxDate : (0, _momentTimezone.default)().add(1, 'day').startOf('day'), 'months'),
149
152
  onClick: handleNext,
150
153
  className: "range-calendar-header__next"
151
154
  })), /*#__PURE__*/_react.default.createElement("div", {