@true-engineering/true-react-common-ui-kit 2.2.0 → 2.3.0

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 (244) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +16 -0
  3. package/dist/components/Flag/augment.d.ts +1 -1
  4. package/dist/components/Icon/complexIcons/augment.d.ts +1 -1
  5. package/dist/components/Modal/Modal.d.ts +3 -3
  6. package/dist/true-react-common-ui-kit.js +151 -97
  7. package/dist/true-react-common-ui-kit.js.map +1 -1
  8. package/dist/true-react-common-ui-kit.umd.cjs +151 -97
  9. package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
  10. package/dist/vite-env.d.ts +1 -1
  11. package/package.json +93 -93
  12. package/src/components/AccountInfo/AccountInfo.stories.tsx +32 -32
  13. package/src/components/AccountInfo/AccountInfo.styles.ts +55 -55
  14. package/src/components/AccountInfo/AccountInfo.tsx +77 -77
  15. package/src/components/AccountInfo/index.ts +2 -2
  16. package/src/components/AddButton/AddButton.stories.tsx +21 -21
  17. package/src/components/AddButton/AddButton.styles.ts +34 -34
  18. package/src/components/AddButton/AddButton.tsx +48 -48
  19. package/src/components/AddButton/index.ts +2 -2
  20. package/src/components/Button/Button.stories.tsx +52 -52
  21. package/src/components/Button/Button.styles.ts +196 -196
  22. package/src/components/Button/Button.tsx +167 -167
  23. package/src/components/Button/index.ts +2 -2
  24. package/src/components/Checkbox/Checkbox.stories.tsx +32 -32
  25. package/src/components/Checkbox/Checkbox.styles.ts +62 -62
  26. package/src/components/Checkbox/Checkbox.tsx +105 -105
  27. package/src/components/Checkbox/index.ts +2 -2
  28. package/src/components/CloseButton/CloseButton.styles.ts +34 -34
  29. package/src/components/CloseButton/CloseButton.tsx +35 -35
  30. package/src/components/CloseButton/index.ts +2 -2
  31. package/src/components/Colors/Colors.stories.tsx +7 -7
  32. package/src/components/Colors/Colors.styles.ts +38 -38
  33. package/src/components/Colors/Colors.tsx +26 -26
  34. package/src/components/Colors/index.ts +2 -2
  35. package/src/components/CssBaseline/CssBaseline.styles.ts +15 -15
  36. package/src/components/CssBaseline/CssBaseline.tsx +15 -15
  37. package/src/components/CssBaseline/index.ts +2 -2
  38. package/src/components/DateInput/DateInput.stories.tsx +61 -61
  39. package/src/components/DateInput/DateInput.styles.ts +14 -14
  40. package/src/components/DateInput/DateInput.tsx +82 -82
  41. package/src/components/DateInput/constants.ts +2 -2
  42. package/src/components/DateInput/index.ts +3 -3
  43. package/src/components/DatePicker/DatePicker.stories.tsx +87 -87
  44. package/src/components/DatePicker/DatePicker.styles.ts +44 -44
  45. package/src/components/DatePicker/DatePicker.tsx +327 -327
  46. package/src/components/DatePicker/DatePickerHeader/DatePickerHeader.styles.ts +84 -84
  47. package/src/components/DatePicker/DatePickerHeader/DatePickerHeader.tsx +79 -79
  48. package/src/components/DatePicker/DatePickerHeader/index.ts +2 -2
  49. package/src/components/DatePicker/constants.ts +1 -1
  50. package/src/components/DatePicker/helpers.ts +23 -23
  51. package/src/components/DatePicker/index.ts +3 -3
  52. package/src/components/DatePicker/types.ts +45 -45
  53. package/src/components/Description/Description.stories.tsx +27 -27
  54. package/src/components/Description/Description.styles.ts +31 -31
  55. package/src/components/Description/Description.tsx +60 -60
  56. package/src/components/Description/index.ts +2 -2
  57. package/src/components/FiltersPane/FilterInterval/FilterInterval.styles.ts +64 -64
  58. package/src/components/FiltersPane/FilterInterval/FilterInterval.tsx +143 -143
  59. package/src/components/FiltersPane/FilterInterval/index.ts +1 -1
  60. package/src/components/FiltersPane/FilterMultiSelect/FilterMultiSelect.tsx +10 -10
  61. package/src/components/FiltersPane/FilterMultiSelect/index.ts +1 -1
  62. package/src/components/FiltersPane/FilterSelect/FilterSelect.styles.ts +143 -143
  63. package/src/components/FiltersPane/FilterSelect/FilterSelect.tsx +348 -348
  64. package/src/components/FiltersPane/FilterSelect/index.ts +1 -1
  65. package/src/components/FiltersPane/FilterSelect/locales.ts +37 -37
  66. package/src/components/FiltersPane/FilterValueView/FilterValueView.styles.tsx +15 -15
  67. package/src/components/FiltersPane/FilterValueView/FilterValueView.tsx +166 -166
  68. package/src/components/FiltersPane/FilterValueView/index.tsx +1 -1
  69. package/src/components/FiltersPane/FilterWithDates/FilterWithDates.styles.ts +60 -60
  70. package/src/components/FiltersPane/FilterWithDates/FilterWithDates.tsx +184 -184
  71. package/src/components/FiltersPane/FilterWithDates/index.ts +1 -1
  72. package/src/components/FiltersPane/FilterWithPeriod/FilterWithPeriod.styles.ts +17 -17
  73. package/src/components/FiltersPane/FilterWithPeriod/FilterWithPeriod.tsx +198 -198
  74. package/src/components/FiltersPane/FilterWithPeriod/index.ts +1 -1
  75. package/src/components/FiltersPane/FilterWrapper/FilterWrapper.styles.ts +110 -110
  76. package/src/components/FiltersPane/FilterWrapper/FilterWrapper.tsx +346 -346
  77. package/src/components/FiltersPane/FilterWrapper/index.ts +1 -1
  78. package/src/components/FiltersPane/FiltersPane.stories.tsx +295 -295
  79. package/src/components/FiltersPane/FiltersPane.styles.ts +71 -71
  80. package/src/components/FiltersPane/FiltersPane.tsx +151 -151
  81. package/src/components/FiltersPane/FiltersPaneSearch/FiltersPaneSearch.styles.ts +109 -109
  82. package/src/components/FiltersPane/FiltersPaneSearch/FiltersPaneSearch.tsx +155 -155
  83. package/src/components/FiltersPane/FiltersPaneSearch/index.ts +1 -1
  84. package/src/components/FiltersPane/index.ts +20 -20
  85. package/src/components/FiltersPane/locales.ts +107 -107
  86. package/src/components/FiltersPane/types.ts +112 -112
  87. package/src/components/Flag/Flag.stories.tsx +29 -29
  88. package/src/components/Flag/Flag.styles.ts +18 -18
  89. package/src/components/Flag/Flag.tsx +27 -27
  90. package/src/components/Flag/augment.d.ts +1 -1
  91. package/src/components/Flag/index.ts +2 -2
  92. package/src/components/FlexibleTable/FlexibleTable.stories.tsx +84 -84
  93. package/src/components/FlexibleTable/FlexibleTable.styles.ts +131 -131
  94. package/src/components/FlexibleTable/FlexibleTable.tsx +205 -205
  95. package/src/components/FlexibleTable/TableRow.tsx +152 -152
  96. package/src/components/FlexibleTable/TableValue.tsx +75 -75
  97. package/src/components/FlexibleTable/fixture-test.ts +254 -254
  98. package/src/components/FlexibleTable/index.ts +3 -3
  99. package/src/components/FlexibleTable/types.ts +52 -52
  100. package/src/components/Icon/ComplexIconBoilerplate.tsx +17 -17
  101. package/src/components/Icon/Icon.stories.tsx +85 -85
  102. package/src/components/Icon/Icon.styles.ts +10 -10
  103. package/src/components/Icon/Icon.tsx +32 -32
  104. package/src/components/Icon/IconBoilerplate.tsx +42 -42
  105. package/src/components/Icon/complexIcons/augment.d.ts +1 -1
  106. package/src/components/Icon/complexIcons/avatarGreen.svg +57 -57
  107. package/src/components/Icon/complexIcons/icons.ts +7 -7
  108. package/src/components/Icon/complexIcons/index.ts +1 -1
  109. package/src/components/Icon/icons/icons.ts +838 -838
  110. package/src/components/Icon/icons/index.ts +1 -1
  111. package/src/components/Icon/index.ts +4 -4
  112. package/src/components/IncrementInput/ChangeButton.tsx +33 -33
  113. package/src/components/IncrementInput/IncrementInput.stories.tsx +31 -31
  114. package/src/components/IncrementInput/IncrementInput.styles.ts +77 -77
  115. package/src/components/IncrementInput/IncrementInput.tsx +80 -80
  116. package/src/components/IncrementInput/index.ts +2 -2
  117. package/src/components/Input/Input.stories.tsx +86 -86
  118. package/src/components/Input/Input.styles.ts +307 -307
  119. package/src/components/Input/Input.tsx +311 -311
  120. package/src/components/Input/index.ts +2 -2
  121. package/src/components/List/List.stories.tsx +62 -62
  122. package/src/components/List/List.styles.ts +52 -52
  123. package/src/components/List/List.tsx +64 -64
  124. package/src/components/List/index.ts +2 -2
  125. package/src/components/Modal/Modal.stories.tsx +105 -105
  126. package/src/components/Modal/Modal.styles.ts +305 -305
  127. package/src/components/Modal/Modal.tsx +200 -186
  128. package/src/components/Modal/index.ts +2 -2
  129. package/src/components/MoreMenu/MoreMenu.stories.tsx +46 -46
  130. package/src/components/MoreMenu/MoreMenu.styles.ts +70 -70
  131. package/src/components/MoreMenu/MoreMenu.tsx +90 -90
  132. package/src/components/MoreMenu/index.ts +2 -2
  133. package/src/components/MultiSelect/MultiSelect.stories.tsx +46 -46
  134. package/src/components/MultiSelect/MultiSelect.styles.ts +55 -55
  135. package/src/components/MultiSelect/MultiSelect.tsx +89 -89
  136. package/src/components/MultiSelect/MultiSelectInput/MultiSelectInput.styles.ts +73 -73
  137. package/src/components/MultiSelect/MultiSelectInput/MultiSelectInput.tsx +51 -51
  138. package/src/components/MultiSelect/MultiSelectInput/index.ts +1 -1
  139. package/src/components/MultiSelect/index.ts +3 -3
  140. package/src/components/MultiSelectList/MultiSelectList.styles.ts +124 -124
  141. package/src/components/MultiSelectList/MultiSelectList.tsx +451 -451
  142. package/src/components/MultiSelectList/index.ts +2 -2
  143. package/src/components/MultiSelectList/locales.ts +37 -37
  144. package/src/components/Notification/Notification.stories.tsx +46 -46
  145. package/src/components/Notification/Notification.styles.ts +50 -50
  146. package/src/components/Notification/Notification.tsx +79 -79
  147. package/src/components/Notification/index.ts +2 -2
  148. package/src/components/NumberInput/NumberInput.stories.tsx +35 -35
  149. package/src/components/NumberInput/NumberInput.tsx +133 -133
  150. package/src/components/NumberInput/helpers.ts +86 -86
  151. package/src/components/NumberInput/index.ts +1 -1
  152. package/src/components/PhoneInput/PhoneInput.stories.tsx +70 -70
  153. package/src/components/PhoneInput/PhoneInput.styles.ts +84 -84
  154. package/src/components/PhoneInput/PhoneInput.tsx +194 -194
  155. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.stories.tsx +21 -21
  156. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.styles.ts +100 -100
  157. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.tsx +147 -147
  158. package/src/components/PhoneInput/PhoneInputCountryList/index.ts +2 -2
  159. package/src/components/PhoneInput/index.ts +6 -6
  160. package/src/components/PhoneInput/phone-info.ts +2147 -2147
  161. package/src/components/PhoneInput/types.ts +16 -16
  162. package/src/components/RadioButton/RadioButton.stories.tsx +46 -46
  163. package/src/components/RadioButton/RadioButton.styles.ts +37 -37
  164. package/src/components/RadioButton/RadioButton.tsx +55 -55
  165. package/src/components/RadioButton/index.ts +2 -2
  166. package/src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts +61 -61
  167. package/src/components/ScrollIntoViewIfNeeded/index.ts +1 -1
  168. package/src/components/SearchInput/SearchInput.stories.tsx +23 -23
  169. package/src/components/SearchInput/SearchInput.styles.ts +50 -50
  170. package/src/components/SearchInput/SearchInput.tsx +50 -50
  171. package/src/components/SearchInput/index.ts +2 -2
  172. package/src/components/Select/MultiSelect.stories.tsx +240 -240
  173. package/src/components/Select/Select.stories.tsx +235 -235
  174. package/src/components/Select/Select.styles.ts +96 -96
  175. package/src/components/Select/Select.tsx +575 -575
  176. package/src/components/Select/SelectList/SelectList.styles.ts +72 -72
  177. package/src/components/Select/SelectList/SelectList.tsx +158 -158
  178. package/src/components/Select/SelectList/index.ts +1 -1
  179. package/src/components/Select/SelectListItem/SelectListItem.styles.ts +14 -14
  180. package/src/components/Select/SelectListItem/SelectListItem.tsx +68 -68
  181. package/src/components/Select/constants.ts +2 -2
  182. package/src/components/Select/helpers.ts +26 -26
  183. package/src/components/Select/index.ts +4 -4
  184. package/src/components/Select/types.ts +1 -1
  185. package/src/components/SmartInput/SmartInput.stories.tsx +50 -50
  186. package/src/components/SmartInput/SmartInput.tsx +147 -147
  187. package/src/components/SmartInput/helpers.ts +85 -85
  188. package/src/components/SmartInput/index.ts +1 -1
  189. package/src/components/Switch/Switch.stories.tsx +40 -40
  190. package/src/components/Switch/Switch.styles.ts +75 -75
  191. package/src/components/Switch/Switch.tsx +83 -83
  192. package/src/components/Switch/index.ts +2 -2
  193. package/src/components/TextArea/TextArea.stories.tsx +35 -35
  194. package/src/components/TextArea/TextArea.styles.ts +153 -153
  195. package/src/components/TextArea/TextArea.tsx +165 -165
  196. package/src/components/TextArea/index.ts +2 -2
  197. package/src/components/TextWithInfo/TextWithInfo.stories.tsx +53 -53
  198. package/src/components/TextWithInfo/TextWithInfo.styles.ts +60 -60
  199. package/src/components/TextWithInfo/TextWithInfo.tsx +60 -60
  200. package/src/components/TextWithInfo/index.ts +2 -2
  201. package/src/components/TextWithTooltip/TextWithTooltip.stories.tsx +58 -58
  202. package/src/components/TextWithTooltip/TextWithTooltip.styles.ts +19 -19
  203. package/src/components/TextWithTooltip/TextWithTooltip.tsx +143 -143
  204. package/src/components/TextWithTooltip/index.ts +2 -2
  205. package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +41 -41
  206. package/src/components/ThemedPreloader/ThemedPreloader.styles.ts +21 -21
  207. package/src/components/ThemedPreloader/ThemedPreloader.tsx +50 -50
  208. package/src/components/ThemedPreloader/components/DefaultPreloader/DefaultPreloader.tsx +29 -29
  209. package/src/components/ThemedPreloader/components/DefaultPreloader/index.ts +1 -1
  210. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.ts +54 -54
  211. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.tsx +18 -18
  212. package/src/components/ThemedPreloader/components/DotsPreloader/index.ts +2 -2
  213. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.ts +11 -11
  214. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx +25 -25
  215. package/src/components/ThemedPreloader/components/SvgPreloader/index.ts +2 -2
  216. package/src/components/ThemedPreloader/components/index.ts +2 -2
  217. package/src/components/ThemedPreloader/index.ts +2 -2
  218. package/src/components/Toaster/Toaster.stories.tsx +30 -30
  219. package/src/components/Toaster/Toaster.styles.ts +59 -59
  220. package/src/components/Toaster/Toaster.tsx +110 -110
  221. package/src/components/Toaster/index.ts +2 -2
  222. package/src/components/Tooltip/Tooltip.stories.tsx +19 -19
  223. package/src/components/Tooltip/Tooltip.styles.ts +45 -45
  224. package/src/components/Tooltip/Tooltip.tsx +35 -35
  225. package/src/components/Tooltip/index.ts +3 -3
  226. package/src/components/Tooltip/types.ts +1 -1
  227. package/src/components/index.ts +36 -36
  228. package/src/helpers/deprecated.ts +22 -22
  229. package/src/helpers/index.ts +4 -4
  230. package/src/helpers/misc.ts +158 -158
  231. package/src/helpers/phone.ts +87 -87
  232. package/src/helpers/popper-helpers.ts +17 -17
  233. package/src/helpers/snippets.tsx +6 -6
  234. package/src/hooks/index.ts +6 -6
  235. package/src/hooks/use-did-mount-effect.ts +18 -18
  236. package/src/hooks/use-dropdown.ts +82 -82
  237. package/src/hooks/use-is-mounted.ts +15 -15
  238. package/src/hooks/use-on-click-outside.ts +77 -77
  239. package/src/hooks/use-theme.ts +32 -32
  240. package/src/hooks/use-tweak-styles.ts +13 -13
  241. package/src/index.ts +6 -6
  242. package/src/theme.ts +149 -149
  243. package/src/types.ts +107 -107
  244. package/src/vite-env.d.ts +1 -1
@@ -1,19 +1,19 @@
1
- import { ComponentStory, ComponentMeta } from '@storybook/react';
2
- import { Tooltip } from './Tooltip';
3
-
4
- export default {
5
- title: 'Tooltip',
6
- component: Tooltip,
7
- args: {
8
- text: 'Tooltip Text',
9
- view: 'tooltip',
10
- type: 'info',
11
- },
12
- argTypes: {
13
- text: { control: 'text' },
14
- view: { control: 'inline-radio', options: ['tooltip', 'hint'] },
15
- type: { control: 'inline-radio', options: ['info', 'error'] },
16
- },
17
- } as ComponentMeta<typeof Tooltip>;
18
-
19
- export const Default: ComponentStory<typeof Tooltip> = (args) => <Tooltip {...args} />;
1
+ import { ComponentStory, ComponentMeta } from '@storybook/react';
2
+ import { Tooltip } from './Tooltip';
3
+
4
+ export default {
5
+ title: 'Tooltip',
6
+ component: Tooltip,
7
+ args: {
8
+ text: 'Tooltip Text',
9
+ view: 'tooltip',
10
+ type: 'info',
11
+ },
12
+ argTypes: {
13
+ text: { control: 'text' },
14
+ view: { control: 'inline-radio', options: ['tooltip', 'hint'] },
15
+ type: { control: 'inline-radio', options: ['info', 'error'] },
16
+ },
17
+ } as ComponentMeta<typeof Tooltip>;
18
+
19
+ export const Default: ComponentStory<typeof Tooltip> = (args) => <Tooltip {...args} />;
@@ -1,45 +1,45 @@
1
- import { rgba } from '../../helpers';
2
- import { colors, dimensions } from '../../theme';
3
- import { ComponentStyles } from '../../types';
4
- import { ITooltipProps } from './Tooltip';
5
-
6
- interface IStyleProps {
7
- type: NonNullable<ITooltipProps['type']>;
8
- }
9
-
10
- export const styles = {
11
- root: {
12
- display: 'inline-block',
13
- boxSizing: 'border-box',
14
- },
15
-
16
- tooltip: {
17
- fontSize: 14,
18
- padding: [18, 20],
19
- letterSpacing: 0.15,
20
- backgroundColor: ({ type }: IStyleProps): string =>
21
- type === 'error' ? colors.RED_WARNING : colors.CLASSIC_WHITE,
22
- color: ({ type }: IStyleProps): string =>
23
- type === 'error' ? colors.CLASSIC_WHITE : colors.FONT_MAIN,
24
- boxShadow: `0 0 1px ${rgba(colors.FONT_MAIN, 0.4)}, 0 -2px 6px ${rgba(
25
- colors.FONT_MAIN,
26
- 0.06,
27
- )}, 0 8px 32px -8px ${rgba(colors.FONT_MAIN, 0.3)}`,
28
- borderRadius: 12,
29
- lineHeight: 1.4,
30
- maxWidth: 320,
31
- },
32
-
33
- hint: {
34
- whiteSpace: 'nowrap',
35
- fontSize: 12,
36
- padding: [8, 12],
37
- borderRadius: dimensions.BORDER_RADIUS_SMALL,
38
- backgroundColor: ({ type }: { type: ITooltipProps['type'] }): string =>
39
- type === 'error' ? colors.RED_WARNING : colors.FONT_MEDIUM,
40
- color: colors.CLASSIC_WHITE,
41
- letterSpacing: 0.2,
42
- },
43
- };
44
-
45
- export type TooltipStyles = ComponentStyles<typeof styles, IStyleProps>;
1
+ import { rgba } from '../../helpers';
2
+ import { colors, dimensions } from '../../theme';
3
+ import { ComponentStyles } from '../../types';
4
+ import { ITooltipProps } from './Tooltip';
5
+
6
+ interface IStyleProps {
7
+ type: NonNullable<ITooltipProps['type']>;
8
+ }
9
+
10
+ export const styles = {
11
+ root: {
12
+ display: 'inline-block',
13
+ boxSizing: 'border-box',
14
+ },
15
+
16
+ tooltip: {
17
+ fontSize: 14,
18
+ padding: [18, 20],
19
+ letterSpacing: 0.15,
20
+ backgroundColor: ({ type }: IStyleProps): string =>
21
+ type === 'error' ? colors.RED_WARNING : colors.CLASSIC_WHITE,
22
+ color: ({ type }: IStyleProps): string =>
23
+ type === 'error' ? colors.CLASSIC_WHITE : colors.FONT_MAIN,
24
+ boxShadow: `0 0 1px ${rgba(colors.FONT_MAIN, 0.4)}, 0 -2px 6px ${rgba(
25
+ colors.FONT_MAIN,
26
+ 0.06,
27
+ )}, 0 8px 32px -8px ${rgba(colors.FONT_MAIN, 0.3)}`,
28
+ borderRadius: 12,
29
+ lineHeight: 1.4,
30
+ maxWidth: 320,
31
+ },
32
+
33
+ hint: {
34
+ whiteSpace: 'nowrap',
35
+ fontSize: 12,
36
+ padding: [8, 12],
37
+ borderRadius: dimensions.BORDER_RADIUS_SMALL,
38
+ backgroundColor: ({ type }: { type: ITooltipProps['type'] }): string =>
39
+ type === 'error' ? colors.RED_WARNING : colors.FONT_MEDIUM,
40
+ color: colors.CLASSIC_WHITE,
41
+ letterSpacing: 0.2,
42
+ },
43
+ };
44
+
45
+ export type TooltipStyles = ComponentStyles<typeof styles, IStyleProps>;
@@ -1,35 +1,35 @@
1
- import { FC, ReactNode } from 'react';
2
- import clsx from 'clsx';
3
- import { addDataAttributes } from '../../helpers';
4
- import { useTheme } from '../../hooks';
5
- import { ICommonProps } from '../../types';
6
- import { styles, TooltipStyles } from './Tooltip.styles';
7
-
8
- export interface ITooltipProps extends ICommonProps {
9
- tweakStyles?: TooltipStyles;
10
- text: ReactNode;
11
- /**
12
- * @default `tooltip`
13
- */
14
- view?: 'tooltip' | 'hint';
15
- /**
16
- * @default `info`
17
- */
18
- type?: 'info' | 'error';
19
- }
20
-
21
- export const Tooltip: FC<ITooltipProps> = ({
22
- text,
23
- view = 'tooltip',
24
- type = 'info',
25
- data,
26
- tweakStyles,
27
- }) => {
28
- const { classes } = useTheme('Tooltip', styles, tweakStyles, { type });
29
-
30
- return (
31
- <div className={clsx(classes.root, classes[view])} {...addDataAttributes(data)}>
32
- {text}
33
- </div>
34
- );
35
- };
1
+ import { FC, ReactNode } from 'react';
2
+ import clsx from 'clsx';
3
+ import { addDataAttributes } from '../../helpers';
4
+ import { useTheme } from '../../hooks';
5
+ import { ICommonProps } from '../../types';
6
+ import { styles, TooltipStyles } from './Tooltip.styles';
7
+
8
+ export interface ITooltipProps extends ICommonProps {
9
+ tweakStyles?: TooltipStyles;
10
+ text: ReactNode;
11
+ /**
12
+ * @default `tooltip`
13
+ */
14
+ view?: 'tooltip' | 'hint';
15
+ /**
16
+ * @default `info`
17
+ */
18
+ type?: 'info' | 'error';
19
+ }
20
+
21
+ export const Tooltip: FC<ITooltipProps> = ({
22
+ text,
23
+ view = 'tooltip',
24
+ type = 'info',
25
+ data,
26
+ tweakStyles,
27
+ }) => {
28
+ const { classes } = useTheme('Tooltip', styles, tweakStyles, { type });
29
+
30
+ return (
31
+ <div className={clsx(classes.root, classes[view])} {...addDataAttributes(data)}>
32
+ {text}
33
+ </div>
34
+ );
35
+ };
@@ -1,3 +1,3 @@
1
- export * from './Tooltip';
2
- export type { TooltipStyles } from './Tooltip.styles';
3
- export type { ITooltipType } from './types';
1
+ export * from './Tooltip';
2
+ export type { TooltipStyles } from './Tooltip.styles';
3
+ export type { ITooltipType } from './types';
@@ -1 +1 @@
1
- export type ITooltipType = 'info' | 'warning';
1
+ export type ITooltipType = 'info' | 'warning';
@@ -1,36 +1,36 @@
1
- export * from './AccountInfo';
2
- export * from './AddButton';
3
- export * from './Button';
4
- export * from './Checkbox';
5
- export * from './CloseButton';
6
- export * from './Colors';
7
- export * from './CssBaseline';
8
- export * from './DateInput';
9
- export * from './DatePicker';
10
- export * from './Description';
11
- export * from './FiltersPane';
12
- export * from './Flag';
13
- export * from './FlexibleTable';
14
- export * from './Icon';
15
- export * from './IncrementInput';
16
- export * from './Input';
17
- export * from './List';
18
- export * from './Modal';
19
- export * from './MoreMenu';
20
- export * from './MultiSelect';
21
- export * from './MultiSelectList';
22
- export * from './Notification';
23
- export * from './NumberInput';
24
- export * from './SearchInput';
25
- export * from './SmartInput';
26
- export * from './PhoneInput';
27
- export * from './RadioButton';
28
- export * from './Select';
29
- export * from './Switch';
30
- export * from './TextArea';
31
- export * from './TextWithInfo';
32
- export * from './TextWithTooltip';
33
- export * from './ThemedPreloader';
34
- export * from './Toaster';
35
- export * from './Tooltip';
36
- export * from './ScrollIntoViewIfNeeded';
1
+ export * from './AccountInfo';
2
+ export * from './AddButton';
3
+ export * from './Button';
4
+ export * from './Checkbox';
5
+ export * from './CloseButton';
6
+ export * from './Colors';
7
+ export * from './CssBaseline';
8
+ export * from './DateInput';
9
+ export * from './DatePicker';
10
+ export * from './Description';
11
+ export * from './FiltersPane';
12
+ export * from './Flag';
13
+ export * from './FlexibleTable';
14
+ export * from './Icon';
15
+ export * from './IncrementInput';
16
+ export * from './Input';
17
+ export * from './List';
18
+ export * from './Modal';
19
+ export * from './MoreMenu';
20
+ export * from './MultiSelect';
21
+ export * from './MultiSelectList';
22
+ export * from './Notification';
23
+ export * from './NumberInput';
24
+ export * from './SearchInput';
25
+ export * from './SmartInput';
26
+ export * from './PhoneInput';
27
+ export * from './RadioButton';
28
+ export * from './Select';
29
+ export * from './Switch';
30
+ export * from './TextArea';
31
+ export * from './TextWithInfo';
32
+ export * from './TextWithTooltip';
33
+ export * from './ThemedPreloader';
34
+ export * from './Toaster';
35
+ export * from './Tooltip';
36
+ export * from './ScrollIntoViewIfNeeded';
@@ -1,22 +1,22 @@
1
- import {
2
- addClickHandler as addClickHandlerHelper,
3
- addDataTestId as addDataTestIdHelper,
4
- createFilter as createFilterHelper,
5
- getSelectKeyHandler as getSelectKeyHandlerHelper,
6
- getTestId as getTestIdHelper,
7
- isEmpty as isEmptyHelper,
8
- isNumberInteger,
9
- isString,
10
- isStringNotEmpty as isStringNotEmptyHelper,
11
- } from '@true-engineering/true-react-platform-helpers';
12
-
13
- export const isInt = isNumberInteger;
14
- export const addClickHandler = addClickHandlerHelper;
15
- export const addDataTestId = addDataTestIdHelper;
16
- export const createFilter = createFilterHelper;
17
- export const getSelectKeyHandler = getSelectKeyHandlerHelper;
18
- export const getTestId = getTestIdHelper;
19
- export const isStringNotEmpty = isStringNotEmptyHelper;
20
- export const isEmpty = isEmptyHelper;
21
- export const isNotEmpty = <T>(val: T | null | undefined): val is T =>
22
- (isString(val) && isStringNotEmpty(val)) || isNotEmpty(val);
1
+ import {
2
+ addClickHandler as addClickHandlerHelper,
3
+ addDataTestId as addDataTestIdHelper,
4
+ createFilter as createFilterHelper,
5
+ getSelectKeyHandler as getSelectKeyHandlerHelper,
6
+ getTestId as getTestIdHelper,
7
+ isEmpty as isEmptyHelper,
8
+ isNumberInteger,
9
+ isString,
10
+ isStringNotEmpty as isStringNotEmptyHelper,
11
+ } from '@true-engineering/true-react-platform-helpers';
12
+
13
+ export const isInt = isNumberInteger;
14
+ export const addClickHandler = addClickHandlerHelper;
15
+ export const addDataTestId = addDataTestIdHelper;
16
+ export const createFilter = createFilterHelper;
17
+ export const getSelectKeyHandler = getSelectKeyHandlerHelper;
18
+ export const getTestId = getTestIdHelper;
19
+ export const isStringNotEmpty = isStringNotEmptyHelper;
20
+ export const isEmpty = isEmptyHelper;
21
+ export const isNotEmpty = <T>(val: T | null | undefined): val is T =>
22
+ (isString(val) && isStringNotEmpty(val)) || isNotEmpty(val);
@@ -1,4 +1,4 @@
1
- export * from './popper-helpers';
2
- export * from './phone';
3
- export * from './misc';
4
- export * from './deprecated';
1
+ export * from './popper-helpers';
2
+ export * from './phone';
3
+ export * from './misc';
4
+ export * from './deprecated';
@@ -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) =>
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) =>
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
+ );