@true-engineering/true-react-common-ui-kit 3.0.3 → 3.0.5

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 (300) hide show
  1. package/LICENSE +201 -201
  2. package/dist/components/FiltersPane/FiltersPane.d.ts +0 -1
  3. package/dist/components/FiltersPane/components/FilterMultiSelect/FilterMultiSelect.d.ts +0 -1
  4. package/dist/components/FiltersPane/components/FilterValueView/FilterValueView.d.ts +0 -1
  5. package/dist/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.d.ts +1 -1
  6. package/dist/components/Flag/augment.d.ts +1 -1
  7. package/dist/components/Icon/complexIcons/augment.d.ts +1 -1
  8. package/dist/components/MultiSelect/MultiSelect.d.ts +0 -1
  9. package/dist/components/TextWithInfo/TextWithInfo.styles.d.ts +1 -1
  10. package/dist/true-react-common-ui-kit.js +91 -79
  11. package/dist/true-react-common-ui-kit.js.map +1 -1
  12. package/dist/true-react-common-ui-kit.umd.cjs +91 -79
  13. package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
  14. package/dist/vite-env.d.ts +1 -1
  15. package/package.json +94 -94
  16. package/src/components/AccountInfo/AccountInfo.stories.tsx +32 -32
  17. package/src/components/AccountInfo/AccountInfo.styles.ts +51 -51
  18. package/src/components/AccountInfo/AccountInfo.tsx +79 -79
  19. package/src/components/AccountInfo/constants.ts +1 -1
  20. package/src/components/AccountInfo/index.ts +2 -2
  21. package/src/components/AddButton/AddButton.stories.tsx +21 -21
  22. package/src/components/AddButton/AddButton.styles.ts +34 -34
  23. package/src/components/AddButton/AddButton.tsx +49 -49
  24. package/src/components/AddButton/index.ts +2 -2
  25. package/src/components/Button/Button.stories.tsx +56 -56
  26. package/src/components/Button/Button.styles.ts +200 -200
  27. package/src/components/Button/Button.tsx +147 -147
  28. package/src/components/Button/constants.ts +9 -9
  29. package/src/components/Button/index.ts +3 -3
  30. package/src/components/Button/types.ts +5 -5
  31. package/src/components/Checkbox/Checkbox.stories.tsx +28 -28
  32. package/src/components/Checkbox/Checkbox.styles.ts +47 -47
  33. package/src/components/Checkbox/Checkbox.tsx +83 -83
  34. package/src/components/Checkbox/index.ts +2 -2
  35. package/src/components/CloseButton/CloseButton.styles.ts +33 -33
  36. package/src/components/CloseButton/CloseButton.tsx +33 -33
  37. package/src/components/CloseButton/index.ts +2 -2
  38. package/src/components/Colors/Colors.stories.tsx +7 -7
  39. package/src/components/Colors/Colors.styles.ts +36 -36
  40. package/src/components/Colors/Colors.tsx +26 -26
  41. package/src/components/Colors/index.ts +1 -1
  42. package/src/components/CssBaseline/CssBaseline.styles.ts +14 -14
  43. package/src/components/CssBaseline/CssBaseline.tsx +13 -13
  44. package/src/components/CssBaseline/index.ts +2 -2
  45. package/src/components/DateInput/DateInput.stories.tsx +61 -61
  46. package/src/components/DateInput/DateInput.styles.ts +18 -18
  47. package/src/components/DateInput/DateInput.tsx +87 -87
  48. package/src/components/DateInput/constants.ts +2 -2
  49. package/src/components/DateInput/index.ts +3 -3
  50. package/src/components/DatePicker/DatePicker.stories.tsx +88 -88
  51. package/src/components/DatePicker/DatePicker.styles.ts +38 -38
  52. package/src/components/DatePicker/DatePicker.tsx +306 -306
  53. package/src/components/DatePicker/components/DatePickerHeader/DatePickerHeader.styles.ts +88 -88
  54. package/src/components/DatePicker/components/DatePickerHeader/DatePickerHeader.tsx +89 -89
  55. package/src/components/DatePicker/components/DatePickerHeader/index.ts +2 -2
  56. package/src/components/DatePicker/components/PopperContainer/PopperContainer.tsx +6 -6
  57. package/src/components/DatePicker/components/PopperContainer/index.ts +1 -1
  58. package/src/components/DatePicker/components/index.ts +2 -2
  59. package/src/components/DatePicker/constants.ts +6 -6
  60. package/src/components/DatePicker/helpers.ts +23 -23
  61. package/src/components/DatePicker/index.ts +4 -4
  62. package/src/components/DatePicker/types.ts +45 -45
  63. package/src/components/Description/Description.stories.tsx +27 -27
  64. package/src/components/Description/Description.styles.ts +30 -30
  65. package/src/components/Description/Description.tsx +59 -59
  66. package/src/components/Description/constants.ts +1 -1
  67. package/src/components/Description/index.ts +2 -2
  68. package/src/components/FiltersPane/FiltersPane.stories.tsx +287 -287
  69. package/src/components/FiltersPane/FiltersPane.styles.ts +87 -87
  70. package/src/components/FiltersPane/FiltersPane.tsx +155 -155
  71. package/src/components/FiltersPane/components/Filter/Filter.tsx +203 -203
  72. package/src/components/FiltersPane/components/Filter/index.ts +1 -1
  73. package/src/components/FiltersPane/components/FilterInterval/FilterInterval.styles.ts +61 -61
  74. package/src/components/FiltersPane/components/FilterInterval/FilterInterval.tsx +154 -154
  75. package/src/components/FiltersPane/components/FilterInterval/index.ts +2 -2
  76. package/src/components/FiltersPane/components/FilterMultiSelect/FilterMultiSelect.tsx +10 -10
  77. package/src/components/FiltersPane/components/FilterMultiSelect/index.ts +1 -1
  78. package/src/components/FiltersPane/components/FilterSelect/FilterSelect.styles.ts +140 -140
  79. package/src/components/FiltersPane/components/FilterSelect/FilterSelect.tsx +354 -354
  80. package/src/components/FiltersPane/components/FilterSelect/index.ts +2 -2
  81. package/src/components/FiltersPane/components/FilterValueView/FilterValueView.styles.tsx +15 -15
  82. package/src/components/FiltersPane/components/FilterValueView/FilterValueView.tsx +165 -165
  83. package/src/components/FiltersPane/components/FilterValueView/index.tsx +2 -2
  84. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.ts +68 -68
  85. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.tsx +210 -210
  86. package/src/components/FiltersPane/components/FilterWithDates/index.ts +2 -2
  87. package/src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.styles.ts +21 -21
  88. package/src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.tsx +177 -177
  89. package/src/components/FiltersPane/components/FilterWithPeriod/index.ts +2 -2
  90. package/src/components/FiltersPane/components/FilterWrapper/FilterWrapper.styles.ts +115 -115
  91. package/src/components/FiltersPane/components/FilterWrapper/FilterWrapper.tsx +167 -167
  92. package/src/components/FiltersPane/components/FilterWrapper/index.ts +2 -2
  93. package/src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.styles.ts +117 -117
  94. package/src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.tsx +165 -165
  95. package/src/components/FiltersPane/components/FiltersPaneSearch/index.ts +2 -2
  96. package/src/components/FiltersPane/components/index.ts +9 -9
  97. package/src/components/FiltersPane/constants.ts +137 -137
  98. package/src/components/FiltersPane/helpers.ts +26 -26
  99. package/src/components/FiltersPane/index.ts +5 -5
  100. package/src/components/FiltersPane/types.ts +156 -156
  101. package/src/components/Flag/Flag.stories.tsx +29 -29
  102. package/src/components/Flag/Flag.styles.ts +17 -17
  103. package/src/components/Flag/Flag.tsx +25 -25
  104. package/src/components/Flag/augment.d.ts +1 -1
  105. package/src/components/Flag/index.ts +2 -2
  106. package/src/components/FlexibleTable/FlexibleTable.stories.tsx +353 -353
  107. package/src/components/FlexibleTable/FlexibleTable.styles.ts +103 -103
  108. package/src/components/FlexibleTable/FlexibleTable.tsx +260 -260
  109. package/src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.styles.ts +32 -32
  110. package/src/components/FlexibleTable/components/FlexibleTableCell/FlexibleTableCell.tsx +69 -69
  111. package/src/components/FlexibleTable/components/FlexibleTableCell/index.ts +2 -2
  112. package/src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.styles.ts +23 -23
  113. package/src/components/FlexibleTable/components/FlexibleTableRow/FlexibleTableRow.tsx +155 -155
  114. package/src/components/FlexibleTable/components/FlexibleTableRow/index.ts +2 -2
  115. package/src/components/FlexibleTable/components/index.ts +2 -2
  116. package/src/components/FlexibleTable/constants.ts +1 -1
  117. package/src/components/FlexibleTable/helpers.ts +15 -15
  118. package/src/components/FlexibleTable/index.ts +4 -4
  119. package/src/components/FlexibleTable/types.ts +52 -52
  120. package/src/components/Icon/Icon.stories.tsx +86 -86
  121. package/src/components/Icon/Icon.styles.ts +10 -10
  122. package/src/components/Icon/Icon.tsx +26 -26
  123. package/src/components/Icon/complexIcons/augment.d.ts +1 -1
  124. package/src/components/Icon/complexIcons/avatarGreen.svg +57 -57
  125. package/src/components/Icon/complexIcons/icons.ts +5 -5
  126. package/src/components/Icon/complexIcons/index.ts +1 -1
  127. package/src/components/Icon/components/ComplexIconBoilerplate/ComplexIconBoilerplate.tsx +16 -16
  128. package/src/components/Icon/components/ComplexIconBoilerplate/index.ts +1 -1
  129. package/src/components/Icon/components/IconBolerplate/IconBoilerplate.tsx +43 -43
  130. package/src/components/Icon/components/IconBolerplate/index.ts +1 -1
  131. package/src/components/Icon/components/index.ts +2 -2
  132. package/src/components/Icon/helpers.tsx +9 -9
  133. package/src/components/Icon/icons-list.ts +856 -856
  134. package/src/components/Icon/index.ts +5 -5
  135. package/src/components/Icon/snippet.tsx +6 -6
  136. package/src/components/Icon/types.ts +18 -18
  137. package/src/components/IncrementInput/IncrementInput.stories.tsx +31 -31
  138. package/src/components/IncrementInput/IncrementInput.styles.ts +77 -77
  139. package/src/components/IncrementInput/IncrementInput.tsx +104 -104
  140. package/src/components/IncrementInput/index.ts +2 -2
  141. package/src/components/Input/Input.stories.tsx +86 -86
  142. package/src/components/Input/Input.styles.ts +307 -307
  143. package/src/components/Input/Input.tsx +310 -310
  144. package/src/components/Input/constants.ts +1 -1
  145. package/src/components/Input/index.ts +3 -3
  146. package/src/components/Input/types.ts +6 -6
  147. package/src/components/List/List.stories.tsx +70 -70
  148. package/src/components/List/List.styles.ts +51 -51
  149. package/src/components/List/List.tsx +33 -33
  150. package/src/components/List/components/ListItem/ListItem.styles.ts +47 -47
  151. package/src/components/List/components/ListItem/ListItem.tsx +57 -57
  152. package/src/components/List/components/ListItem/index.ts +2 -2
  153. package/src/components/List/components/index.ts +1 -1
  154. package/src/components/List/index.ts +3 -3
  155. package/src/components/Modal/Modal.stories.tsx +105 -105
  156. package/src/components/Modal/Modal.styles.ts +303 -303
  157. package/src/components/Modal/Modal.tsx +186 -186
  158. package/src/components/Modal/index.ts +3 -3
  159. package/src/components/Modal/types.ts +17 -17
  160. package/src/components/MoreMenu/MoreMenu.stories.tsx +46 -46
  161. package/src/components/MoreMenu/MoreMenu.styles.ts +68 -68
  162. package/src/components/MoreMenu/MoreMenu.tsx +93 -93
  163. package/src/components/MoreMenu/index.ts +2 -2
  164. package/src/components/MultiSelect/MultiSelect.stories.tsx +46 -46
  165. package/src/components/MultiSelect/MultiSelect.styles.ts +59 -59
  166. package/src/components/MultiSelect/MultiSelect.tsx +101 -101
  167. package/src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.styles.ts +73 -73
  168. package/src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.tsx +53 -53
  169. package/src/components/MultiSelect/components/MultiSelectInput/index.ts +2 -2
  170. package/src/components/MultiSelect/components/index.ts +1 -1
  171. package/src/components/MultiSelect/index.ts +4 -4
  172. package/src/components/MultiSelect/types.ts +1 -1
  173. package/src/components/MultiSelectList/MultiSelectList.styles.ts +136 -136
  174. package/src/components/MultiSelectList/MultiSelectList.tsx +458 -458
  175. package/src/components/MultiSelectList/constants.ts +21 -21
  176. package/src/components/MultiSelectList/helpers.ts +11 -11
  177. package/src/components/MultiSelectList/index.ts +3 -3
  178. package/src/components/MultiSelectList/types.ts +15 -15
  179. package/src/components/Notification/Notification.stories.tsx +46 -46
  180. package/src/components/Notification/Notification.styles.ts +55 -55
  181. package/src/components/Notification/Notification.tsx +75 -75
  182. package/src/components/Notification/index.ts +3 -3
  183. package/src/components/Notification/types.ts +1 -1
  184. package/src/components/NumberInput/NumberInput.stories.tsx +35 -35
  185. package/src/components/NumberInput/NumberInput.tsx +133 -133
  186. package/src/components/NumberInput/helpers.ts +86 -86
  187. package/src/components/NumberInput/index.ts +1 -1
  188. package/src/components/PhoneInput/PhoneInput.stories.tsx +70 -70
  189. package/src/components/PhoneInput/PhoneInput.styles.ts +89 -89
  190. package/src/components/PhoneInput/PhoneInput.tsx +210 -210
  191. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.stories.tsx +21 -21
  192. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.styles.ts +103 -103
  193. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.tsx +155 -155
  194. package/src/components/PhoneInput/components/PhoneInputCountryList/index.ts +2 -2
  195. package/src/components/PhoneInput/components/index.ts +1 -1
  196. package/src/components/PhoneInput/constants.ts +3 -3
  197. package/src/components/PhoneInput/index.ts +4 -4
  198. package/src/components/PhoneInput/types.ts +16 -16
  199. package/src/components/RadioButton/RadioButton.stories.tsx +46 -46
  200. package/src/components/RadioButton/RadioButton.styles.ts +37 -37
  201. package/src/components/RadioButton/RadioButton.tsx +55 -55
  202. package/src/components/RadioButton/index.ts +2 -2
  203. package/src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts +54 -54
  204. package/src/components/ScrollIntoViewIfNeeded/constants.ts +12 -12
  205. package/src/components/ScrollIntoViewIfNeeded/index.ts +1 -1
  206. package/src/components/SearchInput/SearchInput.stories.tsx +23 -23
  207. package/src/components/SearchInput/SearchInput.styles.ts +50 -50
  208. package/src/components/SearchInput/SearchInput.tsx +56 -56
  209. package/src/components/SearchInput/index.ts +2 -2
  210. package/src/components/Select/MultiSelect.stories.tsx +240 -240
  211. package/src/components/Select/Select.stories.tsx +235 -235
  212. package/src/components/Select/Select.styles.ts +146 -146
  213. package/src/components/Select/Select.tsx +574 -574
  214. package/src/components/Select/components/SelectList/SelectList.styles.ts +71 -71
  215. package/src/components/Select/components/SelectList/SelectList.tsx +157 -157
  216. package/src/components/Select/components/SelectList/index.ts +2 -2
  217. package/src/components/Select/components/SelectListItem/SelectListItem.styles.ts +14 -14
  218. package/src/components/Select/components/SelectListItem/SelectListItem.tsx +68 -68
  219. package/src/components/Select/components/SelectListItem/index.ts +1 -1
  220. package/src/components/Select/components/index.ts +2 -2
  221. package/src/components/Select/constants.ts +2 -2
  222. package/src/components/Select/helpers.ts +27 -27
  223. package/src/components/Select/index.ts +4 -4
  224. package/src/components/Select/types.ts +1 -1
  225. package/src/components/Skeleton/Skeleton.stories.tsx +19 -19
  226. package/src/components/Skeleton/Skeleton.styles.ts +46 -46
  227. package/src/components/Skeleton/Skeleton.tsx +12 -12
  228. package/src/components/Skeleton/index.ts +2 -2
  229. package/src/components/SmartInput/SmartInput.stories.tsx +51 -51
  230. package/src/components/SmartInput/SmartInput.tsx +124 -124
  231. package/src/components/SmartInput/constants.ts +84 -84
  232. package/src/components/SmartInput/helpers.ts +13 -13
  233. package/src/components/SmartInput/index.ts +2 -2
  234. package/src/components/SmartInput/types.ts +11 -11
  235. package/src/components/Switch/Switch.stories.tsx +40 -40
  236. package/src/components/Switch/Switch.styles.ts +75 -75
  237. package/src/components/Switch/Switch.tsx +76 -76
  238. package/src/components/Switch/index.ts +3 -3
  239. package/src/components/Switch/types.ts +4 -4
  240. package/src/components/TextArea/TextArea.stories.tsx +35 -35
  241. package/src/components/TextArea/TextArea.styles.ts +157 -153
  242. package/src/components/TextArea/TextArea.tsx +171 -171
  243. package/src/components/TextArea/index.ts +2 -2
  244. package/src/components/TextWithInfo/TextWithInfo.stories.tsx +53 -53
  245. package/src/components/TextWithInfo/TextWithInfo.styles.ts +59 -59
  246. package/src/components/TextWithInfo/TextWithInfo.tsx +61 -61
  247. package/src/components/TextWithInfo/index.ts +2 -2
  248. package/src/components/TextWithTooltip/TextWithTooltip.stories.tsx +58 -58
  249. package/src/components/TextWithTooltip/TextWithTooltip.styles.ts +21 -21
  250. package/src/components/TextWithTooltip/TextWithTooltip.tsx +149 -149
  251. package/src/components/TextWithTooltip/index.ts +2 -2
  252. package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +41 -41
  253. package/src/components/ThemedPreloader/ThemedPreloader.styles.ts +26 -26
  254. package/src/components/ThemedPreloader/ThemedPreloader.tsx +55 -55
  255. package/src/components/ThemedPreloader/components/DefaultPreloader/DefaultPreloader.tsx +29 -29
  256. package/src/components/ThemedPreloader/components/DefaultPreloader/index.ts +1 -1
  257. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.ts +54 -54
  258. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.tsx +15 -15
  259. package/src/components/ThemedPreloader/components/DotsPreloader/index.ts +2 -2
  260. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.ts +11 -11
  261. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx +24 -24
  262. package/src/components/ThemedPreloader/components/SvgPreloader/index.ts +2 -2
  263. package/src/components/ThemedPreloader/components/index.ts +3 -3
  264. package/src/components/ThemedPreloader/constants.ts +1 -1
  265. package/src/components/ThemedPreloader/index.ts +4 -4
  266. package/src/components/ThemedPreloader/types.ts +3 -3
  267. package/src/components/Toaster/Toaster.stories.tsx +30 -30
  268. package/src/components/Toaster/Toaster.styles.ts +60 -60
  269. package/src/components/Toaster/Toaster.tsx +114 -114
  270. package/src/components/Toaster/constants.ts +1 -1
  271. package/src/components/Toaster/index.ts +3 -3
  272. package/src/components/Toaster/types.ts +1 -1
  273. package/src/components/Tooltip/Tooltip.stories.tsx +19 -19
  274. package/src/components/Tooltip/Tooltip.styles.ts +49 -49
  275. package/src/components/Tooltip/Tooltip.tsx +39 -39
  276. package/src/components/Tooltip/index.ts +3 -3
  277. package/src/components/Tooltip/types.ts +1 -1
  278. package/src/components/index.ts +37 -37
  279. package/src/constants/index.ts +1 -1
  280. package/src/constants/phone-info.ts +2147 -2147
  281. package/src/helpers/index.ts +3 -3
  282. package/src/helpers/misc.ts +158 -158
  283. package/src/helpers/phone.ts +91 -91
  284. package/src/helpers/popper-helpers.ts +17 -17
  285. package/src/hooks/index.ts +7 -7
  286. package/src/hooks/use-did-mount-effect.ts +18 -18
  287. package/src/hooks/use-dropdown.ts +82 -82
  288. package/src/hooks/use-is-mounted.ts +15 -15
  289. package/src/hooks/use-merged-refs.ts +4 -4
  290. package/src/hooks/use-mixed-styles.ts +14 -14
  291. package/src/hooks/use-on-click-outside.ts +77 -77
  292. package/src/hooks/use-tweak-styles.ts +57 -57
  293. package/src/index.ts +6 -6
  294. package/src/theme/Provider.tsx +21 -21
  295. package/src/theme/common.ts +160 -149
  296. package/src/theme/helpers.ts +74 -74
  297. package/src/theme/index.ts +4 -4
  298. package/src/theme/types.ts +141 -141
  299. package/src/types.ts +26 -26
  300. package/src/vite-env.d.ts +1 -1
@@ -1,3 +1,3 @@
1
- export * from './popper-helpers';
2
- export * from './phone';
3
- export * from './misc';
1
+ export * from './popper-helpers';
2
+ export * from './phone';
3
+ export * from './misc';
@@ -1,158 +1,158 @@
1
- import hexToRgba from 'hex-to-rgba';
2
- import {
3
- isNotEmpty,
4
- isString,
5
- isStringNotEmpty,
6
- } from '@true-engineering/true-react-platform-helpers';
7
- import { IDataAttributes } from '../types';
8
-
9
- export const rgba = hexToRgba;
10
-
11
- export const transformToKebab = (string: string): string => {
12
- let result = '';
13
- string.split('').forEach((char) => {
14
- if (char.toLowerCase() === char) {
15
- result += char;
16
- } else {
17
- result += `-${char.toLowerCase()}`;
18
- }
19
- });
20
-
21
- return result;
22
- };
23
-
24
- export const hasExactParent = (element: Element, parent: Element): boolean => {
25
- if (element === parent) {
26
- return true; // Found the exact parent
27
- }
28
-
29
- const parentNode = getParentNode(element);
30
-
31
- if (parentNode === element) {
32
- return false; // Reached the top-level HTML element or Shadow DOM host
33
- }
34
-
35
- return hasExactParent(parentNode, parent);
36
- };
37
-
38
- export const getParentNode = (element: Element | ShadowRoot | Document): Element =>
39
- element.nodeName === 'HTML' || element === document
40
- ? (element as Element)
41
- : (element.parentNode as Element) ?? (element as ShadowRoot).host;
42
-
43
- export const getStyleComputedProperty = (element: Element): Partial<CSSStyleDeclaration> =>
44
- element.nodeType !== 1 ? {} : getComputedStyle(element, null);
45
-
46
- export const getScrollParent = (element: Element | Document): Element => {
47
- if (!element) {
48
- return document.body;
49
- }
50
-
51
- switch (element.nodeName) {
52
- case 'HTML':
53
- case 'BODY':
54
- return (element as Element).ownerDocument.body;
55
- case '#document':
56
- return (element as Document).body;
57
- }
58
-
59
- const { overflow, overflowX, overflowY } = getStyleComputedProperty(element as Element) ?? {};
60
- if (/(auto|scroll|overlay)/.test((overflow ?? '') + (overflowY ?? '') + (overflowX ?? ''))) {
61
- return element as Element;
62
- }
63
- return getScrollParent(getParentNode(element as Element));
64
- };
65
-
66
- export const isElementOffScreen = (element: HTMLElement, input?: HTMLElement): boolean => {
67
- const el = element;
68
- const scrollParent = getScrollParent(element);
69
-
70
- const { scrollHeight: scrollHeightWithElement } = scrollParent;
71
- el.hidden = true;
72
- const { scrollHeight: scrollHeightWithoutElement } = scrollParent;
73
- el.hidden = false;
74
-
75
- const isOffscreen = scrollHeightWithElement !== scrollHeightWithoutElement;
76
-
77
- if (isOffscreen && input !== undefined) {
78
- const elRect = el.getBoundingClientRect();
79
- const scrollParentRect = scrollParent.getBoundingClientRect();
80
- const topOffset = elRect.top - scrollParentRect.top;
81
- if (input.clientHeight + el.clientHeight > topOffset) {
82
- return false;
83
- }
84
- }
85
-
86
- return isOffscreen;
87
- };
88
-
89
- export const getNumberInRange = (value: number, min = -Infinity, max = Infinity): number =>
90
- Math.min(max, Math.max(min, value));
91
-
92
- const DEFAULT_THOUSANDS_SEPARATOR = '\u2009';
93
-
94
- export const formatStringNumber = (
95
- val?: string,
96
- separator = DEFAULT_THOUSANDS_SEPARATOR,
97
- ): string => {
98
- if (val === undefined) {
99
- return '';
100
- }
101
- const parts = val.split('.');
102
-
103
- parts[0] = parts[0]
104
- // убрать лидирующие нули
105
- .replace(/^0+(?=\d)/, '')
106
- // проставить сепараторы тысяч
107
- .replace(/\B(?=(\d{3})+(?!\d))/g, separator);
108
- return (parts[1] ?? '').length > 0 ? parts.join('.') : parts[0];
109
- };
110
-
111
- export const formatNumber = (val?: number, separator = DEFAULT_THOUSANDS_SEPARATOR): string => {
112
- if (val === undefined || isNaN(val)) {
113
- return '';
114
- }
115
- return formatStringNumber(String(val), separator);
116
- };
117
-
118
- export const removeStringFormat = (val?: string): string =>
119
- (val ?? '').replace(',', '.').replace(/\s/g, '');
120
-
121
- export const stringToNumber = (val?: string): number | undefined => {
122
- const trimmed = removeStringFormat(val);
123
- if (trimmed === '') {
124
- return undefined;
125
- }
126
- const num = Number(trimmed);
127
- return isNaN(num) ? undefined : num;
128
- };
129
-
130
- export const setCaretPosition = (elem: HTMLInputElement, caretPos: number | null): void => {
131
- if (caretPos === null || elem === null) {
132
- return;
133
- }
134
- if (elem.selectionStart) {
135
- elem.focus();
136
- elem.setSelectionRange(caretPos, caretPos);
137
- } else {
138
- elem.focus();
139
- }
140
- };
141
-
142
- export const isSpaceChar = (char?: string): boolean =>
143
- char !== undefined && char.match(/\s/) !== null;
144
-
145
- export const getNumberLength = (n?: number): number =>
146
- n === undefined || isNaN(n) ? 0 : n.toString().length;
147
-
148
- export const trimStringToMaxLength = (val: string, maxLength: number): string =>
149
- val.length > maxLength ? val.slice(0, maxLength) : val;
150
-
151
- export const addDataAttributes = (data: IDataAttributes = {}): IDataAttributes =>
152
- Object.fromEntries(
153
- Object.entries(data).map(([key, value]) =>
154
- (isString(value) && isStringNotEmpty(value)) || isNotEmpty(value)
155
- ? [`data-${transformToKebab(key)}`, value]
156
- : [],
157
- ),
158
- );
1
+ import hexToRgba from 'hex-to-rgba';
2
+ import {
3
+ isNotEmpty,
4
+ isString,
5
+ isStringNotEmpty,
6
+ } from '@true-engineering/true-react-platform-helpers';
7
+ import { IDataAttributes } from '../types';
8
+
9
+ export const rgba = hexToRgba;
10
+
11
+ export const transformToKebab = (string: string): string => {
12
+ let result = '';
13
+ string.split('').forEach((char) => {
14
+ if (char.toLowerCase() === char) {
15
+ result += char;
16
+ } else {
17
+ result += `-${char.toLowerCase()}`;
18
+ }
19
+ });
20
+
21
+ return result;
22
+ };
23
+
24
+ export const hasExactParent = (element: Element, parent: Element): boolean => {
25
+ if (element === parent) {
26
+ return true; // Found the exact parent
27
+ }
28
+
29
+ const parentNode = getParentNode(element);
30
+
31
+ if (parentNode === element) {
32
+ return false; // Reached the top-level HTML element or Shadow DOM host
33
+ }
34
+
35
+ return hasExactParent(parentNode, parent);
36
+ };
37
+
38
+ export const getParentNode = (element: Element | ShadowRoot | Document): Element =>
39
+ element.nodeName === 'HTML' || element === document
40
+ ? (element as Element)
41
+ : (element.parentNode as Element) ?? (element as ShadowRoot).host;
42
+
43
+ export const getStyleComputedProperty = (element: Element): Partial<CSSStyleDeclaration> =>
44
+ element.nodeType !== 1 ? {} : getComputedStyle(element, null);
45
+
46
+ export const getScrollParent = (element: Element | Document): Element => {
47
+ if (!element) {
48
+ return document.body;
49
+ }
50
+
51
+ switch (element.nodeName) {
52
+ case 'HTML':
53
+ case 'BODY':
54
+ return (element as Element).ownerDocument.body;
55
+ case '#document':
56
+ return (element as Document).body;
57
+ }
58
+
59
+ const { overflow, overflowX, overflowY } = getStyleComputedProperty(element as Element) ?? {};
60
+ if (/(auto|scroll|overlay)/.test((overflow ?? '') + (overflowY ?? '') + (overflowX ?? ''))) {
61
+ return element as Element;
62
+ }
63
+ return getScrollParent(getParentNode(element as Element));
64
+ };
65
+
66
+ export const isElementOffScreen = (element: HTMLElement, input?: HTMLElement): boolean => {
67
+ const el = element;
68
+ const scrollParent = getScrollParent(element);
69
+
70
+ const { scrollHeight: scrollHeightWithElement } = scrollParent;
71
+ el.hidden = true;
72
+ const { scrollHeight: scrollHeightWithoutElement } = scrollParent;
73
+ el.hidden = false;
74
+
75
+ const isOffscreen = scrollHeightWithElement !== scrollHeightWithoutElement;
76
+
77
+ if (isOffscreen && input !== undefined) {
78
+ const elRect = el.getBoundingClientRect();
79
+ const scrollParentRect = scrollParent.getBoundingClientRect();
80
+ const topOffset = elRect.top - scrollParentRect.top;
81
+ if (input.clientHeight + el.clientHeight > topOffset) {
82
+ return false;
83
+ }
84
+ }
85
+
86
+ return isOffscreen;
87
+ };
88
+
89
+ export const getNumberInRange = (value: number, min = -Infinity, max = Infinity): number =>
90
+ Math.min(max, Math.max(min, value));
91
+
92
+ const DEFAULT_THOUSANDS_SEPARATOR = '\u2009';
93
+
94
+ export const formatStringNumber = (
95
+ val?: string,
96
+ separator = DEFAULT_THOUSANDS_SEPARATOR,
97
+ ): string => {
98
+ if (val === undefined) {
99
+ return '';
100
+ }
101
+ const parts = val.split('.');
102
+
103
+ parts[0] = parts[0]
104
+ // убрать лидирующие нули
105
+ .replace(/^0+(?=\d)/, '')
106
+ // проставить сепараторы тысяч
107
+ .replace(/\B(?=(\d{3})+(?!\d))/g, separator);
108
+ return (parts[1] ?? '').length > 0 ? parts.join('.') : parts[0];
109
+ };
110
+
111
+ export const formatNumber = (val?: number, separator = DEFAULT_THOUSANDS_SEPARATOR): string => {
112
+ if (val === undefined || isNaN(val)) {
113
+ return '';
114
+ }
115
+ return formatStringNumber(String(val), separator);
116
+ };
117
+
118
+ export const removeStringFormat = (val?: string): string =>
119
+ (val ?? '').replace(',', '.').replace(/\s/g, '');
120
+
121
+ export const stringToNumber = (val?: string): number | undefined => {
122
+ const trimmed = removeStringFormat(val);
123
+ if (trimmed === '') {
124
+ return undefined;
125
+ }
126
+ const num = Number(trimmed);
127
+ return isNaN(num) ? undefined : num;
128
+ };
129
+
130
+ export const setCaretPosition = (elem: HTMLInputElement, caretPos: number | null): void => {
131
+ if (caretPos === null || elem === null) {
132
+ return;
133
+ }
134
+ if (elem.selectionStart) {
135
+ elem.focus();
136
+ elem.setSelectionRange(caretPos, caretPos);
137
+ } else {
138
+ elem.focus();
139
+ }
140
+ };
141
+
142
+ export const isSpaceChar = (char?: string): boolean =>
143
+ char !== undefined && char.match(/\s/) !== null;
144
+
145
+ export const getNumberLength = (n?: number): number =>
146
+ n === undefined || isNaN(n) ? 0 : n.toString().length;
147
+
148
+ export const trimStringToMaxLength = (val: string, maxLength: number): string =>
149
+ val.length > maxLength ? val.slice(0, maxLength) : val;
150
+
151
+ export const addDataAttributes = (data: IDataAttributes = {}): IDataAttributes =>
152
+ Object.fromEntries(
153
+ Object.entries(data).map(([key, value]) =>
154
+ (isString(value) && isStringNotEmpty(value)) || isNotEmpty(value)
155
+ ? [`data-${transformToKebab(key)}`, value]
156
+ : [],
157
+ ),
158
+ );
@@ -1,91 +1,91 @@
1
- import { isNotEmpty, isEmpty } from '@true-engineering/true-react-platform-helpers';
2
- import type { IPhoneInfo, IPhoneValue } from '../components';
3
- import { phoneInfo } from '../constants';
4
-
5
- export const findCountryByCode = (
6
- countryCode?: string,
7
- countriesList = phoneInfo,
8
- ): IPhoneInfo | undefined =>
9
- isNotEmpty(countryCode)
10
- ? countriesList.find((info) => info.countryCode === countryCode)
11
- : undefined;
12
-
13
- export const findCountryIndexByCode = (countryCode?: string, countriesList = phoneInfo): number =>
14
- isNotEmpty(countryCode)
15
- ? countriesList.findIndex((info) => info.countryCode === countryCode)
16
- : -1;
17
-
18
- export const getCountryTextByLocale = (country: IPhoneInfo, locale: string): string =>
19
- locale.toLowerCase() === 'ru' ? country.countryRu : country.countryEn;
20
-
21
- /**
22
- * Мутирует countriesList!
23
- */
24
- export const sortCountriesByLocale = (countriesList: IPhoneInfo[], locale: string): IPhoneInfo[] =>
25
- countriesList.sort((countryA, countryB) =>
26
- getCountryTextByLocale(countryA, locale).localeCompare(
27
- getCountryTextByLocale(countryB, locale),
28
- ),
29
- );
30
-
31
- export const checkSearchStringInCountry = (country: IPhoneInfo, searchString: string): boolean => {
32
- const checkValue = searchString.toLowerCase().trim().replace('+', '');
33
-
34
- const possibleValues = [
35
- country.countryRu,
36
- country.countryEn,
37
- ...country.countryRu.split(' '),
38
- ...country.countryEn.split(' '),
39
- country.dialCode,
40
- ].map((part) => part.toLowerCase());
41
-
42
- return possibleValues.some((v) => v.startsWith(checkValue));
43
- };
44
-
45
- export const getFullPhone = (phone?: IPhoneValue): string =>
46
- (phone?.dialCode ?? '') + (phone?.phoneNumber ?? '');
47
-
48
- export const getCountryCodeFromPhone = (phoneWithCode: string): string | undefined => {
49
- // попробуем найти уникальный код страны fullCode (dialCode + arealCode)
50
- let countryCode = phoneInfo.find((info) =>
51
- info.fullCodes.some((code) => phoneWithCode.startsWith(code)),
52
- )?.countryCode;
53
-
54
- if (isEmpty(countryCode) && isNotEmpty(phoneWithCode)) {
55
- // если не нашли уникальный fullCode (dialCode + arealCode),
56
- // то пробуем найти dialCode и выбираем с наименьшим Priority
57
- countryCode = phoneInfo
58
- .filter((info) => phoneWithCode.startsWith(info.dialCode))
59
- .sort(
60
- (infoA, infoB) => (infoA.dialCodePriority ?? 1000) - (infoB.dialCodePriority ?? 1000),
61
- )[0]?.countryCode;
62
- }
63
-
64
- return countryCode;
65
- };
66
-
67
- export const getPhoneObjFromString = (fullPhone: string, countryCode?: string): IPhoneValue => {
68
- const newCountryCode = countryCode ?? getCountryCodeFromPhone(fullPhone);
69
- const dialCode = findCountryByCode(newCountryCode)?.dialCode;
70
- const phoneNumber = fullPhone.slice(dialCode?.length);
71
-
72
- return { dialCode, phoneNumber, countryCode: newCountryCode };
73
- };
74
-
75
- export const DEFAULT_PHONE_MASK = '+ 9 999 999 999 999 99';
76
-
77
- export const getPhoneMask = (countryCode?: string): string => {
78
- let mask = DEFAULT_PHONE_MASK;
79
- if (isNotEmpty(countryCode)) {
80
- const countrySettings = findCountryByCode(countryCode);
81
-
82
- if (countrySettings !== undefined) {
83
- const dialCodeLength = countrySettings.dialCode.length;
84
- const areaAndPhoneMask =
85
- countrySettings.phoneMask ?? mask.substring(2, mask.length - dialCodeLength);
86
- mask = `+ ${'9'.repeat(dialCodeLength)} ${areaAndPhoneMask}`;
87
- }
88
- }
89
-
90
- return mask;
91
- };
1
+ import { isNotEmpty, isEmpty } from '@true-engineering/true-react-platform-helpers';
2
+ import type { IPhoneInfo, IPhoneValue } from '../components';
3
+ import { phoneInfo } from '../constants';
4
+
5
+ export const findCountryByCode = (
6
+ countryCode?: string,
7
+ countriesList = phoneInfo,
8
+ ): IPhoneInfo | undefined =>
9
+ isNotEmpty(countryCode)
10
+ ? countriesList.find((info) => info.countryCode === countryCode)
11
+ : undefined;
12
+
13
+ export const findCountryIndexByCode = (countryCode?: string, countriesList = phoneInfo): number =>
14
+ isNotEmpty(countryCode)
15
+ ? countriesList.findIndex((info) => info.countryCode === countryCode)
16
+ : -1;
17
+
18
+ export const getCountryTextByLocale = (country: IPhoneInfo, locale: string): string =>
19
+ locale.toLowerCase() === 'ru' ? country.countryRu : country.countryEn;
20
+
21
+ /**
22
+ * Мутирует countriesList!
23
+ */
24
+ export const sortCountriesByLocale = (countriesList: IPhoneInfo[], locale: string): IPhoneInfo[] =>
25
+ countriesList.sort((countryA, countryB) =>
26
+ getCountryTextByLocale(countryA, locale).localeCompare(
27
+ getCountryTextByLocale(countryB, locale),
28
+ ),
29
+ );
30
+
31
+ export const checkSearchStringInCountry = (country: IPhoneInfo, searchString: string): boolean => {
32
+ const checkValue = searchString.toLowerCase().trim().replace('+', '');
33
+
34
+ const possibleValues = [
35
+ country.countryRu,
36
+ country.countryEn,
37
+ ...country.countryRu.split(' '),
38
+ ...country.countryEn.split(' '),
39
+ country.dialCode,
40
+ ].map((part) => part.toLowerCase());
41
+
42
+ return possibleValues.some((v) => v.startsWith(checkValue));
43
+ };
44
+
45
+ export const getFullPhone = (phone?: IPhoneValue): string =>
46
+ (phone?.dialCode ?? '') + (phone?.phoneNumber ?? '');
47
+
48
+ export const getCountryCodeFromPhone = (phoneWithCode: string): string | undefined => {
49
+ // попробуем найти уникальный код страны fullCode (dialCode + arealCode)
50
+ let countryCode = phoneInfo.find((info) =>
51
+ info.fullCodes.some((code) => phoneWithCode.startsWith(code)),
52
+ )?.countryCode;
53
+
54
+ if (isEmpty(countryCode) && isNotEmpty(phoneWithCode)) {
55
+ // если не нашли уникальный fullCode (dialCode + arealCode),
56
+ // то пробуем найти dialCode и выбираем с наименьшим Priority
57
+ countryCode = phoneInfo
58
+ .filter((info) => phoneWithCode.startsWith(info.dialCode))
59
+ .sort(
60
+ (infoA, infoB) => (infoA.dialCodePriority ?? 1000) - (infoB.dialCodePriority ?? 1000),
61
+ )[0]?.countryCode;
62
+ }
63
+
64
+ return countryCode;
65
+ };
66
+
67
+ export const getPhoneObjFromString = (fullPhone: string, countryCode?: string): IPhoneValue => {
68
+ const newCountryCode = countryCode ?? getCountryCodeFromPhone(fullPhone);
69
+ const dialCode = findCountryByCode(newCountryCode)?.dialCode;
70
+ const phoneNumber = fullPhone.slice(dialCode?.length);
71
+
72
+ return { dialCode, phoneNumber, countryCode: newCountryCode };
73
+ };
74
+
75
+ export const DEFAULT_PHONE_MASK = '+ 9 999 999 999 999 99';
76
+
77
+ export const getPhoneMask = (countryCode?: string): string => {
78
+ let mask = DEFAULT_PHONE_MASK;
79
+ if (isNotEmpty(countryCode)) {
80
+ const countrySettings = findCountryByCode(countryCode);
81
+
82
+ if (countrySettings !== undefined) {
83
+ const dialCodeLength = countrySettings.dialCode.length;
84
+ const areaAndPhoneMask =
85
+ countrySettings.phoneMask ?? mask.substring(2, mask.length - dialCodeLength);
86
+ mask = `+ ${'9'.repeat(dialCodeLength)} ${areaAndPhoneMask}`;
87
+ }
88
+ }
89
+
90
+ return mask;
91
+ };
@@ -1,17 +1,17 @@
1
- import { Modifier } from 'react-overlays/usePopper';
2
-
3
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
- export const minWidthModifier: Partial<Modifier<any, any>> = {
5
- name: 'minWidth',
6
- enabled: true,
7
- phase: 'beforeWrite',
8
- requires: ['computeStyles'],
9
- fn: ({ state }) => {
10
- state.styles.popper.minWidth = `${state.rects.reference.width}px`;
11
- },
12
- effect: ({ state }) => {
13
- state.elements.popper.style.minWidth = `${
14
- (state.elements.reference as HTMLElement).offsetWidth
15
- }px`;
16
- },
17
- };
1
+ import { Modifier } from 'react-overlays/usePopper';
2
+
3
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
4
+ export const minWidthModifier: Partial<Modifier<any, any>> = {
5
+ name: 'minWidth',
6
+ enabled: true,
7
+ phase: 'beforeWrite',
8
+ requires: ['computeStyles'],
9
+ fn: ({ state }) => {
10
+ state.styles.popper.minWidth = `${state.rects.reference.width}px`;
11
+ },
12
+ effect: ({ state }) => {
13
+ state.elements.popper.style.minWidth = `${
14
+ (state.elements.reference as HTMLElement).offsetWidth
15
+ }px`;
16
+ },
17
+ };
@@ -1,7 +1,7 @@
1
- export * from './use-is-mounted';
2
- export * from './use-on-click-outside';
3
- export * from './use-dropdown';
4
- export * from './use-tweak-styles';
5
- export * from './use-did-mount-effect';
6
- export * from './use-mixed-styles';
7
- export * from './use-merged-refs';
1
+ export * from './use-is-mounted';
2
+ export * from './use-on-click-outside';
3
+ export * from './use-dropdown';
4
+ export * from './use-tweak-styles';
5
+ export * from './use-did-mount-effect';
6
+ export * from './use-mixed-styles';
7
+ export * from './use-merged-refs';
@@ -1,18 +1,18 @@
1
- import { DependencyList, EffectCallback, useEffect, useRef } from 'react';
2
-
3
- export const useDidMountEffect = (effect: EffectCallback, dependencies: DependencyList): void => {
4
- const isMountedRef = useRef(false);
5
- useEffect(() => {
6
- let unmount: ReturnType<EffectCallback>;
7
- if (isMountedRef.current) {
8
- unmount = effect();
9
- } else {
10
- isMountedRef.current = true;
11
- }
12
- return () => {
13
- if (unmount !== undefined) {
14
- unmount();
15
- }
16
- };
17
- }, dependencies);
18
- };
1
+ import { DependencyList, EffectCallback, useEffect, useRef } from 'react';
2
+
3
+ export const useDidMountEffect = (effect: EffectCallback, dependencies: DependencyList): void => {
4
+ const isMountedRef = useRef(false);
5
+ useEffect(() => {
6
+ let unmount: ReturnType<EffectCallback>;
7
+ if (isMountedRef.current) {
8
+ unmount = effect();
9
+ } else {
10
+ isMountedRef.current = true;
11
+ }
12
+ return () => {
13
+ if (unmount !== undefined) {
14
+ unmount();
15
+ }
16
+ };
17
+ }, dependencies);
18
+ };