intelicoreact 0.0.66 → 0.0.74

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 (82) hide show
  1. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.js +6 -2
  2. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +91 -60
  3. package/dist/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +2 -1
  4. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +48 -17
  5. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +21 -3
  6. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +22 -6
  7. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +24 -43
  8. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.scss +98 -73
  9. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +3 -156
  10. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +11 -9
  11. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +3 -3
  12. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +7 -7
  13. package/dist/Atomic/FormElements/Table/Table.scss +1 -1
  14. package/dist/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  15. package/dist/Atomic/MainMenu/MainMenu.scss +2 -2
  16. package/dist/Atomic/UI/Accordion/Accordion.scss +2 -2
  17. package/dist/Atomic/UI/Arrow/Arrow.js +7 -8
  18. package/dist/Atomic/UI/Calendar/Calendar.js +3 -2
  19. package/dist/Atomic/UI/Calendar/Calendar.stories.js +3 -2
  20. package/dist/Atomic/UI/Status/Status.scss +1 -1
  21. package/dist/Molecular/Datepicker/Datepicker.js +451 -0
  22. package/dist/Molecular/Datepicker/Datepicker.scss +8 -0
  23. package/dist/Molecular/Datepicker/Datepicker.stories.js +44 -0
  24. package/dist/Molecular/Datepicker/components/Calendar.js +156 -0
  25. package/dist/scss/_vars.scss +3 -1
  26. package/dist/scss/main.scss +1 -1
  27. package/package.json +6 -4
  28. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.js +12 -2
  29. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +91 -60
  30. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +4 -3
  31. package/src/Atomic/FormElements/Dropdown/Dropdown.js +53 -19
  32. package/src/Atomic/FormElements/Dropdown/Dropdown.scss +21 -3
  33. package/src/Atomic/FormElements/Dropdown/Dropdown.stories.js +28 -15
  34. package/src/Atomic/FormElements/InputDateRange/InputDateRange.js +191 -213
  35. package/src/Atomic/FormElements/InputDateRange/InputDateRange.scss +98 -73
  36. package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +35 -123
  37. package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +10 -7
  38. package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +2 -2
  39. package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +1 -1
  40. package/src/Atomic/FormElements/InputDateRange/dependencies.js +6 -6
  41. package/src/Atomic/FormElements/Table/Table.scss +1 -1
  42. package/src/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  43. package/src/Atomic/MainMenu/MainMenu.scss +2 -2
  44. package/src/Atomic/UI/Accordion/Accordion.scss +2 -2
  45. package/src/Atomic/UI/Arrow/Arrow.js +5 -5
  46. package/src/Atomic/UI/Calendar/Calendar.js +2 -2
  47. package/src/Atomic/UI/Calendar/Calendar.stories.js +2 -1
  48. package/src/Atomic/UI/Status/Status.scss +1 -1
  49. package/src/Molecular/Datepicker/Datepicker.js +346 -0
  50. package/src/Molecular/Datepicker/Datepicker.scss +8 -0
  51. package/src/Molecular/Datepicker/Datepicker.stories.js +27 -0
  52. package/src/Molecular/Datepicker/components/Calendar.js +118 -0
  53. package/src/scss/_vars.scss +3 -1
  54. package/src/scss/main.scss +1 -1
  55. package/dist/scss/anme/_anme-bootstrap-grid.scss +0 -748
  56. package/dist/scss/anme/_anme-elements.scss +0 -269
  57. package/dist/scss/anme/_anme-grid.scss +0 -111
  58. package/dist/scss/anme/_anme-justify.scss +0 -111
  59. package/dist/scss/anme/_anme-mixins-media.scss +0 -116
  60. package/dist/scss/anme/_anme-mixins.scss +0 -166
  61. package/dist/scss/anme/_anme-normalize.scss +0 -8
  62. package/dist/scss/anme/_anme-overall.scss +0 -34
  63. package/dist/scss/anme/_anme-padding-margins.scss +0 -419
  64. package/dist/scss/anme/_anme-table.scss +0 -81
  65. package/dist/scss/anme/_anme-theme.scss +0 -275
  66. package/dist/scss/anme/_anme-vars.scss +0 -91
  67. package/dist/scss/anme/_code-styling.scss +0 -23
  68. package/dist/scss/anme/styles.scss +0 -12
  69. package/src/scss/anme/_anme-bootstrap-grid.scss +0 -748
  70. package/src/scss/anme/_anme-elements.scss +0 -269
  71. package/src/scss/anme/_anme-grid.scss +0 -111
  72. package/src/scss/anme/_anme-justify.scss +0 -111
  73. package/src/scss/anme/_anme-mixins-media.scss +0 -116
  74. package/src/scss/anme/_anme-mixins.scss +0 -166
  75. package/src/scss/anme/_anme-normalize.scss +0 -8
  76. package/src/scss/anme/_anme-overall.scss +0 -34
  77. package/src/scss/anme/_anme-padding-margins.scss +0 -419
  78. package/src/scss/anme/_anme-table.scss +0 -81
  79. package/src/scss/anme/_anme-theme.scss +0 -275
  80. package/src/scss/anme/_anme-vars.scss +0 -91
  81. package/src/scss/anme/_code-styling.scss +0 -23
  82. package/src/scss/anme/styles.scss +0 -12
@@ -7,35 +7,48 @@ export default {
7
7
  component: Dropdown,
8
8
  argTypes: {
9
9
  className: {
10
- description: 'string'
10
+ description: 'string',
11
11
  },
12
- value: { description: 'string - current option'},
12
+ value: { description: 'string - current option' },
13
13
  isSearchable: {
14
14
  description: 'boolean - enable search',
15
15
  },
16
- onChange: { description: 'callback return selected value'}
17
- }
16
+ onChange: { description: 'callback return selected value' },
17
+ entity: {
18
+ description: 'string',
19
+ },
20
+ },
21
+ };
22
+
23
+ const buttonStyles={
24
+ border: 'solid 1px #000',
25
+ padding: '5px'
18
26
  };
19
27
 
20
- const Template = args => {
28
+ const Template = (args) => {
21
29
  const [value, setValue] = useState('');
22
30
  return (
23
- <div style={{ width: 200 }}>
24
- <Dropdown {...args} value={value} onChange={setValue} />
25
- </div>
31
+ <>
32
+ <div style={{ width: 200 }}>
33
+ <Dropdown {...args} value={value} onChange={setValue} />
34
+ </div>
35
+ <button style={buttonStyles} className='mt10' onClick={() => {console.log('click!'); setValue('')}} >Reset</button>
36
+ </>
26
37
  );
27
38
  };
28
39
 
29
40
  export const DropdownTemplate = Template.bind({});
30
41
 
31
42
  DropdownTemplate.args = {
43
+ entity: 'entity',
44
+ value: 'drop6',
32
45
  placeholder: 'Placeholder',
33
46
  isSearchable: true,
34
47
  options: [
35
- { label: 'Dropdown1', value: 'drop1', className: 'status status--approved' },
36
48
  { label: 'Dropdown2', value: 'drop2' },
37
49
  { label: 'Dropdown3', value: 'drop3', disabled: true },
38
50
  { label: 'Dropdown4', value: 'drop4' },
51
+ { label: 'Dropdown1', value: 'drop1', className: 'status status--approved' },
39
52
  { label: 'Dropdown5', value: 'drop5' },
40
53
  { label: 'Dropdown6', value: 'drop6' },
41
54
  {
@@ -43,17 +56,17 @@ DropdownTemplate.args = {
43
56
  items: [
44
57
  { label: 'Group 11', value: 'group11' },
45
58
  { label: 'Group 12', value: 'group12', disabled: true },
46
- { label: 'Group 13', value: 'group13' }
47
- ]
59
+ { label: 'Group 13', value: 'group13' },
60
+ ],
48
61
  },
49
62
  {
50
63
  label: 'Some Group 2',
51
64
  items: [
52
65
  { label: 'Group 21', value: 'group21' },
53
66
  { label: 'Group 22', value: 'group22' },
54
- { label: 'Group 23', value: 'group23' }
55
- ]
56
- }
67
+ { label: 'Group 23', value: 'group23' },
68
+ ],
69
+ },
57
70
  ],
58
- error: ''
71
+ error: '',
59
72
  };
@@ -1,4 +1,4 @@
1
- import React, { useState, useEffect, useRef, useMemo } from 'react';
1
+ import React, { useState, useEffect, useRef } from 'react';
2
2
  import cn from 'classnames';
3
3
  import moment from 'moment-timezone';
4
4
 
@@ -7,235 +7,213 @@ import { useClickOutside, useToggle, getActualDateRange, INTERVALS, ALL_TIME_KEY
7
7
  import OpenedPart from './components/OpenedPart';
8
8
  import Arrow from '../../UI/Arrow/Arrow';
9
9
 
10
- import './InputDateRange.scss'
10
+ import './InputDateRange.scss';
11
11
 
12
12
  const InputDateRange = props => {
13
- const {
14
- txt,
15
- id,
16
- label,
17
- className,
18
- buttonsTypes,
19
- value,
20
- onChange = () => {},
21
- error,
22
- disabled,
23
- isHoverable,
24
- short,
25
- isCompact = false,
26
- // isFocused = false,
27
- isIntervalsHidden = false,
28
- isCompareHidden = false,
29
- hideArrows = false,
30
- isOptionsRight,
31
- limitRange,
32
- isShortWeekNames,
33
- isUseAbs,
34
- absTooltip,
35
- } = props;
36
-
37
- const actualValues = getActualDateRange(value);
38
- const { isToggled, toggle, toggleOn, toggleOff } = useToggle(false);
39
- const [current, setCurrent] = useState(actualValues?.intervalKey);
40
- const [isCompare, setIsCompare] = useState(actualValues?.compare);
41
-
42
- const ref = !isUseAbs ? useClickOutside(toggleOff) : useRef(null);
43
- const internalContainerRef = useRef(null);
44
- const isEndDateNearFuture = moment(actualValues?.end).isSameOrAfter(moment());
45
-
46
- const handleChange = input => {
47
- const newValue = getActualDateRange(input);
48
- const formatedValue = {
49
- intervalKey: newValue.intervalKey,
50
- start: newValue.start ? moment(newValue.start).format('YYYY-MM-DDTHH:mm') : newValue.start,
51
- end: newValue.end ? moment(newValue.end).format('YYYY-MM-DDTHH:mm') : newValue.end,
52
- ...(newValue.compare ? {compare: newValue.compare} : {}),
53
- ...(newValue.startPrevDate ? {startPrevDate: moment(newValue.startPrevDate).format('YYYY-MM-DDTHH:mm')} : {}),
54
- ...(newValue.endPrevDate ? {endPrevDate: moment(newValue.endPrevDate).format('YYYY-MM-DDTHH:mm')} : {}),
55
- };
56
-
57
- onChange(formatedValue);
58
- return formatedValue;
13
+ const {
14
+ txt,
15
+ id,
16
+ label,
17
+ className,
18
+ value,
19
+ onChange = () => {},
20
+ error,
21
+ disabled,
22
+ isHoverable,
23
+ isCompact = false,
24
+ hideArrows = false,
25
+ isOptionsRight,
26
+ isUseAbs,
27
+ } = props;
28
+
29
+ const actualValues = getActualDateRange(value);
30
+ const { isToggled, toggle, toggleOn, toggleOff } = useToggle(false);
31
+ const [current, setCurrent] = useState(actualValues?.intervalKey);
32
+ const [isCompare, setIsCompare] = useState(actualValues?.compare);
33
+
34
+ const ref = !isUseAbs ? useClickOutside(toggleOff) : useRef(null);
35
+ const internalContainerRef = useRef(null);
36
+
37
+ const handleChange = input => {
38
+ const newValue = getActualDateRange(input);
39
+ const formatedValue = {
40
+ intervalKey: newValue.intervalKey,
41
+ start: newValue.start ? moment(newValue.start).format('YYYY-MM-DDTHH:mm') : newValue.start,
42
+ end: newValue.end ? moment(newValue.end).format('YYYY-MM-DDTHH:mm') : newValue.end,
43
+ ...(newValue.compare ? { compare: newValue.compare } : {}),
44
+ ...(newValue.startPrevDate ? { startPrevDate: moment(newValue.startPrevDate).format('YYYY-MM-DDTHH:mm') } : {}),
45
+ ...(newValue.endPrevDate ? { endPrevDate: moment(newValue.endPrevDate).format('YYYY-MM-DDTHH:mm') } : {})
59
46
  };
60
47
 
61
- const Range = () => {
62
- const SYMBOLS_QUANTITY_IF_TIME_ADDED = 13;
63
- const { start, end } = actualValues;
64
- if (!start || !end) return null;
48
+ onChange(formatedValue);
49
+ return formatedValue;
50
+ };
65
51
 
66
- const startTime = moment(start).format('HH:mm');
67
- const endTime = moment(end).format('HH:mm');
52
+ const [mountDate, setMD] = useState(false);
68
53
 
69
- const firstPart = `${moment(start).format('ll')} ${startTime !== '00:00' ? `(${startTime})` : ''}`;
70
- const secondPart = `${(endTime !== '00:00' ? moment(end) : moment(end).subtract(1, 'days')).format('ll')} ${
71
- endTime !== '00:00' ? `(${endTime})` : ''
72
- }`;
73
-
74
- const getClasses = base => cn('date-range-input__range-text', {
75
- 'date-range-input__range-text_little': base.length > SYMBOLS_QUANTITY_IF_TIME_ADDED
76
- });
77
-
78
- return (
79
- <>
80
- <span className={getClasses(firstPart)}>
81
- {firstPart}
82
- {endTime === '00:00' && moment(end).isSame(moment(start).add(1, 'days'), 'day') ? '' : ` - `}
83
- </span>
84
- {endTime === '00:00' && moment(end).isSame(moment(start).add(1, 'days'), 'day')
85
- ? null
86
- :<span className={getClasses(secondPart)}>{secondPart}</span>
87
-
88
- }
89
- </>
90
- )
54
+ useEffect(() => {
55
+ if (value && value.start && !mountDate) {
56
+ setMD(true);
57
+ handleChange({ ...value });
91
58
  }
59
+ }, [value]);
92
60
 
93
- const slideInterval = (direction = 'forward') => {
94
- const { start, end } = actualValues;
95
- const intervalHoursCount = moment(end).diff(start, 'hours');
96
- let newEnd, newStart;
97
- const endHours = moment(end).hours();
98
- const startHours = moment(start).hours();
99
- if (direction === 'forward') {
100
- newStart = moment(end)
101
- .add(endHours === 0 ? 0 : 1, 'day')
102
- .hours(startHours)
103
- .toDate();
104
- newEnd = moment(newStart).add(intervalHoursCount, 'hours');
105
- } else {
106
- newEnd = moment(start)
107
- .subtract(endHours === 0 ? 0 : 1, 'day')
108
- .hours(endHours)
109
- .toDate();
110
- newStart = moment(newEnd).subtract(intervalHoursCount, 'hours');
111
- }
112
- const startPrevDate = moment(newStart).subtract(intervalHoursCount, 'hours').subtract(1, 'seconds');
113
- const endPrevDate = moment(newEnd).subtract(1, 'seconds');
114
- handleChange({
115
- ...value,
116
- intervalKey: getActualDateRange({
117
- start: newStart,
118
- end: newEnd,
119
- })?.intervalKey,
120
- start: newStart,
121
- end: newEnd,
122
- startPrevDate,
123
- endPrevDate,
124
- });
125
- };
61
+ const Range = () => {
62
+ const SYMBOLS_QUANTITY_IF_TIME_ADDED = 13;
63
+ const { start, end } = actualValues;
64
+ if (!start || !end) return null;
126
65
 
127
- const handleArrowClick = type => {
128
- slideInterval(type === 'right' ? 'forward' : 'back');
129
- toggleOff();
130
- };
66
+ const startTime = moment(start).format('HH:mm');
67
+ const endTime = moment(end).format('HH:mm');
131
68
 
132
- // const absData = useMemo(
133
- // () => ({
134
- // body: OpenedPart,
135
- // props: {
136
- // ...props,
137
- // key: `${actualValues.start}-${actualValues.end}-${actualValues.intervalKey}-${current}-${isCompare}`,
138
- // actualValues,
139
- // current,
140
- // setCurrent,
141
- // isCompare,
142
- // setIsCompare,
143
- // toggleOff,
144
- // onChange,
145
- // },
146
- // clickOutsideCallback: () => toggleOff(),
147
- // top: internalContainerRef.current?.getBoundingClientRect()?.bottom || 0,
148
- // left: internalContainerRef.current?.getBoundingClientRect()?.left || 0,
149
- // }),
150
- // [isToggled, value, actualValues, current, isCompare],
151
- // );
152
-
153
- // useEffect(() => {
154
- // if (current && isUseAbs && absTooltip) onChange(current, 'absTooltip/props/current');
155
- // }, [current]);
156
-
157
- // useEffect(() => {
158
- // if (isUseAbs) onChange(isToggled ? absData : null, 'absTooltip');
159
- // }, [isToggled]);
69
+ const firstPart = `${moment(start).format('ll')} ${startTime !== '00:00' ? `(${startTime})` : ''}`;
70
+ const secondPart = `${(endTime !== '00:00' ? moment(end) : moment(end).subtract(1, 'days')).format('ll')} ${
71
+ endTime !== '00:00' ? `(${endTime})` : ''
72
+ }`;
73
+
74
+ const getClasses = base =>
75
+ cn('date-range-input__range-text', {
76
+ 'date-range-input__range-text_little': base.length > SYMBOLS_QUANTITY_IF_TIME_ADDED
77
+ });
160
78
 
161
79
  return (
80
+ <>
81
+ <span className={getClasses(firstPart)}>
82
+ {firstPart}
83
+ {endTime === '00:00' && moment(end).isSame(moment(start).add(1, 'days'), 'day') ? '' : ` - `}
84
+ </span>
85
+ {endTime === '00:00' && moment(end).isSame(moment(start).add(1, 'days'), 'day') ? null : (
86
+ <span className={getClasses(secondPart)}>{secondPart}</span>
87
+ )}
88
+ </>
89
+ );
90
+ };
91
+
92
+ const slideInterval = (direction = 'forward') => {
93
+ const { start, end } = actualValues;
94
+ const intervalHoursCount = moment(end).diff(start, 'hours');
95
+ let newEnd;
96
+ let newStart;
97
+ const endHours = moment(end).hours();
98
+ const startHours = moment(start).hours();
99
+ if (direction === 'forward') {
100
+ newStart = moment(end)
101
+ .add(endHours === 0 ? 0 : 1, 'day')
102
+ .hours(startHours)
103
+ .toDate();
104
+ newEnd = moment(newStart).add(intervalHoursCount, 'hours');
105
+ } else {
106
+ newEnd = moment(start)
107
+ .subtract(endHours === 0 ? 0 : 1, 'day')
108
+ .hours(endHours)
109
+ .toDate();
110
+ newStart = moment(newEnd).subtract(intervalHoursCount, 'hours');
111
+ }
112
+ const startPrevDate = moment(newStart).subtract(intervalHoursCount, 'hours').subtract(1, 'seconds');
113
+ const endPrevDate = moment(newEnd).subtract(1, 'seconds');
114
+ handleChange({
115
+ ...value,
116
+ intervalKey: getActualDateRange({
117
+ start: newStart,
118
+ end: newEnd
119
+ })?.intervalKey,
120
+ start: newStart,
121
+ end: newEnd,
122
+ startPrevDate,
123
+ endPrevDate
124
+ });
125
+ };
126
+
127
+ const handleArrowClick = type => {
128
+ slideInterval(type === 'right' ? 'forward' : 'back');
129
+ toggleOff();
130
+ };
131
+
132
+ return (
133
+ <div
134
+ ref={internalContainerRef}
135
+ className={cn('date-range-input', className, {
136
+ 'date-range-input_compact': isCompact,
137
+ 'date-range-input_hide-arrows': hideArrows,
138
+ 'date-range-input_focused': isToggled,
139
+ 'date-range-input_error': error,
140
+ 'date-range-input_disabled': disabled
141
+ })}
142
+ >
143
+ <span className="date-range-input__label">{label}</span>
144
+ <div
145
+ className="date-range-input__wraper"
146
+ ref={ref}
147
+ onMouseEnter={isHoverable ? toggleOn : () => null}
148
+ onMouseLeave={isHoverable ? toggleOff : () => null}
149
+ >
162
150
  <div
163
- ref={internalContainerRef}
164
- className={cn('date-range-input', className, {
165
- 'date-range-input_compact': isCompact,
166
- 'date-range-input_hide-arrows': hideArrows,
167
- 'date-range-input_focused': isToggled,
168
- 'date-range-input_error': error,
169
- 'date-range-input_disabled': disabled,
170
- })}
151
+ className={cn('date-range-input__absolut-wraper', {
152
+ 'date-range-input__absolut-wraper_right-position': isOptionsRight
153
+ })}
171
154
  >
172
- <span className="date-range-input__label" >{label}</span>
173
- <div
174
- className="date-range-input__wraper"
175
- ref={ref}
176
- onMouseEnter={isHoverable && toggleOn}
177
- onMouseLeave={isHoverable && toggleOff}
155
+ <div className={cn('date-range-input__static-part')}>
156
+ <button
157
+ id={id}
158
+ className={cn('date-range-input__toggle-button')}
159
+ disabled={disabled}
160
+ onClick={!disabled && !isHoverable ? toggle : undefined}
178
161
  >
179
- <div className={cn('date-range-input__absolut-wraper', {
180
- 'date-range-input__absolut-wraper_right-position': isOptionsRight,
181
- })}>
182
- <div className={cn('date-range-input__static-part')}>
183
- <button
184
- id={id}
185
- className={cn('date-range-input__toggle-button')}
186
- disabled={disabled}
187
- onClick={!disabled && !isHoverable ? toggle : undefined}
188
- >
189
- <div className="date-range-input__interval-key">
190
- <span>
191
- {(txt?.labels && txt.labels[actualValues?.intervalKey]) ?? (INTERVALS[actualValues?.intervalKey]?.label || CUSTOM_INTERVAL_KEY_TEXT)}
192
- </span>
193
- {current !== ALL_TIME_KEY && <span>:</span>}
194
- </div>
195
- {!isCompact && <div className={cn('date-range-input__range', {})}><Range /></div>}
196
- </button>
197
- {!isCompact && !hideArrows && (
198
- <div className={cn('date-range-input__arrows-block')}>
199
- <Arrow
200
- type="left"
201
- className="date-range-input__arrow"
202
- onClick={() => handleArrowClick("left")}
203
- disabled={disabled || actualValues?.intervalKey === ALL_TIME_KEY}
204
- />
205
- <Arrow
206
- type="right"
207
- className="date-range-input__arrow"
208
- onClick={() => handleArrowClick("right")}
209
- disabled={
210
- disabled ||
211
- actualValues?.intervalKey === ALL_TIME_KEY ||
212
- actualValues?.intervalKey === 'today' ||
213
- moment(actualValues?.end)
214
- .add(moment(actualValues?.end).diff(actualValues?.start, 'hours'), 'hours')
215
- .isAfter(moment().add(1, 'day').startOf('day'))
216
- }
217
- />
218
- </div>
219
- )}
220
- </div>
221
- {isToggled && !isUseAbs && (
222
- <OpenedPart
223
- {...props}
224
- ref={internalContainerRef}
225
- actualValues={actualValues}
226
- current={current}
227
- setCurrent={setCurrent}
228
- isCompare={isCompare}
229
- setIsCompare={setIsCompare}
230
- toggleOff={toggleOff}
231
- onChange={handleChange}
232
- />
233
- )}
162
+ <div className="date-range-input__interval-key">
163
+ <span>
164
+ {(txt?.labels && txt.labels[actualValues?.intervalKey]) ??
165
+ (INTERVALS[actualValues?.intervalKey]?.label || CUSTOM_INTERVAL_KEY_TEXT)}
166
+ </span>
167
+ {current !== ALL_TIME_KEY && <span>:</span>}
168
+ </div>
169
+ {!isCompact && (
170
+ <div className={cn('date-range-input__range', {})}>
171
+ <Range />
234
172
  </div>
235
- </div>
236
- {error && <span className="date-range-input__error-block">{error}</span>}
173
+ )}
174
+ </button>
175
+ {!isCompact && !hideArrows && (
176
+ <div className={cn('date-range-input__arrows-block')}>
177
+ <Arrow
178
+ type="left"
179
+ className="date-range-input__arrow"
180
+ onClick={() => handleArrowClick('left')}
181
+ disabled={disabled || actualValues?.intervalKey === ALL_TIME_KEY}
182
+ />
183
+ <Arrow
184
+ type="right"
185
+ className="date-range-input__arrow"
186
+ onClick={() => handleArrowClick('right')}
187
+ disabled={
188
+ disabled ||
189
+ actualValues?.intervalKey === ALL_TIME_KEY ||
190
+ actualValues?.intervalKey === 'today' ||
191
+ moment(actualValues?.end)
192
+ .add(moment(actualValues?.end).diff(actualValues?.start, 'hours'), 'hours')
193
+ .isAfter(moment().add(1, 'day').startOf('day'))
194
+ }
195
+ />
196
+ </div>
197
+ )}
198
+ </div>
199
+ {isToggled && !isUseAbs && (
200
+ <OpenedPart
201
+ {...props}
202
+ ref={internalContainerRef}
203
+ actualValues={actualValues}
204
+ current={current}
205
+ setCurrent={setCurrent}
206
+ isCompare={isCompare}
207
+ setIsCompare={setIsCompare}
208
+ toggleOff={toggleOff}
209
+ onChange={handleChange}
210
+ />
211
+ )}
237
212
  </div>
238
- );
213
+ </div>
214
+ {error && <span className="date-range-input__error-block">{error}</span>}
215
+ </div>
216
+ );
239
217
  };
240
218
 
241
219
  export default React.memo(InputDateRange);