intelicoreact 1.8.10 → 1.8.12

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 (259) hide show
  1. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.js +1 -0
  2. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.js +1 -0
  3. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.js +1 -0
  4. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.js +1 -0
  5. package/dist/Atomic/FormElements/NumericInput/NumericInput.js +1 -0
  6. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.js +1 -0
  7. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.js +1 -0
  8. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.js +1 -0
  9. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.js +1 -0
  10. package/dist/Atomic/FormElements/RangeInputs/RangeInputs.js +1 -1
  11. package/dist/Atomic/FormElements/RangeList/RangeList.js +1 -0
  12. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.js +1 -0
  13. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.js +1 -0
  14. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.js +1 -0
  15. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.js +1 -0
  16. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.js +1 -0
  17. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.js +1 -0
  18. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.js +1 -0
  19. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.js +1 -0
  20. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.js +1 -0
  21. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.interface.ts +3 -3
  22. package/dist/Atomic/FormElements/TagsDropdown/TagsDropdown.js +1 -1
  23. package/dist/Atomic/FormElements/Text/Text.js +1 -0
  24. package/dist/Atomic/FormElements/Textarea/Textarea.js +1 -0
  25. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.js +1 -0
  26. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.js +1 -0
  27. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.js +1 -0
  28. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.js +1 -0
  29. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.js +1 -0
  30. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.js +1 -0
  31. package/dist/Atomic/Layout/Header/Header.js +1 -0
  32. package/dist/Atomic/Layout/MainMenu/MainMenu.js +1 -0
  33. package/dist/Atomic/UI/AccordionTable/AccordionTable.js +1 -0
  34. package/dist/Atomic/UI/AccordionText/AccordionText.js +1 -0
  35. package/dist/Atomic/UI/Arrow/Arrow.js +1 -0
  36. package/dist/Atomic/UI/Box/Box.js +1 -0
  37. package/dist/Atomic/UI/Chart/Chart.js +1 -0
  38. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.js +1 -0
  39. package/dist/Atomic/UI/Chart/partial/optionsConstructor.js +1 -0
  40. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.js +1 -0
  41. package/dist/Atomic/UI/DateTime/DateTime.js +1 -0
  42. package/dist/Atomic/UI/DebugContainer/DebugContainer.js +1 -0
  43. package/dist/Atomic/UI/DebugContainer/useDebugContainer.js +1 -0
  44. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.js +1 -0
  45. package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.js +1 -0
  46. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.js +1 -0
  47. package/dist/Atomic/UI/PieChart/PieChart.js +1 -0
  48. package/dist/Atomic/UI/Table/Partials/TdCell.js +1 -0
  49. package/dist/Atomic/UI/Table/Partials/TdHeader.js +1 -0
  50. package/dist/Atomic/UI/Table/Partials/TdRow.js +1 -0
  51. package/dist/Atomic/UI/Table/Partials/TdTitle.js +1 -0
  52. package/dist/Atomic/UI/Table/Table.js +1 -0
  53. package/dist/Atomic/UI/Table/TdTypes/TdActions.js +1 -0
  54. package/dist/Atomic/UI/Table/TdTypes/TdPriority.js +1 -0
  55. package/dist/Atomic/UI/Table/TdTypes/TdRange.js +1 -0
  56. package/dist/Atomic/UI/Table/TdTypes/TdWeight.js +1 -0
  57. package/dist/Atomic/UI/Tag/Tag.interface.ts +1 -1
  58. package/dist/Atomic/UI/Tag/Tag.js +1 -1
  59. package/dist/Atomic/UI/TagList/TagList.js +1 -0
  60. package/dist/Atomic/UI/WizardStepper/constructor.js +1 -0
  61. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.js +1 -0
  62. package/dist/Functions/customEventListener.js +1 -0
  63. package/dist/Functions/operations.js +1 -0
  64. package/dist/Functions/useFormTools/functions/RenderFields.js +1 -0
  65. package/dist/Functions/useFormTools/index.js +1 -0
  66. package/dist/Functions/usePasswordChecker.js +1 -0
  67. package/dist/Functions/utils.js +1 -0
  68. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.js +1 -0
  69. package/dist/Molecular/CustomIcons/components/AlertCircle.js +1 -0
  70. package/dist/Molecular/CustomIcons/components/AppStore.js +1 -0
  71. package/dist/Molecular/CustomIcons/components/Arrow.js +1 -0
  72. package/dist/Molecular/CustomIcons/components/ArrowDown.js +1 -0
  73. package/dist/Molecular/CustomIcons/components/ArrowLeft.js +1 -0
  74. package/dist/Molecular/CustomIcons/components/ArrowRight.js +1 -0
  75. package/dist/Molecular/CustomIcons/components/ArrowUp.js +1 -0
  76. package/dist/Molecular/CustomIcons/components/Bell.js +1 -0
  77. package/dist/Molecular/CustomIcons/components/Button.js +1 -0
  78. package/dist/Molecular/CustomIcons/components/Campaigns.js +1 -0
  79. package/dist/Molecular/CustomIcons/components/Check.js +1 -0
  80. package/dist/Molecular/CustomIcons/components/Check2.js +1 -0
  81. package/dist/Molecular/CustomIcons/components/ChevronDown.js +1 -0
  82. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.js +1 -0
  83. package/dist/Molecular/CustomIcons/components/ChevronLeft.js +1 -0
  84. package/dist/Molecular/CustomIcons/components/ChevronRight.js +1 -0
  85. package/dist/Molecular/CustomIcons/components/ChevronUp.js +1 -0
  86. package/dist/Molecular/CustomIcons/components/ChevronUpDown.js +1 -0
  87. package/dist/Molecular/CustomIcons/components/Close.js +1 -0
  88. package/dist/Molecular/CustomIcons/components/ColumnsOrder.js +1 -0
  89. package/dist/Molecular/CustomIcons/components/Delete.js +1 -0
  90. package/dist/Molecular/CustomIcons/components/Edit.js +1 -0
  91. package/dist/Molecular/CustomIcons/components/Email.js +1 -0
  92. package/dist/Molecular/CustomIcons/components/FinturfLogo.js +1 -0
  93. package/dist/Molecular/CustomIcons/components/FinturfLogo2.js +1 -0
  94. package/dist/Molecular/CustomIcons/components/Flows.js +1 -0
  95. package/dist/Molecular/CustomIcons/components/Gift.js +1 -0
  96. package/dist/Molecular/CustomIcons/components/GoogleAuth.js +1 -0
  97. package/dist/Molecular/CustomIcons/components/GooglePlay.js +1 -0
  98. package/dist/Molecular/CustomIcons/components/HelpCircle.js +1 -0
  99. package/dist/Molecular/CustomIcons/components/HelpCircle2.js +1 -0
  100. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.js +1 -0
  101. package/dist/Molecular/CustomIcons/components/Home.js +1 -0
  102. package/dist/Molecular/CustomIcons/components/Home2.js +1 -0
  103. package/dist/Molecular/CustomIcons/components/Key.js +1 -0
  104. package/dist/Molecular/CustomIcons/components/Landers.js +1 -0
  105. package/dist/Molecular/CustomIcons/components/Lock.js +1 -0
  106. package/dist/Molecular/CustomIcons/components/Mail.js +1 -0
  107. package/dist/Molecular/CustomIcons/components/Mastercard.js +1 -0
  108. package/dist/Molecular/CustomIcons/components/Minus.js +1 -0
  109. package/dist/Molecular/CustomIcons/components/Offers.js +1 -0
  110. package/dist/Molecular/CustomIcons/components/Pause.js +1 -0
  111. package/dist/Molecular/CustomIcons/components/PayPal.js +1 -0
  112. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.js +1 -0
  113. package/dist/Molecular/CustomIcons/components/Phone.js +1 -0
  114. package/dist/Molecular/CustomIcons/components/Play.js +1 -0
  115. package/dist/Molecular/CustomIcons/components/Plus.js +1 -0
  116. package/dist/Molecular/CustomIcons/components/Profile.js +1 -0
  117. package/dist/Molecular/CustomIcons/components/QRCode.js +1 -0
  118. package/dist/Molecular/CustomIcons/components/Rectangle.js +1 -0
  119. package/dist/Molecular/CustomIcons/components/Revert.js +1 -0
  120. package/dist/Molecular/CustomIcons/components/Star.js +1 -0
  121. package/dist/Molecular/CustomIcons/components/Star2.js +1 -0
  122. package/dist/Molecular/CustomIcons/components/TrafficSources.js +1 -0
  123. package/dist/Molecular/CustomIcons/components/Trash.js +1 -0
  124. package/dist/Molecular/CustomIcons/components/TrashRed.js +1 -0
  125. package/dist/Molecular/CustomIcons/components/Triggers.js +1 -0
  126. package/dist/Molecular/CustomIcons/components/User.js +1 -0
  127. package/dist/Molecular/CustomIcons/components/Visa.js +1 -0
  128. package/dist/Molecular/CustomIcons/components/X.js +1 -0
  129. package/dist/Molecular/FormElement/FormElement.js +1 -0
  130. package/dist/Molecular/FormWithDependOn/FormWithDependOn.js +1 -0
  131. package/dist/Molecular/InputAddress/InputAddress.js +1 -0
  132. package/dist/Molecular/InputPassword/InputPassword.js +1 -0
  133. package/package.json +6 -13
  134. package/dist/Atomic/FormElements/Dropdown/components/DropdownLoader.jsx +0 -18
  135. package/dist/Atomic/FormElements/FormattedRawSSN/FormattedRawSSN_old.jsx +0 -121
  136. package/dist/Atomic/FormElements/MobileCalendar/MobileCalendar.jsx +0 -507
  137. package/dist/Atomic/FormElements/MultiSelect/MultiSelect.jsx +0 -46
  138. package/dist/Atomic/FormElements/NumericInput/NumericInput.jsx +0 -337
  139. package/dist/Atomic/FormElements/RadioGroup/RadioGroup.jsx +0 -66
  140. package/dist/Atomic/FormElements/RadioGroupWithInput/RadioGroupWithInput.jsx +0 -78
  141. package/dist/Atomic/FormElements/RadioRowSwitcher/RadioRowSwitcher.jsx +0 -54
  142. package/dist/Atomic/FormElements/RangeCalendar/RangeCalendar.jsx +0 -183
  143. package/dist/Atomic/FormElements/RangeList/RangeList.jsx +0 -181
  144. package/dist/Atomic/FormElements/RangeList/partial/RangeListRow.jsx +0 -41
  145. package/dist/Atomic/FormElements/RangeSlider/RangeSlider.jsx +0 -449
  146. package/dist/Atomic/FormElements/RangeSlider2/RangeSlider2.jsx +0 -865
  147. package/dist/Atomic/FormElements/SwitchableRow/SwitchableRow.jsx +0 -37
  148. package/dist/Atomic/FormElements/SwitcherCheckbox/SwitcherCheckbox.jsx +0 -48
  149. package/dist/Atomic/FormElements/SwitcherRangeList/SwitcherRangeList.jsx +0 -62
  150. package/dist/Atomic/FormElements/SwitcherTagsDropdown/SwitcherTagsDropdown.jsx +0 -175
  151. package/dist/Atomic/FormElements/SwitcherTextarea/SwitcherTextarea.jsx +0 -65
  152. package/dist/Atomic/FormElements/TagListToDropdown/TagListToDropdown.jsx +0 -118
  153. package/dist/Atomic/FormElements/Text/Text.jsx +0 -126
  154. package/dist/Atomic/FormElements/Textarea/Textarea.jsx +0 -61
  155. package/dist/Atomic/FormElements/TieredCheckboxes/TieredCheckboxes.jsx +0 -181
  156. package/dist/Atomic/FormElements/TieredCheckboxes/partial/AccordionWithCheckbox.jsx +0 -60
  157. package/dist/Atomic/FormElements/VariantsListRadio/VariantsListRadio.jsx +0 -83
  158. package/dist/Atomic/FormElements/VariantsListRadio/partials/VariantsListRadioItem.jsx +0 -80
  159. package/dist/Atomic/FormElements/WidgetPseudoTable/WidgetPseudoTable.jsx +0 -103
  160. package/dist/Atomic/FormElements/WidgetWithSwitchableRows/WidgetWithSwitchableRows.jsx +0 -115
  161. package/dist/Atomic/Layout/Header/Header.jsx +0 -86
  162. package/dist/Atomic/UI/AccordionTable/AccordionTable.jsx +0 -250
  163. package/dist/Atomic/UI/AccordionText/AccordionText.jsx +0 -68
  164. package/dist/Atomic/UI/Arrow/Arrow.jsx +0 -134
  165. package/dist/Atomic/UI/Box/Box.jsx +0 -53
  166. package/dist/Atomic/UI/Chart/Chart.jsx +0 -178
  167. package/dist/Atomic/UI/Chart/partial/ChartTypeSwitcherIcon/ChartTypeSwitcherIcon.jsx +0 -78
  168. package/dist/Atomic/UI/Chart/partial/optionsConstructor.jsx +0 -334
  169. package/dist/Atomic/UI/CircleProgressBar/CircleProgressBar.jsx +0 -111
  170. package/dist/Atomic/UI/DateTime/DateTime.jsx +0 -57
  171. package/dist/Atomic/UI/DebugContainer/DebugContainer.jsx +0 -44
  172. package/dist/Atomic/UI/DebugContainer/useDebugContainer.jsx +0 -15
  173. package/dist/Atomic/UI/ExampleChartIntegration/ExampleChartIntegration.jsx +0 -223
  174. package/dist/Atomic/UI/MonoAccordion/MonoAccordion._test.jsx +0 -75
  175. package/dist/Atomic/UI/MonoAccordion/MonoAccordion.jsx +0 -86
  176. package/dist/Atomic/UI/PieChart/PieChart.jsx +0 -41
  177. package/dist/Atomic/UI/Table/Partials/TdCell.jsx +0 -87
  178. package/dist/Atomic/UI/Table/Partials/TdHeader.jsx +0 -36
  179. package/dist/Atomic/UI/Table/Partials/TdRow.jsx +0 -103
  180. package/dist/Atomic/UI/Table/Partials/TdTitle.jsx +0 -55
  181. package/dist/Atomic/UI/Table/Table.jsx +0 -63
  182. package/dist/Atomic/UI/Table/TdTypes/TdActions.jsx +0 -80
  183. package/dist/Atomic/UI/Table/TdTypes/TdPriority.jsx +0 -26
  184. package/dist/Atomic/UI/Table/TdTypes/TdRange.jsx +0 -13
  185. package/dist/Atomic/UI/Table/TdTypes/TdWeight.jsx +0 -56
  186. package/dist/Atomic/UI/TagList/TagList.jsx +0 -256
  187. package/dist/Atomic/UI/WizardStepper/constructor.jsx +0 -86
  188. package/dist/Classes/RESTAPI/partials/CredentialsProcessing.jsx +0 -254
  189. package/dist/Functions/customEventListener.jsx +0 -96
  190. package/dist/Functions/operations.jsx +0 -138
  191. package/dist/Functions/useFormTools/functions/RenderFields.jsx +0 -108
  192. package/dist/Functions/useFormTools/index.jsx +0 -777
  193. package/dist/Functions/usePasswordChecker.jsx +0 -128
  194. package/dist/Functions/utils.jsx +0 -492
  195. package/dist/Molecular/CustomIcons/components/AffiliateNetworks.jsx +0 -22
  196. package/dist/Molecular/CustomIcons/components/AlertCircle.jsx +0 -24
  197. package/dist/Molecular/CustomIcons/components/AppStore.jsx +0 -30
  198. package/dist/Molecular/CustomIcons/components/Arrow.jsx +0 -33
  199. package/dist/Molecular/CustomIcons/components/ArrowDown.jsx +0 -18
  200. package/dist/Molecular/CustomIcons/components/ArrowLeft.jsx +0 -23
  201. package/dist/Molecular/CustomIcons/components/ArrowRight.jsx +0 -23
  202. package/dist/Molecular/CustomIcons/components/ArrowUp.jsx +0 -18
  203. package/dist/Molecular/CustomIcons/components/Bell.jsx +0 -16
  204. package/dist/Molecular/CustomIcons/components/Button.jsx +0 -13
  205. package/dist/Molecular/CustomIcons/components/Campaigns.jsx +0 -17
  206. package/dist/Molecular/CustomIcons/components/Check.jsx +0 -15
  207. package/dist/Molecular/CustomIcons/components/Check2.jsx +0 -13
  208. package/dist/Molecular/CustomIcons/components/ChevronDown.jsx +0 -13
  209. package/dist/Molecular/CustomIcons/components/ChevronDownDisabled.jsx +0 -12
  210. package/dist/Molecular/CustomIcons/components/ChevronLeft.jsx +0 -12
  211. package/dist/Molecular/CustomIcons/components/ChevronRight.jsx +0 -12
  212. package/dist/Molecular/CustomIcons/components/ChevronUp.jsx +0 -12
  213. package/dist/Molecular/CustomIcons/components/ChevronUpDown.jsx +0 -28
  214. package/dist/Molecular/CustomIcons/components/Close.jsx +0 -15
  215. package/dist/Molecular/CustomIcons/components/ColumnsOrder.jsx +0 -18
  216. package/dist/Molecular/CustomIcons/components/Delete.jsx +0 -17
  217. package/dist/Molecular/CustomIcons/components/Edit.jsx +0 -16
  218. package/dist/Molecular/CustomIcons/components/Email.jsx +0 -32
  219. package/dist/Molecular/CustomIcons/components/FinturfLogo.jsx +0 -19
  220. package/dist/Molecular/CustomIcons/components/FinturfLogo2.jsx +0 -36
  221. package/dist/Molecular/CustomIcons/components/Flows.jsx +0 -16
  222. package/dist/Molecular/CustomIcons/components/Gift.jsx +0 -26
  223. package/dist/Molecular/CustomIcons/components/GoogleAuth.jsx +0 -30
  224. package/dist/Molecular/CustomIcons/components/GooglePlay.jsx +0 -30
  225. package/dist/Molecular/CustomIcons/components/HelpCircle.jsx +0 -20
  226. package/dist/Molecular/CustomIcons/components/HelpCircle2.jsx +0 -21
  227. package/dist/Molecular/CustomIcons/components/HelpCircleFilled.jsx +0 -20
  228. package/dist/Molecular/CustomIcons/components/Home.jsx +0 -17
  229. package/dist/Molecular/CustomIcons/components/Home2.jsx +0 -23
  230. package/dist/Molecular/CustomIcons/components/Key.jsx +0 -24
  231. package/dist/Molecular/CustomIcons/components/Landers.jsx +0 -21
  232. package/dist/Molecular/CustomIcons/components/Lock.jsx +0 -16
  233. package/dist/Molecular/CustomIcons/components/Mail.jsx +0 -27
  234. package/dist/Molecular/CustomIcons/components/Mastercard.jsx +0 -74
  235. package/dist/Molecular/CustomIcons/components/Minus.jsx +0 -26
  236. package/dist/Molecular/CustomIcons/components/Offers.jsx +0 -17
  237. package/dist/Molecular/CustomIcons/components/Pause.jsx +0 -29
  238. package/dist/Molecular/CustomIcons/components/PayPal.jsx +0 -42
  239. package/dist/Molecular/CustomIcons/components/PayPalLightLarge.jsx +0 -29
  240. package/dist/Molecular/CustomIcons/components/Phone.jsx +0 -31
  241. package/dist/Molecular/CustomIcons/components/Play.jsx +0 -26
  242. package/dist/Molecular/CustomIcons/components/Plus.jsx +0 -26
  243. package/dist/Molecular/CustomIcons/components/Profile.jsx +0 -17
  244. package/dist/Molecular/CustomIcons/components/QRCode.jsx +0 -30
  245. package/dist/Molecular/CustomIcons/components/Rectangle.jsx +0 -13
  246. package/dist/Molecular/CustomIcons/components/Revert.jsx +0 -14
  247. package/dist/Molecular/CustomIcons/components/Star.jsx +0 -15
  248. package/dist/Molecular/CustomIcons/components/Star2.jsx +0 -17
  249. package/dist/Molecular/CustomIcons/components/TrafficSources.jsx +0 -15
  250. package/dist/Molecular/CustomIcons/components/Trash.jsx +0 -16
  251. package/dist/Molecular/CustomIcons/components/TrashRed.jsx +0 -16
  252. package/dist/Molecular/CustomIcons/components/Triggers.jsx +0 -16
  253. package/dist/Molecular/CustomIcons/components/User.jsx +0 -26
  254. package/dist/Molecular/CustomIcons/components/Visa.jsx +0 -32
  255. package/dist/Molecular/CustomIcons/components/X.jsx +0 -13
  256. package/dist/Molecular/FormElement/FormElement.jsx +0 -52
  257. package/dist/Molecular/FormWithDependOn/FormWithDependOn.jsx +0 -161
  258. package/dist/Molecular/InputAddress/InputAddress.jsx +0 -641
  259. package/dist/Molecular/InputPassword/InputPassword.jsx +0 -50
@@ -1,449 +0,0 @@
1
- import cn from 'classnames';
2
-
3
- import { useEffect, useLayoutEffect, useRef, useState } from 'react';
4
- import { X } from 'react-feather';
5
-
6
- import { formatToAddBitDepthPoints as addCommas } from '../../../Functions/fieldValueFormatters';
7
- import { NUMERIC_KEYBOARD } from '../../../Functions/presets/mobileKeyboardTypesPresets';
8
- import useIsMobile from '../../../Functions/useIsMobile/useIsMobile';
9
- import Input from '../Input/Input';
10
-
11
- import './RangeSlider.scss';
12
-
13
- let timer;
14
-
15
- const DEBOUNCE_TIME = 800;
16
-
17
- function debounce(func, timeout = DEBOUNCE_TIME) {
18
- return (...args) => {
19
- clearTimeout(timer);
20
- timer = setTimeout(() => {
21
- func.apply(this, args);
22
- }, timeout);
23
- };
24
- }
25
-
26
- export default function RangeSlider({
27
- required,
28
- noTrack,
29
- rangeSymbol,
30
- min = 0,
31
- max = 100,
32
- decimalPlaces = 2,
33
- minRange = 0,
34
- precision = 0,
35
- testId = 'range-slider',
36
- value = {
37
- from: min,
38
- to: max,
39
- },
40
- unit = '',
41
- label = '',
42
- isUseBitPoints = true,
43
-
44
- onChange = () => {},
45
- }) {
46
- const { isMobile } = useIsMobile();
47
- const trackRef = useRef(0);
48
- const [trackWidth, setTrackWidth] = useState(0);
49
- const [trackPosition, setTrackPosition] = useState(0);
50
-
51
- const fromTriggerRef = useRef(0);
52
- const toTriggerRef = useRef(0);
53
-
54
- const prepareValue = (value) => {
55
- return Number.parseInt(Number.parseFloat(value) * 10 ** precision, 10) / 10 ** precision;
56
- };
57
-
58
- const [from, setFromValue] = useState(value?.from ?? min);
59
- const setFrom = v => setFromValue(prepareValue(v));
60
- const [to, setToValue] = useState(value?.to ?? max);
61
- const setTo = v => setToValue(prepareValue(v));
62
-
63
- const [focusedType, setFocusedType] = useState(null);
64
- const [frezeedValues, setFrezeedValues] = useState(null);
65
-
66
- const [isInputsFocused, setIsInputsFocused] = useState({
67
- from: false,
68
- to: false,
69
- });
70
-
71
- const setIsInputFocused = (input, value) =>
72
- setIsInputsFocused(state => ({ ...state, [input]: value }));
73
-
74
- const fromValue = frezeedValues ? frezeedValues?.from : from;
75
- const toValue = frezeedValues ? frezeedValues?.to : to;
76
-
77
- const [movingController, setMovingController] = useState(null);
78
-
79
- const [movingTrigger, setMovingTrigger] = useState(null);
80
- const [movingTriggerType, setMovingTriggerType] = useState(null);
81
- const [isTriggerMoved, setIsTriggerMoved] = useState(false);
82
-
83
- const [pointsPerPx, setPointsPerPx] = useState(0);
84
-
85
- const [extremumRange, setExtremumRange] = useState(0);
86
- const [extremumWidth, setExtremumWidth] = useState(0);
87
-
88
- const countPointsPerPx = (width) => {
89
- return (max - min) / width;
90
- };
91
-
92
- const resetRange = () => {
93
- setFrom(min);
94
- setTo(max);
95
- };
96
-
97
- const getTrackXByPoints = (pts) => {
98
- return (pts - min) / pointsPerPx;
99
- };
100
-
101
- const getRangeWidth = () => {
102
- return getTrackXByPoints(toValue) - getTrackXByPoints(fromValue);
103
- };
104
-
105
- const getRangeOffset = () => {
106
- return getTrackXByPoints(fromValue);
107
- };
108
-
109
- const getXByPoints = (pts) => {
110
- return (pts - min) / pointsPerPx + trackPosition;
111
- };
112
-
113
- const getPointsByX = (x) => {
114
- return (x - trackPosition) * pointsPerPx + min;
115
- };
116
-
117
- const onRangeChange = (type, value, validate = true, callOnChange = true) => {
118
- if (validate) value = prepareValue(value);
119
-
120
- if (isNaN(value)) value = 0;
121
-
122
- switch (type) {
123
- case 'from':
124
- const getValidatedFromValue = (value) => {
125
- if ((!value && value !== 0) || value < min) {
126
- value = min;
127
- }
128
-
129
- if (value > to - minRange) {
130
- value = to - minRange;
131
- }
132
-
133
- return value;
134
- };
135
-
136
- if (validate) {
137
- value = getValidatedFromValue(value);
138
- }
139
-
140
- validate ? setFrom(value) : setFromValue(value);
141
- if (!isTriggerMoved && callOnChange) {
142
- debounce(() => {
143
- const values = {
144
- from: prepareValue(getValidatedFromValue(value)),
145
- to,
146
- };
147
- onChange(values);
148
- setFrezeedValues(values);
149
- }, DEBOUNCE_TIME)();
150
- }
151
- break;
152
- case 'to':
153
- const getValidatedToValue = (value) => {
154
- if ((!value && value !== 0) || value > max) {
155
- value = max;
156
- }
157
-
158
- if (value < from + minRange) {
159
- value = from + minRange;
160
- }
161
-
162
- return value;
163
- };
164
-
165
- if (validate) {
166
- value = getValidatedToValue(value);
167
- }
168
-
169
- validate ? setTo(value) : setToValue(value);
170
- if (!isTriggerMoved && callOnChange) {
171
- debounce(() => {
172
- const values = {
173
- from,
174
- to: prepareValue(getValidatedToValue(value)),
175
- };
176
- onChange(values);
177
- setFrezeedValues(values);
178
- }, DEBOUNCE_TIME)();
179
- }
180
- break;
181
- }
182
- };
183
- // MouseDown Event Controller
184
- const onTriggerMouseDown = (e, type) => {
185
- if (e.button !== 0 && !isMobile) return; // Отменить обработку, если нажата не левая кнопка мыши
186
- setMovingTrigger(e.target);
187
- setMovingTriggerType(type);
188
- setIsTriggerMoved(true); // Установить флаг движения в true при клике
189
- };
190
-
191
- const onTriggerMove = (e) => {
192
- if (!isMobile) {
193
- e.preventDefault();
194
- e.stopPropagation();
195
- }
196
-
197
- if (!isTriggerMoved) setIsTriggerMoved(true);
198
- if (!movingTrigger) return false;
199
-
200
- let { clientX: x } = isMobile ? e?.touches?.[0] : e;
201
- const { width: triggerWidth = 16 }
202
- = movingTrigger?.getBoundingClientRect() || {};
203
-
204
- if (x < trackPosition || x > trackPosition + trackWidth + triggerWidth)
205
- return false;
206
-
207
- x -= triggerWidth / 2;
208
-
209
- onRangeChange(movingTriggerType, getPointsByX(x));
210
- };
211
- const onTriggerMoveEnd = () => {
212
- setMovingTrigger(null);
213
- setMovingTriggerType(null);
214
- setIsTriggerMoved(false);
215
- };
216
- const onRangeInputFocus = (e, type) => {
217
- setTimeout(() => setIsInputFocused(type, true), 1);
218
- };
219
-
220
- const onRangeInputBlur = (e, type) => {
221
- setIsInputFocused(type, false);
222
- };
223
-
224
- useEffect(() => {
225
- onRangeChange('from', value?.from ?? max, true, false);
226
- onRangeChange('to', value?.to ?? min, true, false);
227
- }, []);
228
-
229
- /// MouseUp Event Controller
230
- useEffect(() => {
231
- document.addEventListener('mouseup', onTriggerMoveEnd);
232
-
233
- return () => {
234
- document.removeEventListener('mouseup', onTriggerMoveEnd);
235
- };
236
- }, []);
237
-
238
- // MouseMove Event Controller
239
- useEffect(() => {
240
- // Прекратить обработку, если нет активного триггера или не было движения
241
- if (!movingTrigger || !isTriggerMoved) return;
242
- const handleMouseMove = (e) => {
243
- onTriggerMove(e);
244
- };
245
-
246
- document.addEventListener('mousemove', handleMouseMove);
247
-
248
- return () => {
249
- document.removeEventListener('mousemove', handleMouseMove);
250
- };
251
- }, [movingTrigger, isTriggerMoved]);
252
-
253
- useEffect(() => {
254
- if (movingController) {
255
- document.addEventListener('mousemove', onTriggerMove, {
256
- signal: movingController?.signal,
257
- });
258
- }
259
- }, [movingController]);
260
-
261
- useEffect(() => {
262
- setFrezeedValues(null);
263
- }, [isTriggerMoved]);
264
-
265
- useEffect(() => {
266
- if (
267
- Object.values(isInputsFocused).every(v => !v)
268
- && !isTriggerMoved
269
- && (value.from !== from || value.to !== to)
270
- ) {
271
- onChange({ from, to });
272
- }
273
- if (isTriggerMoved) setFrezeedValues({ from, to });
274
- }, [from, to, isTriggerMoved]);
275
-
276
- useLayoutEffect(() => {
277
- setFrom(value.from);
278
- setTo(value.to);
279
- }, [value]);
280
-
281
- useLayoutEffect(() => {
282
- let { width, x } = trackRef?.current?.getBoundingClientRect() || {};
283
- width
284
- -= fromTriggerRef?.current?.getBoundingClientRect()?.width
285
- || toTriggerRef?.current?.getBoundingClientRect()?.width;
286
-
287
- setPointsPerPx(countPointsPerPx(width));
288
- setTrackWidth(width);
289
- setTrackPosition(x);
290
- }, [trackRef]);
291
-
292
- useEffect(() => {
293
- if (Object.values(isInputsFocused).every(v => !v)) {
294
- setFrezeedValues(false);
295
- }
296
- else {
297
- setFrezeedValues({ from, to });
298
- }
299
- }, [isInputsFocused]);
300
-
301
- const renderLabel = () => {
302
- return (
303
- <div className="range-slider__header__label">
304
- {label}
305
- {required && <span className="label_isRequired">*</span>}
306
- </div>
307
- );
308
- };
309
-
310
- const renderSelectedRange = () => {
311
- return (
312
- <div className="range-slider__header__selected-range">
313
- <div className="range-slider__header__selected-range--text">
314
- from
315
- {' '}
316
- {isUseBitPoints ? addCommas(fromValue) : fromValue}
317
- {' '}
318
- to
319
- {' '}
320
- {isUseBitPoints ? addCommas(toValue) : toValue}
321
- {rangeSymbol}
322
- {unit}
323
- </div>
324
- <div
325
- className="range-slider__header__selected-range--reset"
326
- onClick={resetRange}
327
- >
328
- <X />
329
- </div>
330
- </div>
331
- );
332
- };
333
-
334
- const renderHeader = () => {
335
- return (
336
- <div className="range-slider__header">
337
- {renderLabel()}
338
- {min !== fromValue || max !== toValue ? renderSelectedRange() : null}
339
- </div>
340
- );
341
- };
342
-
343
- const renderInputs = () => {
344
- return (
345
- <div className="range-slider__inputs">
346
- <div className="range-slider__inputs--from">
347
- <Input
348
- data-testid={`${testId}-input-from`}
349
- value={from.toString()}
350
- onFocus={e => onRangeInputFocus(e, 'from')}
351
- onBlur={e => onRangeInputBlur(e, 'from')}
352
- onChange={value => onRangeChange('from', value, false)}
353
- onlyNumbers={{ type: 'float', decimalPlaces, min, max }}
354
- isPriceInput={isUseBitPoints}
355
- {...NUMERIC_KEYBOARD}
356
- />
357
- </div>
358
- <div className="range-slider__inputs__input">
359
- <Input
360
- data-testid={`${testId}-input-to`}
361
- value={to.toString()}
362
- onFocus={e => onRangeInputFocus(e, 'to')}
363
- onBlur={e => onRangeInputBlur(e, 'to')}
364
- onChange={value => onRangeChange('to', value, false)}
365
- onlyNumbers={{ type: 'float', decimalPlaces, min, max }}
366
- isPriceInput={isUseBitPoints}
367
- {...NUMERIC_KEYBOARD}
368
- />
369
- </div>
370
- </div>
371
- );
372
- };
373
-
374
- const renderTrackRange = () => {
375
- const style = {
376
- width: `${getRangeWidth()}px`,
377
- left: `${getRangeOffset()}px`,
378
- };
379
- return <div className="range-slider__track__range" style={style} />;
380
- };
381
-
382
- const renderTrackTriggers = () => {
383
- const fromStyle = {
384
- left: `${getTrackXByPoints(fromValue)}px`,
385
- };
386
- const toStyle = {
387
- left: `${getTrackXByPoints(toValue)}px`,
388
- };
389
- const renderTrack = () => {
390
- return (
391
- <div
392
- className={cn('range-slider__track', { hidden: noTrack })}
393
- ref={trackRef}
394
- >
395
- <div className="range-slider__track__line" />
396
- {renderTrackRange()}
397
- {renderTrackTriggers()}
398
- </div>
399
- );
400
- };
401
- return (
402
- <div className="range-slider__track__range-triggers">
403
- <div
404
- data-testid={`${testId}-track-from`}
405
- ref={fromTriggerRef}
406
- style={fromStyle}
407
- className="range-slider__track__range-triggers--trigger range-slider__track__range-triggers--trigger-left"
408
- onMouseDown={e => (!isMobile ? onTriggerMouseDown(e, 'from') : {})}
409
- onTouchStart={e => onTriggerMouseDown(e, 'from')}
410
- onTouchMove={onTriggerMove}
411
- onTouchEnd={onTriggerMoveEnd}
412
- onClick={() => {}} // DONT REMOVE! MOBILE WILL NOT WORK WITHOUT IT
413
- />
414
- <div
415
- data-testid={`${testId}-track-to`}
416
- ref={toTriggerRef}
417
- style={toStyle}
418
- className="range-slider__track__range-triggers--trigger range-slider__track__range-triggers--trigger-right"
419
- onMouseDown={e => (!isMobile ? onTriggerMouseDown(e, 'to') : {})}
420
- onTouchStart={e => onTriggerMouseDown(e, 'to')}
421
- onTouchMove={onTriggerMove}
422
- onTouchEnd={onTriggerMoveEnd}
423
- onClick={() => {}} // DONT REMOVE! MOBILE WILL NOT WORK WITHOUT IT
424
- />
425
- </div>
426
- );
427
- };
428
-
429
- const renderTrack = () => {
430
- return (
431
- <div
432
- className={cn('range-slider__track', { hidden: noTrack })}
433
- ref={trackRef}
434
- >
435
- <div className="range-slider__track__line" />
436
- {renderTrackRange()}
437
- {renderTrackTriggers()}
438
- </div>
439
- );
440
- };
441
-
442
- return (
443
- <div data-testid={testId} className="range-slider">
444
- {renderHeader()}
445
- {renderInputs()}
446
- {renderTrack()}
447
- </div>
448
- );
449
- }