intelicoreact 0.0.4 → 0.0.8

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 (147) 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/DateTime/DateTime.stories.js +1 -1
  5. package/dist/Atomic/FormElements/Dropdown/Dropdown.js +64 -32
  6. package/dist/Atomic/FormElements/Dropdown/Dropdown.scss +26 -3
  7. package/dist/Atomic/FormElements/Dropdown/Dropdown.stories.js +40 -9
  8. package/dist/Atomic/FormElements/Input/Input.js +141 -97
  9. package/dist/Atomic/FormElements/Input/Input.scss +18 -15
  10. package/dist/Atomic/FormElements/Input/Input.stories.js +46 -29
  11. package/dist/Atomic/FormElements/InputCalendar/InputCalendar.js +89 -0
  12. package/dist/Atomic/FormElements/{Calendar/Calendar.stories.js → InputCalendar/InputCalendar.stories.js} +19 -20
  13. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.js +234 -0
  14. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.scss +626 -0
  15. package/dist/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +91 -0
  16. package/dist/Atomic/FormElements/InputDateRange/components/Datepicker.js +491 -0
  17. package/dist/Atomic/FormElements/InputDateRange/components/OpenedPart.js +156 -0
  18. package/dist/Atomic/FormElements/InputDateRange/components/SelectItem.js +46 -0
  19. package/dist/Atomic/FormElements/InputDateRange/dependencies.js +249 -0
  20. package/dist/Atomic/FormElements/Label/Label.js +3 -10
  21. package/dist/Atomic/FormElements/Label/Label.scss +2 -0
  22. package/dist/Atomic/FormElements/Label/Label.stories.js +5 -4
  23. package/dist/Atomic/FormElements/Modal/Modal.stories.js +64 -18
  24. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +254 -0
  25. package/dist/Atomic/FormElements/NumericInput/NumericInput.scss +135 -0
  26. package/dist/Atomic/FormElements/NumericInput/NumericInput.stories.js +121 -0
  27. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +167 -0
  28. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +101 -0
  29. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +81 -0
  30. package/dist/Atomic/FormElements/Table/Table.scss +1 -1
  31. package/dist/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  32. package/dist/Atomic/MainMenu/MainMenu.scss +2 -2
  33. package/dist/Atomic/UI/Accordion/Accordion.scss +2 -2
  34. package/dist/Atomic/UI/Arrow/Arrow.js +80 -0
  35. package/dist/Atomic/UI/Arrow/Arrow.scss +19 -0
  36. package/dist/Atomic/UI/Arrow/Arrow.stories.js +46 -0
  37. package/dist/Atomic/UI/Button/Button.js +4 -2
  38. package/dist/Atomic/UI/Button/Button.scss +26 -0
  39. package/dist/Atomic/UI/Button/Button.stories.js +2 -2
  40. package/dist/Atomic/UI/Calendar/Calendar.js +146 -0
  41. package/dist/Atomic/UI/Calendar/Calendar.scss +544 -0
  42. package/dist/Atomic/UI/Calendar/Calendar.stories.js +38 -0
  43. package/dist/Atomic/UI/Price/Price.js +1 -0
  44. package/dist/Atomic/UI/Status/Status.scss +1 -1
  45. package/dist/Constants/index.constants.js +8 -0
  46. package/dist/Functions/inputExecutor.js +58 -0
  47. package/dist/Functions/useClickOutside.js +25 -0
  48. package/dist/Functions/utils.js +10 -2
  49. package/dist/Molecular/Datepicker/Datepicker.js +451 -0
  50. package/dist/Molecular/Datepicker/Datepicker.scss +8 -0
  51. package/dist/Molecular/Datepicker/Datepicker.stories.js +44 -0
  52. package/dist/Molecular/Datepicker/components/Calendar.js +156 -0
  53. package/dist/Molecular/FormElements/FormElement.js +40 -0
  54. package/dist/Molecular/FormElements/FormElement.scss +8 -0
  55. package/dist/Molecular/FormElements/FormElement.stories.js +73 -0
  56. package/dist/scss/_vars.scss +3 -1
  57. package/dist/scss/main.scss +3 -3
  58. package/package.json +9 -4
  59. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.js +12 -2
  60. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.scss +91 -60
  61. package/src/Atomic/FormElements/CheckboxInput/CheckboxInput.stories.js +4 -3
  62. package/src/Atomic/FormElements/DateTime/DateTime.stories.js +1 -1
  63. package/src/Atomic/FormElements/Dropdown/Dropdown.js +57 -19
  64. package/src/Atomic/FormElements/Dropdown/Dropdown.scss +26 -3
  65. package/src/Atomic/FormElements/Dropdown/Dropdown.stories.js +37 -15
  66. package/src/Atomic/FormElements/Input/Input.js +136 -79
  67. package/src/Atomic/FormElements/Input/Input.scss +18 -15
  68. package/src/Atomic/FormElements/Input/Input.stories.js +48 -31
  69. package/src/Atomic/FormElements/InputCalendar/InputCalendar.js +43 -0
  70. package/src/Atomic/FormElements/InputCalendar/InputCalendar.stories.js +27 -0
  71. package/src/Atomic/FormElements/InputDateRange/InputDateRange.js +214 -0
  72. package/src/Atomic/FormElements/InputDateRange/InputDateRange.scss +626 -0
  73. package/src/Atomic/FormElements/InputDateRange/InputDateRange.stories.js +61 -0
  74. package/src/Atomic/FormElements/InputDateRange/components/Datepicker.js +412 -0
  75. package/src/Atomic/FormElements/InputDateRange/components/OpenedPart.js +114 -0
  76. package/src/Atomic/FormElements/InputDateRange/components/SelectItem.js +24 -0
  77. package/src/Atomic/FormElements/InputDateRange/dependencies.js +161 -0
  78. package/src/Atomic/FormElements/Label/Label.js +3 -4
  79. package/src/Atomic/FormElements/Label/Label.scss +2 -0
  80. package/src/Atomic/FormElements/Label/Label.stories.js +5 -4
  81. package/src/Atomic/FormElements/Modal/Modal.stories.js +60 -15
  82. package/src/Atomic/FormElements/NumericInput/NumericInput.js +220 -0
  83. package/src/Atomic/FormElements/NumericInput/NumericInput.scss +135 -0
  84. package/src/Atomic/FormElements/NumericInput/NumericInput.stories.js +94 -0
  85. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.js +146 -0
  86. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.scss +101 -0
  87. package/src/Atomic/FormElements/RangeCalendar/RangeCalendar.stories.js +54 -0
  88. package/src/Atomic/FormElements/Table/Table.scss +1 -1
  89. package/src/Atomic/FormElements/Textarea/Textarea.scss +1 -1
  90. package/src/Atomic/MainMenu/MainMenu.scss +2 -2
  91. package/src/Atomic/UI/Accordion/Accordion.scss +2 -2
  92. package/src/Atomic/UI/Arrow/Arrow.js +41 -0
  93. package/src/Atomic/UI/Arrow/Arrow.scss +19 -0
  94. package/src/Atomic/UI/Arrow/Arrow.stories.js +32 -0
  95. package/src/Atomic/UI/Button/Button.js +3 -3
  96. package/src/Atomic/UI/Button/Button.scss +26 -0
  97. package/src/Atomic/UI/Button/Button.stories.js +4 -3
  98. package/src/Atomic/{FormElements → UI}/Calendar/Calendar.js +26 -23
  99. package/src/Atomic/UI/Calendar/Calendar.scss +544 -0
  100. package/src/Atomic/UI/Calendar/Calendar.stories.js +24 -0
  101. package/src/Atomic/UI/Price/Price.js +1 -0
  102. package/src/Atomic/UI/Status/Status.scss +1 -1
  103. package/src/Constants/index.constants.js +41 -0
  104. package/src/Functions/inputExecutor.js +62 -0
  105. package/src/Functions/useClickOutside.js +15 -0
  106. package/src/Functions/utils.js +10 -1
  107. package/src/Molecular/Datepicker/Datepicker.js +346 -0
  108. package/src/Molecular/Datepicker/Datepicker.scss +8 -0
  109. package/src/Molecular/Datepicker/Datepicker.stories.js +27 -0
  110. package/src/Molecular/Datepicker/components/Calendar.js +118 -0
  111. package/src/Molecular/FormElements/FormElement.js +18 -0
  112. package/src/Molecular/FormElements/FormElement.scss +8 -0
  113. package/src/Molecular/FormElements/FormElement.stories.js +59 -0
  114. package/src/scss/_vars.scss +3 -1
  115. package/src/scss/main.scss +3 -3
  116. package/dist/Atomic/FormElements/Calendar/Calendar.js +0 -127
  117. package/dist/Atomic/FormElements/Calendar/Calendar.scss +0 -498
  118. package/dist/scss/anme/_anme-bootstrap-grid.scss +0 -748
  119. package/dist/scss/anme/_anme-elements.scss +0 -269
  120. package/dist/scss/anme/_anme-grid.scss +0 -111
  121. package/dist/scss/anme/_anme-justify.scss +0 -111
  122. package/dist/scss/anme/_anme-mixins-media.scss +0 -116
  123. package/dist/scss/anme/_anme-mixins.scss +0 -166
  124. package/dist/scss/anme/_anme-normalize.scss +0 -8
  125. package/dist/scss/anme/_anme-overall.scss +0 -34
  126. package/dist/scss/anme/_anme-padding-margins.scss +0 -419
  127. package/dist/scss/anme/_anme-table.scss +0 -81
  128. package/dist/scss/anme/_anme-theme.scss +0 -275
  129. package/dist/scss/anme/_anme-vars.scss +0 -91
  130. package/dist/scss/anme/_code-styling.scss +0 -23
  131. package/dist/scss/anme/styles.scss +0 -12
  132. package/src/Atomic/FormElements/Calendar/Calendar.scss +0 -498
  133. package/src/Atomic/FormElements/Calendar/Calendar.stories.js +0 -26
  134. package/src/scss/anme/_anme-bootstrap-grid.scss +0 -748
  135. package/src/scss/anme/_anme-elements.scss +0 -269
  136. package/src/scss/anme/_anme-grid.scss +0 -111
  137. package/src/scss/anme/_anme-justify.scss +0 -111
  138. package/src/scss/anme/_anme-mixins-media.scss +0 -116
  139. package/src/scss/anme/_anme-mixins.scss +0 -166
  140. package/src/scss/anme/_anme-normalize.scss +0 -8
  141. package/src/scss/anme/_anme-overall.scss +0 -34
  142. package/src/scss/anme/_anme-padding-margins.scss +0 -419
  143. package/src/scss/anme/_anme-table.scss +0 -81
  144. package/src/scss/anme/_anme-theme.scss +0 -275
  145. package/src/scss/anme/_anme-vars.scss +0 -91
  146. package/src/scss/anme/_code-styling.scss +0 -23
  147. package/src/scss/anme/styles.scss +0 -12
@@ -0,0 +1,214 @@
1
+ import React, { useState, useEffect, useRef } from 'react';
2
+ import cn from 'classnames';
3
+ import moment from 'moment-timezone';
4
+
5
+ import { useClickOutside, useToggle, getActualDateRange, INTERVALS, ALL_TIME_KEY, CUSTOM_INTERVAL_KEY_TEXT } from './dependencies';
6
+
7
+ import OpenedPart from './components/OpenedPart';
8
+ import Arrow from '../../UI/Arrow/Arrow';
9
+
10
+ import './InputDateRange.scss';
11
+
12
+ const InputDateRange = props => {
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') } : {})
46
+ };
47
+
48
+ onChange(formatedValue);
49
+ return formatedValue;
50
+ };
51
+
52
+ const Range = () => {
53
+ const SYMBOLS_QUANTITY_IF_TIME_ADDED = 13;
54
+ if (!actualValues.start && value.start) {
55
+ actualValues.start = value.start;
56
+ actualValues.end = value.end || '';
57
+ }
58
+ const { start, end } = actualValues;
59
+ if (!start || !end) return null;
60
+
61
+ const startTime = moment(start).format('HH:mm');
62
+ const endTime = moment(end).format('HH:mm');
63
+
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
+ }`;
68
+
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
+ });
73
+
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
+ >
145
+ <div
146
+ className={cn('date-range-input__absolut-wraper', {
147
+ 'date-range-input__absolut-wraper_right-position': isOptionsRight
148
+ })}
149
+ >
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}
156
+ >
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 />
167
+ </div>
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
+ )}
207
+ </div>
208
+ </div>
209
+ {error && <span className="date-range-input__error-block">{error}</span>}
210
+ </div>
211
+ );
212
+ };
213
+
214
+ export default React.memo(InputDateRange);