intelicoreact 0.0.66 → 0.0.71

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 (81) 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 +16 -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 +4 -4
  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 +187 -214
  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 +2 -2
  38. package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +1 -1
  39. package/src/Atomic/FormElements/InputDateRange/dependencies.js +6 -6
  40. package/src/Atomic/FormElements/Table/Table.scss +1 -1
  41. package/src/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  42. package/src/Atomic/MainMenu/MainMenu.scss +2 -2
  43. package/src/Atomic/UI/Accordion/Accordion.scss +2 -2
  44. package/src/Atomic/UI/Arrow/Arrow.js +5 -5
  45. package/src/Atomic/UI/Calendar/Calendar.js +2 -2
  46. package/src/Atomic/UI/Calendar/Calendar.stories.js +2 -1
  47. package/src/Atomic/UI/Status/Status.scss +1 -1
  48. package/src/Molecular/Datepicker/Datepicker.js +346 -0
  49. package/src/Molecular/Datepicker/Datepicker.scss +8 -0
  50. package/src/Molecular/Datepicker/Datepicker.stories.js +27 -0
  51. package/src/Molecular/Datepicker/components/Calendar.js +118 -0
  52. package/src/scss/_vars.scss +3 -1
  53. package/src/scss/main.scss +1 -1
  54. package/dist/scss/anme/_anme-bootstrap-grid.scss +0 -748
  55. package/dist/scss/anme/_anme-elements.scss +0 -269
  56. package/dist/scss/anme/_anme-grid.scss +0 -111
  57. package/dist/scss/anme/_anme-justify.scss +0 -111
  58. package/dist/scss/anme/_anme-mixins-media.scss +0 -116
  59. package/dist/scss/anme/_anme-mixins.scss +0 -166
  60. package/dist/scss/anme/_anme-normalize.scss +0 -8
  61. package/dist/scss/anme/_anme-overall.scss +0 -34
  62. package/dist/scss/anme/_anme-padding-margins.scss +0 -419
  63. package/dist/scss/anme/_anme-table.scss +0 -81
  64. package/dist/scss/anme/_anme-theme.scss +0 -275
  65. package/dist/scss/anme/_anme-vars.scss +0 -91
  66. package/dist/scss/anme/_code-styling.scss +0 -23
  67. package/dist/scss/anme/styles.scss +0 -12
  68. package/src/scss/anme/_anme-bootstrap-grid.scss +0 -748
  69. package/src/scss/anme/_anme-elements.scss +0 -269
  70. package/src/scss/anme/_anme-grid.scss +0 -111
  71. package/src/scss/anme/_anme-justify.scss +0 -111
  72. package/src/scss/anme/_anme-mixins-media.scss +0 -116
  73. package/src/scss/anme/_anme-mixins.scss +0 -166
  74. package/src/scss/anme/_anme-normalize.scss +0 -8
  75. package/src/scss/anme/_anme-overall.scss +0 -34
  76. package/src/scss/anme/_anme-padding-margins.scss +0 -419
  77. package/src/scss/anme/_anme-table.scss +0 -81
  78. package/src/scss/anme/_anme-theme.scss +0 -275
  79. package/src/scss/anme/_anme-vars.scss +0 -91
  80. package/src/scss/anme/_code-styling.scss +0 -23
  81. 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,208 @@ 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
+ useEffect(() => {
53
+ handleChange({ ...value });
54
+ }, []);
68
55
 
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
- }`;
56
+ const Range = () => {
57
+ const SYMBOLS_QUANTITY_IF_TIME_ADDED = 13;
58
+ const { start, end } = actualValues;
59
+ if (!start || !end) return null;
73
60
 
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
- });
61
+ const startTime = moment(start).format('HH:mm');
62
+ const endTime = moment(end).format('HH:mm');
77
63
 
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
- )
91
- }
64
+ const firstPart = `${moment(start).format('ll')} ${startTime !== '00:00' ? `(${startTime})` : ''}`;
65
+ const secondPart = `${(endTime !== '00:00' ? moment(end) : moment(end).subtract(1, 'days')).format('ll')} ${
66
+ endTime !== '00:00' ? `(${endTime})` : ''
67
+ }`;
92
68
 
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
- };
126
-
127
- const handleArrowClick = type => {
128
- slideInterval(type === 'right' ? 'forward' : 'back');
129
- toggleOff();
130
- };
131
-
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 getClasses = base =>
70
+ cn('date-range-input__range-text', {
71
+ 'date-range-input__range-text_little': base.length > SYMBOLS_QUANTITY_IF_TIME_ADDED
72
+ });
160
73
 
161
74
  return (
75
+ <>
76
+ <span className={getClasses(firstPart)}>
77
+ {firstPart}
78
+ {endTime === '00:00' && moment(end).isSame(moment(start).add(1, 'days'), 'day') ? '' : ` - `}
79
+ </span>
80
+ {endTime === '00:00' && moment(end).isSame(moment(start).add(1, 'days'), 'day') ? null : (
81
+ <span className={getClasses(secondPart)}>{secondPart}</span>
82
+ )}
83
+ </>
84
+ );
85
+ };
86
+
87
+ const slideInterval = (direction = 'forward') => {
88
+ const { start, end } = actualValues;
89
+ const intervalHoursCount = moment(end).diff(start, 'hours');
90
+ let newEnd;
91
+ let newStart;
92
+ const endHours = moment(end).hours();
93
+ const startHours = moment(start).hours();
94
+ if (direction === 'forward') {
95
+ newStart = moment(end)
96
+ .add(endHours === 0 ? 0 : 1, 'day')
97
+ .hours(startHours)
98
+ .toDate();
99
+ newEnd = moment(newStart).add(intervalHoursCount, 'hours');
100
+ } else {
101
+ newEnd = moment(start)
102
+ .subtract(endHours === 0 ? 0 : 1, 'day')
103
+ .hours(endHours)
104
+ .toDate();
105
+ newStart = moment(newEnd).subtract(intervalHoursCount, 'hours');
106
+ }
107
+ const startPrevDate = moment(newStart).subtract(intervalHoursCount, 'hours').subtract(1, 'seconds');
108
+ const endPrevDate = moment(newEnd).subtract(1, 'seconds');
109
+ handleChange({
110
+ ...value,
111
+ intervalKey: getActualDateRange({
112
+ start: newStart,
113
+ end: newEnd
114
+ })?.intervalKey,
115
+ start: newStart,
116
+ end: newEnd,
117
+ startPrevDate,
118
+ endPrevDate
119
+ });
120
+ };
121
+
122
+ const handleArrowClick = type => {
123
+ slideInterval(type === 'right' ? 'forward' : 'back');
124
+ toggleOff();
125
+ };
126
+
127
+ return (
128
+ <div
129
+ ref={internalContainerRef}
130
+ className={cn('date-range-input', className, {
131
+ 'date-range-input_compact': isCompact,
132
+ 'date-range-input_hide-arrows': hideArrows,
133
+ 'date-range-input_focused': isToggled,
134
+ 'date-range-input_error': error,
135
+ 'date-range-input_disabled': disabled
136
+ })}
137
+ >
138
+ <span className="date-range-input__label">{label}</span>
139
+ <div
140
+ className="date-range-input__wraper"
141
+ ref={ref}
142
+ onMouseEnter={isHoverable ? toggleOn : () => null}
143
+ onMouseLeave={isHoverable ? toggleOff : () => null}
144
+ >
162
145
  <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
- })}
146
+ className={cn('date-range-input__absolut-wraper', {
147
+ 'date-range-input__absolut-wraper_right-position': isOptionsRight
148
+ })}
171
149
  >
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}
150
+ <div className={cn('date-range-input__static-part')}>
151
+ <button
152
+ id={id}
153
+ className={cn('date-range-input__toggle-button')}
154
+ disabled={disabled}
155
+ onClick={!disabled && !isHoverable ? toggle : undefined}
178
156
  >
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
- )}
157
+ <div className="date-range-input__interval-key">
158
+ <span>
159
+ {(txt?.labels && txt.labels[actualValues?.intervalKey]) ??
160
+ (INTERVALS[actualValues?.intervalKey]?.label || CUSTOM_INTERVAL_KEY_TEXT)}
161
+ </span>
162
+ {current !== ALL_TIME_KEY && <span>:</span>}
163
+ </div>
164
+ {!isCompact && (
165
+ <div className={cn('date-range-input__range', {})}>
166
+ <Range />
234
167
  </div>
235
- </div>
236
- {error && <span className="date-range-input__error-block">{error}</span>}
168
+ )}
169
+ </button>
170
+ {!isCompact && !hideArrows && (
171
+ <div className={cn('date-range-input__arrows-block')}>
172
+ <Arrow
173
+ type="left"
174
+ className="date-range-input__arrow"
175
+ onClick={() => handleArrowClick('left')}
176
+ disabled={disabled || actualValues?.intervalKey === ALL_TIME_KEY}
177
+ />
178
+ <Arrow
179
+ type="right"
180
+ className="date-range-input__arrow"
181
+ onClick={() => handleArrowClick('right')}
182
+ disabled={
183
+ disabled ||
184
+ actualValues?.intervalKey === ALL_TIME_KEY ||
185
+ actualValues?.intervalKey === 'today' ||
186
+ moment(actualValues?.end)
187
+ .add(moment(actualValues?.end).diff(actualValues?.start, 'hours'), 'hours')
188
+ .isAfter(moment().add(1, 'day').startOf('day'))
189
+ }
190
+ />
191
+ </div>
192
+ )}
193
+ </div>
194
+ {isToggled && !isUseAbs && (
195
+ <OpenedPart
196
+ {...props}
197
+ ref={internalContainerRef}
198
+ actualValues={actualValues}
199
+ current={current}
200
+ setCurrent={setCurrent}
201
+ isCompare={isCompare}
202
+ setIsCompare={setIsCompare}
203
+ toggleOff={toggleOff}
204
+ onChange={handleChange}
205
+ />
206
+ )}
237
207
  </div>
238
- );
208
+ </div>
209
+ {error && <span className="date-range-input__error-block">{error}</span>}
210
+ </div>
211
+ );
239
212
  };
240
213
 
241
214
  export default React.memo(InputDateRange);