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
@@ -32,17 +32,21 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
32
32
  function _default(props) {
33
33
  var date = props.date,
34
34
  setDate = props.setDate,
35
+ setIsOpened = props.setIsOpened,
35
36
  _props$allowPrev = props.allowPrev,
36
37
  allowPrev = _props$allowPrev === void 0 ? true : _props$allowPrev,
37
38
  _props$allowNext = props.allowNext,
38
39
  allowNext = _props$allowNext === void 0 ? true : _props$allowNext,
39
40
  params = props.params,
40
41
  className = props.className,
41
- isDontLimitFuture = props.isDontLimitFuture,
42
42
  isListTop = props.isListTop; // const { minDate = '01/01/1900', maxDate = moment().format('MM/DD/YYYY') } = params;
43
43
 
44
- var minDate = params.minDate,
45
- maxDate = params.maxDate;
44
+ var format = params.format,
45
+ minDate = params.minDate,
46
+ maxDate = params.maxDate,
47
+ momentMinDate = params.momentMinDate,
48
+ momentMaxDate = params.momentMaxDate,
49
+ isDontLimitFuture = params.isDontLimitFuture;
46
50
 
47
51
  var _useState = (0, _react.useState)({}),
48
52
  _useState2 = (0, _slicedToArray2.default)(_useState, 2),
@@ -66,17 +70,15 @@ function _default(props) {
66
70
 
67
71
  var yearInputRef = (0, _react.useRef)(null);
68
72
  var selectedDay = (0, _moment.default)(showDate);
69
- var isError = 'Invalid date'; // const title = useMemo(
70
- // () => (selectedDay.format('MMM') === isError ? isError : `${selectedDay.format('MMM')} ${moment(showDate).format('YYYY')}`),
71
- // [date, showDate]
72
- // );
73
-
73
+ var isError = 'Invalid date';
74
74
  var showMonth = (0, _react.useMemo)(function () {
75
75
  return (0, _moment.default)(showDate).format('MMM');
76
76
  }, [date, showDate]);
77
77
  var showYear = (0, _react.useMemo)(function () {
78
78
  return (0, _moment.default)(showDate).format('YYYY');
79
79
  }, [date, showDate]);
80
+ var isShovPrevArrow = allowPrev && !(minDate && (0, _moment.default)(showDate).startOf('month').isSameOrBefore(momentMinDate, 'months'));
81
+ var isShovNextArrow = allowNext && (isDontLimitFuture || !(0, _moment.default)(showDate).startOf('month').isSameOrAfter(maxDate ? momentMaxDate : (0, _moment.default)().add(1, 'day').startOf('day'), 'months'));
80
82
  (0, _react.useEffect)(function () {
81
83
  var result = {};
82
84
  var day = selectedDay.startOf('month');
@@ -105,8 +107,8 @@ function _default(props) {
105
107
  if (!day) return /*#__PURE__*/_react.default.createElement("div", {
106
108
  className: "calendar__day"
107
109
  });
108
- var isFutureDay = day && maxDate ? (0, _moment.default)(day.date).isAfter((0, _moment.default)(maxDate || ''), 'day') : (0, _moment.default)(day.date).isAfter((0, _moment.default)(), 'day');
109
- var isBeforeDay = day && (0, _moment.default)(day.date).isBefore((0, _moment.default)(minDate || ''), 'day');
110
+ var isFutureDay = day && !isDontLimitFuture && maxDate ? (0, _moment.default)(day.date).isAfter(momentMaxDate || (0, _moment.default)().add(1, 'days'), 'day') : (0, _moment.default)(day.date).isAfter((0, _moment.default)(), 'day');
111
+ var isBeforeDay = day && (0, _moment.default)(day.date).isBefore(momentMinDate || '', 'day');
110
112
  var classNames = (0, _classnames.default)('calendar__day', {
111
113
  'calendar__day--clickable': day
112
114
  }, {
@@ -120,7 +122,8 @@ function _default(props) {
120
122
  key: "".concat(week, "_").concat(dayOfWeek),
121
123
  className: classNames,
122
124
  onClick: day && (isDontLimitFuture || !isFutureDay) ? function () {
123
- return setDate((0, _moment.default)(day.date).format('L'));
125
+ setDate((0, _moment.default)(day.date).format('L'));
126
+ setIsOpened(false);
124
127
  } : null // onMouseOver={day && !isFutureDay ? () => onHover(day.date) : null}
125
128
  // onMouseLeave={() => onHover(null)}
126
129
 
@@ -168,7 +171,7 @@ function _default(props) {
168
171
  className: "calendar-header"
169
172
  }, /*#__PURE__*/_react.default.createElement("div", {
170
173
  className: "calendar-header__prev"
171
- }, allowPrev && /*#__PURE__*/_react.default.createElement("div", {
174
+ }, isShovPrevArrow && /*#__PURE__*/_react.default.createElement("div", {
172
175
  onClick: handlePrev
173
176
  }, /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronLeft, null))), /*#__PURE__*/_react.default.createElement("div", {
174
177
  className: (0, _classnames.default)('calendar-header__title'),
@@ -198,7 +201,7 @@ function _default(props) {
198
201
  }
199
202
  }) : "".concat(showYear))), /*#__PURE__*/_react.default.createElement("div", {
200
203
  className: "calendar-header__next"
201
- }, allowNext && /*#__PURE__*/_react.default.createElement("div", {
204
+ }, isShovNextArrow && /*#__PURE__*/_react.default.createElement("div", {
202
205
  onClick: handleNext
203
206
  }, /*#__PURE__*/_react.default.createElement(_reactFeather.ChevronRight, null)))), /*#__PURE__*/_react.default.createElement("div", {
204
207
  className: "calendar__week"
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+
3
+ (function () {
4
+ Element.prototype._addEventListener = Element.prototype.addEventListener;
5
+
6
+ Element.prototype.addEventListener = function (a, b, c) {
7
+ if (c == undefined) c = false;
8
+
9
+ this._addEventListener(a, b, c);
10
+
11
+ if (!this.eventListenerList) this.eventListenerList = {};
12
+ if (!this.eventListenerList[a]) this.eventListenerList[a] = []; //this.removeEventListener(a,b,c); // TODO - handle duplicates..
13
+
14
+ this.eventListenerList[a].push({
15
+ listener: b,
16
+ useCapture: c
17
+ });
18
+ };
19
+
20
+ Element.prototype.getEventListeners = function (a) {
21
+ if (!this.eventListenerList) this.eventListenerList = {};
22
+ if (a == undefined) return this.eventListenerList;
23
+ return this.eventListenerList[a];
24
+ };
25
+
26
+ Element.prototype.clearEventListeners = function (a) {
27
+ if (!this.eventListenerList) this.eventListenerList = {};
28
+
29
+ if (a == undefined) {
30
+ for (var x in this.getEventListeners()) {
31
+ this.clearEventListeners(x);
32
+ }
33
+
34
+ return;
35
+ }
36
+
37
+ var el = this.getEventListeners(a);
38
+ if (el == undefined) return;
39
+
40
+ for (var i = el.length - 1; i >= 0; --i) {
41
+ var ev = el[i];
42
+ this.removeEventListener(a, ev.listener, ev.useCapture);
43
+ }
44
+ };
45
+
46
+ Element.prototype._removeEventListener = Element.prototype.removeEventListener;
47
+
48
+ Element.prototype.removeEventListener = function (a, b, c) {
49
+ if (c == undefined) c = false;
50
+
51
+ this._removeEventListener(a, b, c);
52
+
53
+ if (!this.eventListenerList) this.eventListenerList = {};
54
+ if (!this.eventListenerList[a]) this.eventListenerList[a] = []; // Find the event in the list
55
+
56
+ for (var i = 0; i < this.eventListenerList[a].length; i++) {
57
+ if (this.eventListenerList[a][i].listener == b, this.eventListenerList[a][i].useCapture == c) {
58
+ // Hmm..
59
+ this.eventListenerList[a].splice(i, 1);
60
+ break;
61
+ }
62
+ }
63
+
64
+ if (this.eventListenerList[a].length == 0) delete this.eventListenerList[a];
65
+ };
66
+ })();
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = useMouseUpOutside;
7
+
8
+ var _react = require("react");
9
+
10
+ function useMouseUpOutside(ref, setOut, open) {
11
+ function handleMouseUpOutside(event) {
12
+ if (ref.current && !ref.current.contains(event.target)) {
13
+ setOut(open);
14
+ }
15
+ }
16
+
17
+ (0, _react.useEffect)(function () {
18
+ document.addEventListener('mouseup', handleMouseUpOutside);
19
+ return function () {
20
+ document.removeEventListener('mouseup', handleMouseUpOutside);
21
+ };
22
+ }, [ref]);
23
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "intelicoreact",
3
- "version": "0.0.93",
3
+ "version": "0.0.96",
4
4
  "description": "fix input-calendar",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -54,7 +54,7 @@ const Template = (args) => {
54
54
  export const DropdownTemplate = Template.bind({});
55
55
 
56
56
  DropdownTemplate.args = {
57
- isListTop: true,
57
+ // isListTop: true,
58
58
  entity: 'entity',
59
59
  value: 'drop6',
60
60
  placeholder: 'Placeholder',
@@ -1,6 +1,8 @@
1
1
  import React, { useState, useRef } from 'react';
2
2
  import moment from 'moment';
3
3
  import InputMask from 'react-input-mask';
4
+ import cn from 'classnames';
5
+
4
6
  import Calendar from '../../UI/Calendar/Calendar';
5
7
  import { useClickOutside } from '../../../Functions/useClickOutside';
6
8
 
@@ -10,16 +12,29 @@ const InputCalendar = ({
10
12
  value,
11
13
  minDate,
12
14
  maxDate,
15
+ format = 'MM/DD/YYYY',
16
+ isDontLimitFuture,
13
17
  onChange,
14
18
  className = '',
15
19
  placeholder = 'mm/dd/yyyy',
16
20
  mask = '99/99/9999',
17
- isDontLimitFuture,
18
21
  isListTop,
22
+ disabled,
19
23
  }) => {
20
24
  const [isOpened, setIsOpened] = useState(false);
21
25
  const calendarRef = useRef(null);
22
26
 
27
+ const formatedMinDate = moment(minDate).format(format) !== 'Invalid date'
28
+ ? moment(minDate).format(format)
29
+ : null;
30
+
31
+ const formatedMaxDate = moment(maxDate).format(format) !== 'Invalid date'
32
+ ? moment(maxDate).format(format)
33
+ : null;
34
+
35
+ const momentMinDate = moment(formatedMinDate, format).startOf('day');
36
+ const momentMaxDate = moment(formatedMaxDate, format).startOf('day');
37
+
23
38
  useClickOutside(calendarRef, () => setIsOpened(false));
24
39
 
25
40
  const changeInputValue = (val) => {
@@ -38,24 +53,48 @@ const InputCalendar = ({
38
53
  return moment(new Date()).format('L');
39
54
  };
40
55
 
56
+ const handleBlur = (e) => {
57
+ const value = e.target.value;
58
+ if (moment(value).format(format) === 'Invalid date') onChange('');
59
+ else if (moment(value).startOf('day').isBefore(momentMinDate, 'days')) onChange(formatedMinDate);
60
+ else if (moment(value).endOf('day').isAfter(momentMaxDate, 'days')) onChange(formatedMaxDate);
61
+ else onChange(moment(value).format(format));
62
+ };
63
+
41
64
  return (
42
- <div className={`input__wrap calendar-container ${className}`} ref={calendarRef}>
65
+ <div
66
+ className={cn('input__wrap calendar-container', className, {
67
+ 'calendar-container_disabled': disabled,
68
+ })}
69
+ ref={calendarRef}
70
+ >
43
71
  <InputMask
44
72
  mask={mask}
45
73
  placeholder={placeholder}
46
74
  value={value}
47
75
  onChange={(e) => changeInputValue(e.target.value)}
48
76
  className="calendar-dropdown"
49
- onFocus={() => setIsOpened(!isOpened)}
77
+ onFocus={() => setIsOpened(true)}
78
+ onBlur={!isOpened ? handleBlur : () => {}}
79
+ onKeyUp={e => {
80
+ if (e.key === 'Enter') e.target.blur();
81
+ setIsOpened(false);
82
+ }}
50
83
  />
51
84
  {isOpened ? (
52
85
  <Calendar
53
- className={isListTop ? '' : ''}
54
86
  date={getCalendarValue(value)}
55
87
  setDate={(newDate) => changeCalendarDay(newDate)}
56
- params={{ minDate, maxDate }}
57
- isDontLimitFuture={isDontLimitFuture}
88
+ params={{
89
+ format,
90
+ minDate: formatedMinDate,
91
+ maxDate: formatedMaxDate,
92
+ momentMinDate,
93
+ momentMaxDate,
94
+ isDontLimitFuture
95
+ }}
58
96
  isListTop={isListTop}
97
+ setIsOpened={setIsOpened}
59
98
  />
60
99
  ) : null}
61
100
  </div>
@@ -2,6 +2,11 @@
2
2
  min-width: 200px;
3
3
  position: relative;
4
4
 
5
+ &_disabled {
6
+ pointer-events: none;
7
+ opacity: 0.5;
8
+ }
9
+
5
10
  .calendar {
6
11
  position: absolute;
7
12
  z-index: 9;
@@ -1,4 +1,4 @@
1
- import React, { useState } from 'react';
1
+ import React, { useEffect, useState } from 'react';
2
2
  import InputCalendar from './InputCalendar';
3
3
 
4
4
  global.lng = 'en';
@@ -15,16 +15,25 @@ export default {
15
15
 
16
16
  const Template = (args) => {
17
17
  const [date, setDate] = useState('');
18
+ const [disabled, setDisabled] = useState(false);
18
19
 
19
- return <InputCalendar {...args} value={date} onChange={(val) => setDate(val)} />;
20
+ return (
21
+ <>
22
+ <InputCalendar {...args} value={date} onChange={(val) => setDate(val)} disabled={disabled} />
23
+ <div style={{ display: 'flex', flexFlow: 'row nowrap', justifyContent: 'flex-end', marginTop: '10px' }}>
24
+ <button style={{ border: 'solid 1px black', padding: '10px', width: '80px' }} onClick={() => setDisabled(!disabled)}>
25
+ {disabled ? 'Enable' : 'Disable'}
26
+ </button>
27
+ </div>
28
+ </>
29
+ );
20
30
  };
21
31
 
22
32
  export const CalendarTemplate = Template.bind({});
23
33
 
24
34
  CalendarTemplate.args = {
25
- value: '',
26
- minDate: '01/01/1900',
27
- maxDate: '01/01/2100',
28
- isDontLimitFuture: true,
35
+ minDate: '01/10/2022',
36
+ maxDate: '04/20/2022',
37
+ // isDontLimitFuture: true,
29
38
  // isListTop: true,
30
39
  };
@@ -9,7 +9,7 @@ import Arrow from '../../UI/Arrow/Arrow';
9
9
 
10
10
  import './InputDateRange.scss';
11
11
 
12
- const InputDateRange = props => {
12
+ const InputDateRange = (props) => {
13
13
  const {
14
14
  txt,
15
15
  id,
@@ -26,8 +26,21 @@ const InputDateRange = props => {
26
26
  isUseAbs,
27
27
  minDate = null,
28
28
  maxDate = null,
29
+ format = 'MM/DD/YYYY',
30
+ isDontLimitFuture,
29
31
  } = props;
30
32
 
33
+ const formatedMinDate = moment(minDate).format(format) !== 'Invalid date'
34
+ ? moment(minDate).format(format)
35
+ : null;
36
+
37
+ const formatedMaxDate = moment(maxDate).format(format) !== 'Invalid date'
38
+ ? moment(maxDate).format(format)
39
+ : null;
40
+
41
+ const momentMinDate = moment(formatedMinDate, format).startOf('day');
42
+ const momentMaxDate = moment(formatedMaxDate, format).startOf('day');
43
+
31
44
  const actualValues = getActualDateRange(value);
32
45
  const { isToggled, toggle, toggleOn, toggleOff } = useToggle(false);
33
46
  const [current, setCurrent] = useState(actualValues?.intervalKey);
@@ -36,16 +49,15 @@ const InputDateRange = props => {
36
49
  const ref = !isUseAbs ? useClickOutside(toggleOff) : useRef(null);
37
50
  const internalContainerRef = useRef(null);
38
51
 
39
- const handleChange = input => {
40
-
52
+ const handleChange = (input) => {
41
53
  const newValue = getActualDateRange(input);
42
54
  const formatedValue = {
43
55
  intervalKey: newValue.intervalKey,
44
- start: newValue.start ? moment(newValue.start).format('YYYY-MM-DDTHH:mm') : newValue.start,
45
- end: newValue.end ? moment(newValue.end).format('YYYY-MM-DDTHH:mm') : newValue.end,
56
+ start: newValue.start ? moment(newValue.start).format(format || 'YYYY-MM-DDTHH:mm') : newValue.start,
57
+ end: newValue.end ? moment(newValue.end).format(format || 'YYYY-MM-DDTHH:mm') : newValue.end,
46
58
  ...(newValue.compare ? { compare: newValue.compare } : {}),
47
- ...(newValue.startPrevDate ? { startPrevDate: moment(newValue.startPrevDate).format('YYYY-MM-DDTHH:mm') } : {}),
48
- ...(newValue.endPrevDate ? { endPrevDate: moment(newValue.endPrevDate).format('YYYY-MM-DDTHH:mm') } : {})
59
+ ...(newValue.startPrevDate ? { startPrevDate: moment(newValue.startPrevDate).format(format || 'YYYY-MM-DDTHH:mm') } : {}),
60
+ ...(newValue.endPrevDate ? { endPrevDate: moment(newValue.endPrevDate).format(format || 'YYYY-MM-DDTHH:mm') } : {}),
49
61
  };
50
62
 
51
63
  onChange(formatedValue);
@@ -69,9 +81,9 @@ const InputDateRange = props => {
69
81
  endTime !== '00:00' ? `(${endTime})` : ''
70
82
  }`;
71
83
 
72
- const getClasses = base =>
84
+ const getClasses = (base) =>
73
85
  cn('date-range-input__range-text', {
74
- 'date-range-input__range-text_little': base.length > SYMBOLS_QUANTITY_IF_TIME_ADDED
86
+ 'date-range-input__range-text_little': base.length > SYMBOLS_QUANTITY_IF_TIME_ADDED,
75
87
  });
76
88
 
77
89
  return (
@@ -113,16 +125,16 @@ const InputDateRange = props => {
113
125
  ...value,
114
126
  intervalKey: getActualDateRange({
115
127
  start: newStart,
116
- end: newEnd
128
+ end: newEnd,
117
129
  })?.intervalKey,
118
130
  start: newStart,
119
131
  end: newEnd,
120
132
  startPrevDate,
121
- endPrevDate
133
+ endPrevDate,
122
134
  });
123
135
  };
124
136
 
125
- const handleArrowClick = type => {
137
+ const handleArrowClick = (type) => {
126
138
  slideInterval(type === 'right' ? 'forward' : 'back');
127
139
  toggleOff();
128
140
  };
@@ -135,7 +147,7 @@ const InputDateRange = props => {
135
147
  'date-range-input_hide-arrows': hideArrows,
136
148
  'date-range-input_focused': isToggled,
137
149
  'date-range-input_error': error,
138
- 'date-range-input_disabled': disabled
150
+ 'date-range-input_disabled': disabled,
139
151
  })}
140
152
  >
141
153
  <span className="date-range-input__label">{label}</span>
@@ -147,7 +159,7 @@ const InputDateRange = props => {
147
159
  >
148
160
  <div
149
161
  className={cn('date-range-input__absolut-wraper', {
150
- 'date-range-input__absolut-wraper_right-position': isOptionsRight
162
+ 'date-range-input__absolut-wraper_right-position': isOptionsRight,
151
163
  })}
152
164
  >
153
165
  <div className={cn('date-range-input__static-part')}>
@@ -160,7 +172,7 @@ const InputDateRange = props => {
160
172
  <div className="date-range-input__interval-key">
161
173
  <span>
162
174
  {(txt?.labels && txt.labels[actualValues?.intervalKey]) ??
163
- (INTERVALS[actualValues?.intervalKey]?.label || CUSTOM_INTERVAL_KEY_TEXT)}
175
+ (INTERVALS[actualValues?.intervalKey]?.label || CUSTOM_INTERVAL_KEY_TEXT)}
164
176
  </span>
165
177
  {current !== ALL_TIME_KEY && <span>:</span>}
166
178
  </div>
@@ -176,7 +188,15 @@ const InputDateRange = props => {
176
188
  type="left"
177
189
  className="date-range-input__arrow"
178
190
  onClick={() => handleArrowClick('left')}
179
- disabled={disabled || actualValues?.intervalKey === ALL_TIME_KEY}
191
+ disabled={
192
+ disabled ||
193
+ actualValues?.intervalKey === ALL_TIME_KEY ||
194
+ (formatedMinDate &&
195
+ moment(actualValues?.start)
196
+ .subtract(moment(actualValues?.end).diff(actualValues?.start, 'hours'), 'hours')
197
+ .isBefore(momentMinDate)
198
+ )
199
+ }
180
200
  />
181
201
  <Arrow
182
202
  type="right"
@@ -185,10 +205,21 @@ const InputDateRange = props => {
185
205
  disabled={
186
206
  disabled ||
187
207
  actualValues?.intervalKey === ALL_TIME_KEY ||
188
- actualValues?.intervalKey === 'today' ||
189
- moment(actualValues?.end)
190
- .add(moment(actualValues?.end).diff(actualValues?.start, 'hours'), 'hours')
191
- .isAfter(moment().add(1, 'day').startOf('day'))
208
+ (!isDontLimitFuture &&
209
+ (formatedMaxDate
210
+ ? (
211
+ moment(actualValues?.end)
212
+ .endOf('day')
213
+ .subtract(moment(actualValues?.end).diff(actualValues?.start, 'hours'), 'hours')
214
+ .isAfter(momentMaxDate.startOf('day'))
215
+ )
216
+ : (
217
+ moment(actualValues?.end)
218
+ .add(moment(actualValues?.end).diff(actualValues?.start, 'hours'), 'hours')
219
+ .isAfter(moment().add(1, 'day').startOf('day'))
220
+ )
221
+ )
222
+ )
192
223
  }
193
224
  />
194
225
  </div>
@@ -205,8 +236,12 @@ const InputDateRange = props => {
205
236
  setIsCompare={setIsCompare}
206
237
  toggleOff={toggleOff}
207
238
  onChange={handleChange}
208
- minDate={minDate ? moment(minDate) : null}
209
- maxDate={maxDate ? moment(maxDate) : null}
239
+ minDate={formatedMinDate}
240
+ maxDate={formatedMaxDate}
241
+ format={format}
242
+ momentMinDate={momentMinDate}
243
+ momentMaxDate={momentMaxDate}
244
+ isDontLimitFuture={isDontLimitFuture}
210
245
  />
211
246
  )}
212
247
  </div>
@@ -1,4 +1,6 @@
1
1
  import React, { /* useEffect, */ useState } from 'react';
2
+ import moment from 'moment-timezone';
3
+
2
4
  import InputDateRange from './InputDateRange';
3
5
  import Table from '../Table/Table';
4
6
 
@@ -14,15 +16,13 @@ export default {
14
16
  // options: ['admin', 'user']
15
17
  // }
16
18
  // }
17
- }
19
+ },
18
20
  };
19
21
 
20
- const Template = args => {
22
+ const Template = (args) => {
21
23
  const { dateRange, ...restOfProps } = args;
22
24
  const [value, setValue] = useState(dateRange);
23
- // useEffect(() => console.log(value), [value]);
24
25
 
25
- // return <InputDateRange {...restOfProps} value={value} onChange={setValue} />;
26
26
  return (
27
27
  <div>
28
28
  <div className="mb20">
@@ -38,7 +38,7 @@ InputDateRangeTemplate.args = {
38
38
  txt: {},
39
39
  buttonsTypes: {
40
40
  // apply: 'ellipse-apply',
41
- cancel: 'bark-outline'
41
+ cancel: 'bark-outline',
42
42
  },
43
43
  label: 'Date Range',
44
44
  dateRange: { intervalKey: 'today' },
@@ -47,8 +47,10 @@ InputDateRangeTemplate.args = {
47
47
  error: false,
48
48
  disabled: false,
49
49
  isHoverable: false,
50
- minDate: "",
51
- maxDate: "",
50
+ // format: 'DD/MM/YYYY',
51
+ minDate: '01/10/2022',
52
+ maxDate: '04/20/2022',
53
+ // isDontLimitFuture: true,
52
54
  // short: true,
53
55
  isCompact: false,
54
56
  // isFocused: true,
@@ -56,7 +58,7 @@ InputDateRangeTemplate.args = {
56
58
  isCompareHidden: true,
57
59
  hideArrows: false,
58
60
  isOptionsRight: false,
59
- isShortWeekNames: false
61
+ isShortWeekNames: false,
60
62
  // limitRange,
61
63
  // isUseAbs,
62
64
  // absTooltip