@true-engineering/true-react-common-ui-kit 2.5.0 → 2.7.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 (233) hide show
  1. package/README.md +26 -0
  2. package/dist/components/Icon/icons-list.d.ts +1 -1
  3. package/dist/components/Input/Input.d.ts +2 -2
  4. package/dist/components/List/List.d.ts +1 -1
  5. package/dist/components/List/List.styles.d.ts +0 -28
  6. package/dist/components/List/index.d.ts +0 -1
  7. package/dist/components/ListItem/ListItem.d.ts +6 -0
  8. package/dist/components/ListItem/ListItem.styles.d.ts +35 -0
  9. package/dist/components/ListItem/constants.d.ts +1 -0
  10. package/dist/components/ListItem/index.d.ts +3 -0
  11. package/dist/components/{List → ListItem}/types.d.ts +5 -0
  12. package/dist/components/MoreMenu/MoreMenu.d.ts +2 -2
  13. package/dist/components/index.d.ts +1 -0
  14. package/dist/helpers/index.d.ts +1 -0
  15. package/dist/true-react-common-ui-kit.js +175 -75
  16. package/dist/true-react-common-ui-kit.js.map +1 -1
  17. package/dist/true-react-common-ui-kit.umd.cjs +176 -76
  18. package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
  19. package/dist/types.d.ts +1 -1
  20. package/package.json +93 -93
  21. package/src/components/AccountInfo/AccountInfo.stories.tsx +32 -32
  22. package/src/components/AccountInfo/AccountInfo.tsx +76 -76
  23. package/src/components/AccountInfo/constants.ts +1 -1
  24. package/src/components/AddButton/AddButton.tsx +48 -48
  25. package/src/components/Button/Button.stories.tsx +56 -56
  26. package/src/components/Button/Button.tsx +153 -154
  27. package/src/components/Button/constants.ts +9 -9
  28. package/src/components/Button/index.ts +3 -3
  29. package/src/components/Button/types.ts +5 -5
  30. package/src/components/Checkbox/Checkbox.stories.tsx +32 -32
  31. package/src/components/Checkbox/Checkbox.tsx +105 -105
  32. package/src/components/CloseButton/CloseButton.styles.ts +34 -34
  33. package/src/components/CloseButton/CloseButton.tsx +35 -35
  34. package/src/components/Colors/Colors.tsx +26 -26
  35. package/src/components/CssBaseline/CssBaseline.tsx +15 -15
  36. package/src/components/DateInput/DateInput.stories.tsx +61 -61
  37. package/src/components/DateInput/DateInput.tsx +82 -82
  38. package/src/components/DatePicker/DatePicker.stories.tsx +87 -87
  39. package/src/components/DatePicker/DatePicker.styles.ts +44 -44
  40. package/src/components/DatePicker/DatePicker.tsx +309 -309
  41. package/src/components/DatePicker/components/DatePickerHeader/DatePickerHeader.styles.ts +84 -84
  42. package/src/components/DatePicker/components/DatePickerHeader/DatePickerHeader.tsx +79 -79
  43. package/src/components/DatePicker/components/DatePickerHeader/index.ts +2 -2
  44. package/src/components/DatePicker/components/PopperContainer/PopperContainer.tsx +6 -6
  45. package/src/components/DatePicker/components/PopperContainer/index.ts +1 -1
  46. package/src/components/DatePicker/components/index.ts +2 -2
  47. package/src/components/DatePicker/constants.ts +6 -6
  48. package/src/components/DatePicker/helpers.ts +23 -23
  49. package/src/components/DatePicker/index.ts +4 -4
  50. package/src/components/DatePicker/types.ts +45 -45
  51. package/src/components/Description/Description.stories.tsx +27 -27
  52. package/src/components/Description/Description.tsx +59 -59
  53. package/src/components/Description/constants.ts +1 -1
  54. package/src/components/FiltersPane/FiltersPane.stories.tsx +295 -295
  55. package/src/components/FiltersPane/FiltersPane.tsx +150 -150
  56. package/src/components/FiltersPane/components/Filter/Filter.tsx +203 -203
  57. package/src/components/FiltersPane/components/Filter/index.ts +1 -1
  58. package/src/components/FiltersPane/components/FilterInterval/FilterInterval.styles.ts +64 -64
  59. package/src/components/FiltersPane/components/FilterInterval/FilterInterval.tsx +141 -141
  60. package/src/components/FiltersPane/components/FilterInterval/index.ts +2 -2
  61. package/src/components/FiltersPane/components/FilterMultiSelect/FilterMultiSelect.tsx +10 -10
  62. package/src/components/FiltersPane/components/FilterMultiSelect/index.ts +1 -1
  63. package/src/components/FiltersPane/components/FilterSelect/FilterSelect.styles.ts +143 -143
  64. package/src/components/FiltersPane/components/FilterSelect/FilterSelect.tsx +346 -346
  65. package/src/components/FiltersPane/components/FilterSelect/index.ts +2 -2
  66. package/src/components/FiltersPane/components/FilterValueView/FilterValueView.styles.tsx +15 -15
  67. package/src/components/FiltersPane/components/FilterValueView/FilterValueView.tsx +163 -163
  68. package/src/components/FiltersPane/components/FilterValueView/index.tsx +2 -2
  69. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.styles.ts +60 -60
  70. package/src/components/FiltersPane/components/FilterWithDates/FilterWithDates.tsx +181 -181
  71. package/src/components/FiltersPane/components/FilterWithDates/index.ts +2 -2
  72. package/src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.styles.ts +17 -17
  73. package/src/components/FiltersPane/components/FilterWithPeriod/FilterWithPeriod.tsx +174 -174
  74. package/src/components/FiltersPane/components/FilterWithPeriod/index.ts +2 -2
  75. package/src/components/FiltersPane/components/FilterWrapper/FilterWrapper.styles.ts +110 -110
  76. package/src/components/FiltersPane/components/FilterWrapper/FilterWrapper.tsx +149 -149
  77. package/src/components/FiltersPane/components/FilterWrapper/index.ts +2 -2
  78. package/src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.styles.ts +109 -109
  79. package/src/components/FiltersPane/components/FiltersPaneSearch/FiltersPaneSearch.tsx +155 -155
  80. package/src/components/FiltersPane/components/FiltersPaneSearch/index.ts +2 -2
  81. package/src/components/FiltersPane/components/index.ts +9 -9
  82. package/src/components/FiltersPane/constants.ts +137 -137
  83. package/src/components/FiltersPane/helpers.ts +26 -26
  84. package/src/components/FiltersPane/index.ts +5 -5
  85. package/src/components/FiltersPane/types.ts +156 -156
  86. package/src/components/Flag/Flag.stories.tsx +29 -29
  87. package/src/components/Flag/Flag.tsx +27 -27
  88. package/src/components/FlexibleTable/FlexibleTable.stories.tsx +338 -338
  89. package/src/components/FlexibleTable/FlexibleTable.styles.ts +131 -131
  90. package/src/components/FlexibleTable/FlexibleTable.tsx +205 -205
  91. package/src/components/FlexibleTable/components/TableRow/TableRow.tsx +152 -152
  92. package/src/components/FlexibleTable/components/TableRow/index.ts +1 -1
  93. package/src/components/FlexibleTable/components/TableValue/TableValue.tsx +74 -74
  94. package/src/components/FlexibleTable/components/TableValue/index.ts +1 -1
  95. package/src/components/FlexibleTable/components/index.ts +2 -2
  96. package/src/components/FlexibleTable/constants.ts +1 -1
  97. package/src/components/FlexibleTable/types.ts +52 -52
  98. package/src/components/Icon/Icon.stories.tsx +86 -86
  99. package/src/components/Icon/Icon.tsx +27 -27
  100. package/src/components/Icon/complexIcons/icons.ts +5 -5
  101. package/src/components/Icon/components/ComplexIconBoilerplate/ComplexIconBoilerplate.tsx +16 -16
  102. package/src/components/Icon/components/ComplexIconBoilerplate/index.ts +1 -1
  103. package/src/components/Icon/components/IconBolerplate/IconBoilerplate.tsx +43 -43
  104. package/src/components/Icon/components/IconBolerplate/index.ts +1 -1
  105. package/src/components/Icon/components/index.ts +2 -2
  106. package/src/components/Icon/helpers.ts +9 -9
  107. package/src/components/Icon/icons-list.ts +856 -826
  108. package/src/components/Icon/index.ts +4 -4
  109. package/src/components/Icon/types.ts +16 -16
  110. package/src/components/IncrementInput/IncrementInput.stories.tsx +31 -31
  111. package/src/components/IncrementInput/IncrementInput.tsx +80 -80
  112. package/src/components/IncrementInput/components/ChangeButton/ChangeButton.tsx +33 -33
  113. package/src/components/IncrementInput/components/ChangeButton/index.ts +1 -1
  114. package/src/components/IncrementInput/components/index.ts +1 -1
  115. package/src/components/Input/Input.stories.tsx +86 -86
  116. package/src/components/Input/Input.tsx +308 -308
  117. package/src/components/Input/constants.ts +1 -1
  118. package/src/components/Input/index.ts +3 -3
  119. package/src/components/Input/types.ts +6 -6
  120. package/src/components/List/List.stories.tsx +63 -63
  121. package/src/components/List/List.styles.ts +0 -38
  122. package/src/components/List/List.tsx +36 -54
  123. package/src/components/List/index.ts +2 -3
  124. package/src/components/ListItem/ListItem.stories.tsx +67 -0
  125. package/src/components/ListItem/ListItem.styles.ts +48 -0
  126. package/src/components/ListItem/ListItem.tsx +44 -0
  127. package/src/components/ListItem/constants.ts +5 -0
  128. package/src/components/ListItem/index.ts +3 -0
  129. package/src/components/{List → ListItem}/types.ts +19 -13
  130. package/src/components/Modal/Modal.stories.tsx +105 -105
  131. package/src/components/Modal/Modal.styles.ts +305 -305
  132. package/src/components/Modal/Modal.tsx +184 -184
  133. package/src/components/Modal/index.ts +3 -3
  134. package/src/components/Modal/types.ts +17 -17
  135. package/src/components/MoreMenu/MoreMenu.styles.ts +70 -70
  136. package/src/components/MoreMenu/MoreMenu.tsx +90 -90
  137. package/src/components/MultiSelect/MultiSelect.stories.tsx +46 -46
  138. package/src/components/MultiSelect/MultiSelect.tsx +92 -92
  139. package/src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.styles.ts +73 -73
  140. package/src/components/MultiSelect/components/MultiSelectInput/MultiSelectInput.tsx +51 -51
  141. package/src/components/MultiSelect/components/MultiSelectInput/index.ts +2 -2
  142. package/src/components/MultiSelect/components/index.ts +1 -1
  143. package/src/components/MultiSelect/index.ts +4 -4
  144. package/src/components/MultiSelect/types.ts +1 -1
  145. package/src/components/MultiSelectList/MultiSelectList.styles.ts +124 -124
  146. package/src/components/MultiSelectList/MultiSelectList.tsx +441 -441
  147. package/src/components/MultiSelectList/constants.ts +21 -21
  148. package/src/components/MultiSelectList/helpers.ts +11 -11
  149. package/src/components/MultiSelectList/index.ts +3 -3
  150. package/src/components/MultiSelectList/types.ts +15 -15
  151. package/src/components/Notification/Notification.stories.tsx +46 -46
  152. package/src/components/Notification/Notification.styles.ts +50 -50
  153. package/src/components/Notification/Notification.tsx +78 -78
  154. package/src/components/Notification/index.ts +3 -3
  155. package/src/components/Notification/types.ts +1 -1
  156. package/src/components/NumberInput/NumberInput.stories.tsx +35 -35
  157. package/src/components/NumberInput/NumberInput.tsx +133 -133
  158. package/src/components/NumberInput/helpers.ts +86 -86
  159. package/src/components/PhoneInput/PhoneInput.stories.tsx +70 -70
  160. package/src/components/PhoneInput/PhoneInput.tsx +193 -193
  161. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.stories.tsx +21 -21
  162. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.styles.ts +100 -100
  163. package/src/components/PhoneInput/components/PhoneInputCountryList/PhoneInputCountryList.tsx +145 -145
  164. package/src/components/PhoneInput/components/PhoneInputCountryList/index.ts +2 -2
  165. package/src/components/PhoneInput/components/index.ts +1 -1
  166. package/src/components/PhoneInput/constants.ts +3 -3
  167. package/src/components/PhoneInput/index.ts +5 -5
  168. package/src/components/PhoneInput/phone-info.ts +2147 -2147
  169. package/src/components/RadioButton/RadioButton.stories.tsx +46 -46
  170. package/src/components/RadioButton/RadioButton.tsx +55 -55
  171. package/src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts +54 -54
  172. package/src/components/ScrollIntoViewIfNeeded/constants.ts +12 -12
  173. package/src/components/SearchInput/SearchInput.stories.tsx +23 -23
  174. package/src/components/SearchInput/SearchInput.styles.ts +50 -50
  175. package/src/components/SearchInput/SearchInput.tsx +51 -51
  176. package/src/components/Select/MultiSelect.stories.tsx +240 -240
  177. package/src/components/Select/Select.stories.tsx +235 -235
  178. package/src/components/Select/Select.tsx +574 -575
  179. package/src/components/Select/components/SelectList/SelectList.styles.ts +72 -72
  180. package/src/components/Select/components/SelectList/SelectList.tsx +158 -158
  181. package/src/components/Select/components/SelectList/index.ts +2 -2
  182. package/src/components/Select/components/SelectListItem/SelectListItem.styles.ts +14 -14
  183. package/src/components/Select/components/SelectListItem/SelectListItem.tsx +68 -68
  184. package/src/components/Select/components/SelectListItem/index.ts +1 -1
  185. package/src/components/Select/components/index.ts +2 -2
  186. package/src/components/Select/helpers.ts +26 -26
  187. package/src/components/Select/index.ts +4 -4
  188. package/src/components/SmartInput/SmartInput.stories.tsx +51 -51
  189. package/src/components/SmartInput/SmartInput.tsx +124 -124
  190. package/src/components/SmartInput/constants.ts +84 -84
  191. package/src/components/SmartInput/helpers.ts +13 -13
  192. package/src/components/SmartInput/index.ts +2 -2
  193. package/src/components/SmartInput/types.ts +11 -11
  194. package/src/components/Switch/Switch.stories.tsx +40 -40
  195. package/src/components/Switch/Switch.tsx +79 -79
  196. package/src/components/Switch/index.ts +3 -3
  197. package/src/components/Switch/types.ts +4 -4
  198. package/src/components/TextArea/TextArea.stories.tsx +35 -35
  199. package/src/components/TextArea/TextArea.tsx +174 -174
  200. package/src/components/TextWithInfo/TextWithInfo.stories.tsx +53 -53
  201. package/src/components/TextWithInfo/TextWithInfo.tsx +60 -60
  202. package/src/components/TextWithTooltip/TextWithTooltip.tsx +143 -143
  203. package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +41 -41
  204. package/src/components/ThemedPreloader/ThemedPreloader.tsx +47 -47
  205. package/src/components/ThemedPreloader/components/DefaultPreloader/DefaultPreloader.tsx +29 -29
  206. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.tsx +18 -18
  207. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx +25 -25
  208. package/src/components/ThemedPreloader/components/index.ts +3 -3
  209. package/src/components/ThemedPreloader/constants.ts +1 -1
  210. package/src/components/ThemedPreloader/index.ts +4 -4
  211. package/src/components/ThemedPreloader/types.ts +3 -3
  212. package/src/components/Toaster/Toaster.stories.tsx +30 -30
  213. package/src/components/Toaster/Toaster.tsx +108 -108
  214. package/src/components/Toaster/constants.ts +1 -1
  215. package/src/components/Toaster/index.ts +3 -3
  216. package/src/components/Toaster/types.ts +1 -1
  217. package/src/components/Tooltip/Tooltip.stories.tsx +19 -19
  218. package/src/components/Tooltip/Tooltip.styles.ts +45 -45
  219. package/src/components/Tooltip/Tooltip.tsx +35 -35
  220. package/src/components/Tooltip/index.ts +3 -3
  221. package/src/components/index.ts +1 -0
  222. package/src/helpers/deprecated.ts +23 -23
  223. package/src/helpers/index.ts +5 -4
  224. package/src/helpers/misc.ts +158 -158
  225. package/src/helpers/phone.ts +87 -87
  226. package/src/helpers/snippets.tsx +6 -6
  227. package/src/hooks/use-did-mount-effect.ts +18 -18
  228. package/src/hooks/use-dropdown.ts +82 -82
  229. package/src/hooks/use-on-click-outside.ts +77 -77
  230. package/src/hooks/use-theme.ts +32 -32
  231. package/src/hooks/use-tweak-styles.ts +13 -13
  232. package/src/theme.ts +149 -149
  233. package/src/types.ts +109 -108
@@ -1,34 +1,34 @@
1
- import { rgba } from '../../helpers';
2
- import { colors } from '../../theme';
3
- import { ComponentStyles } from '../../types';
4
-
5
- export const styles = {
6
- root: {
7
- width: 40,
8
- height: 40,
9
- maxWidth: '100%',
10
- maxHeight: '100%',
11
- padding: 5,
12
- color: colors.FONT_MEDIUM,
13
- border: 0,
14
- borderRadius: '50%',
15
- appearance: 'none',
16
- backgroundColor: 'transparent',
17
- cursor: 'pointer',
18
- transition: 'background-color 0.25s ease-in-out',
19
-
20
- '&:hover': {
21
- backgroundColor: rgba(colors.BORDER_MAIN, 0.5),
22
- },
23
-
24
- '&:focus': {
25
- backgroundColor: colors.GREY_FOCUS,
26
- },
27
-
28
- '&:active': {
29
- backgroundColor: rgba(colors.FONT_DISABLED, 0.5),
30
- },
31
- },
32
- };
33
-
34
- export type CloseButtonStyles = ComponentStyles<typeof styles>;
1
+ import { rgba } from '../../helpers';
2
+ import { colors } from '../../theme';
3
+ import { ComponentStyles } from '../../types';
4
+
5
+ export const styles = {
6
+ root: {
7
+ width: 40,
8
+ height: 40,
9
+ maxWidth: '100%',
10
+ maxHeight: '100%',
11
+ padding: 5,
12
+ color: colors.FONT_MEDIUM,
13
+ border: 0,
14
+ borderRadius: '50%',
15
+ appearance: 'none',
16
+ backgroundColor: 'transparent',
17
+ cursor: 'pointer',
18
+ transition: 'background-color 0.25s ease-in-out',
19
+
20
+ '&:hover': {
21
+ backgroundColor: rgba(colors.BORDER_MAIN, 0.5),
22
+ },
23
+
24
+ '&:focus': {
25
+ backgroundColor: colors.GREY_FOCUS,
26
+ },
27
+
28
+ '&:active': {
29
+ backgroundColor: rgba(colors.FONT_DISABLED, 0.5),
30
+ },
31
+ },
32
+ };
33
+
34
+ export type CloseButtonStyles = ComponentStyles<typeof styles>;
@@ -1,35 +1,35 @@
1
- import { FC } from 'react';
2
- import { addDataAttributes } from '../../helpers';
3
- import { useTheme } from '../../hooks';
4
- import { ICommonProps } from '../../types';
5
- import { Icon } from '../Icon';
6
- import { CloseButtonStyles, styles } from './CloseButton.styles';
7
-
8
- export interface ICloseButtonProps extends ICommonProps {
9
- tweakStyles?: CloseButtonStyles;
10
- testId?: string;
11
- onClose?: () => void;
12
- iconType?: 'close' | 'close-large' | 'close-window';
13
- }
14
-
15
- export const CloseButton: FC<ICloseButtonProps> = ({
16
- tweakStyles,
17
- testId,
18
- data,
19
- iconType = 'close',
20
- onClose,
21
- }) => {
22
- const { classes } = useTheme('CloseButton', styles, tweakStyles);
23
-
24
- return (
25
- <button
26
- type="button"
27
- className={classes.root}
28
- onClick={onClose}
29
- data-testid={testId}
30
- {...addDataAttributes(data)}
31
- >
32
- <Icon type={iconType} />
33
- </button>
34
- );
35
- };
1
+ import { FC } from 'react';
2
+ import { addDataAttributes } from '../../helpers';
3
+ import { useTheme } from '../../hooks';
4
+ import { ICommonProps } from '../../types';
5
+ import { Icon } from '../Icon';
6
+ import { CloseButtonStyles, styles } from './CloseButton.styles';
7
+
8
+ export interface ICloseButtonProps extends ICommonProps {
9
+ tweakStyles?: CloseButtonStyles;
10
+ testId?: string;
11
+ onClose?: () => void;
12
+ iconType?: 'close' | 'close-large' | 'close-window';
13
+ }
14
+
15
+ export const CloseButton: FC<ICloseButtonProps> = ({
16
+ tweakStyles,
17
+ testId,
18
+ data,
19
+ iconType = 'close',
20
+ onClose,
21
+ }) => {
22
+ const { classes } = useTheme('CloseButton', styles, tweakStyles);
23
+
24
+ return (
25
+ <button
26
+ type="button"
27
+ className={classes.root}
28
+ onClick={onClose}
29
+ data-testid={testId}
30
+ {...addDataAttributes(data)}
31
+ >
32
+ <Icon type={iconType} />
33
+ </button>
34
+ );
35
+ };
@@ -1,26 +1,26 @@
1
- import { FC, useContext } from 'react';
2
- import { useTheme, ThemeContext } from '../../hooks';
3
- import { styles } from './Colors.styles';
4
-
5
- // TODO: А зачем нужен то этот компонент кроме как ради сторис?????? мб его толкьо в сторис оформить?
6
-
7
- export const Colors: FC = () => {
8
- const { classes } = useTheme('Colors', styles);
9
- const { theme } = useContext(ThemeContext);
10
- const { colors = {} } = theme;
11
-
12
- return (
13
- <div className={classes.root}>
14
- {Object.entries(colors as Record<string, string>).map(([colorName, color]) => {
15
- const name = colorName.split('_').join(' ').toLowerCase();
16
- return (
17
- <div key={colorName} className={classes.colorCard}>
18
- <div className={classes.color} style={{ backgroundColor: color }} />
19
- <div className={classes.colorName}>{`${name[0].toUpperCase()}${name.slice(1)}`}</div>
20
- <div className={classes.hex}>{color}</div>
21
- </div>
22
- );
23
- })}
24
- </div>
25
- );
26
- };
1
+ import { FC, useContext } from 'react';
2
+ import { useTheme, ThemeContext } from '../../hooks';
3
+ import { styles } from './Colors.styles';
4
+
5
+ // TODO: А зачем нужен то этот компонент кроме как ради сторис?????? мб его толкьо в сторис оформить?
6
+
7
+ export const Colors: FC = () => {
8
+ const { classes } = useTheme('Colors', styles);
9
+ const { theme } = useContext(ThemeContext);
10
+ const { colors = {} } = theme;
11
+
12
+ return (
13
+ <div className={classes.root}>
14
+ {Object.entries(colors as Record<string, string>).map(([colorName, color]) => {
15
+ const name = colorName.split('_').join(' ').toLowerCase();
16
+ return (
17
+ <div key={colorName} className={classes.colorCard}>
18
+ <div className={classes.color} style={{ backgroundColor: color }} />
19
+ <div className={classes.colorName}>{`${name[0].toUpperCase()}${name.slice(1)}`}</div>
20
+ <div className={classes.hex}>{color}</div>
21
+ </div>
22
+ );
23
+ })}
24
+ </div>
25
+ );
26
+ };
@@ -1,15 +1,15 @@
1
- import { FC } from 'react';
2
- import { addDataAttributes } from '../../helpers';
3
- import { useTheme } from '../../hooks';
4
- import { ICommonProps } from '../../types';
5
- import { CssBaselineStyles, styles } from './CssBaseline.styles';
6
-
7
- export interface ICssBaselineProps extends ICommonProps {
8
- tweakStyles?: CssBaselineStyles;
9
- }
10
-
11
- export const CssBaseline: FC<ICssBaselineProps> = ({ data, tweakStyles }) => {
12
- const { classes } = useTheme('CssBaseline', styles, tweakStyles);
13
-
14
- return <div className={classes.root} {...addDataAttributes(data)} />;
15
- };
1
+ import { FC } from 'react';
2
+ import { addDataAttributes } from '../../helpers';
3
+ import { useTheme } from '../../hooks';
4
+ import { ICommonProps } from '../../types';
5
+ import { CssBaselineStyles, styles } from './CssBaseline.styles';
6
+
7
+ export interface ICssBaselineProps extends ICommonProps {
8
+ tweakStyles?: CssBaselineStyles;
9
+ }
10
+
11
+ export const CssBaseline: FC<ICssBaselineProps> = ({ data, tweakStyles }) => {
12
+ const { classes } = useTheme('CssBaseline', styles, tweakStyles);
13
+
14
+ return <div className={classes.root} {...addDataAttributes(data)} />;
15
+ };
@@ -1,61 +1,61 @@
1
- import { useEffect, useState } from 'react';
2
- import { format, isValid } from 'date-fns';
3
- import { ComponentStory } from '@storybook/react';
4
- import { DateInput } from './DateInput';
5
-
6
- export default {
7
- title: 'Inputs/DateInput',
8
- component: DateInput,
9
- };
10
-
11
- const Template: ComponentStory<typeof DateInput> = ({ date, startDate, endDate, ...args }) => {
12
- const [value, setValue] = useState(date);
13
-
14
- const startDateValue = isValid(startDate)
15
- ? format(new Date(startDate as string), 'dd.MM.yyyy')
16
- : undefined;
17
-
18
- const endDateValue = isValid(endDate)
19
- ? format(new Date(endDate as string), 'dd.MM.yyyy')
20
- : undefined;
21
-
22
- useEffect(() => {
23
- setValue(date);
24
- }, [date]);
25
-
26
- return (
27
- <DateInput
28
- {...args}
29
- date={value}
30
- startDate={startDateValue}
31
- endDate={endDateValue}
32
- onClick={(e) => console.log('Click', e)}
33
- onChange={(_, newValue) => setValue(newValue)}
34
- />
35
- );
36
- };
37
-
38
- export const Default = Template.bind({});
39
-
40
- Default.args = {
41
- date: '23.01.2023',
42
- startDate: undefined,
43
- endDate: undefined,
44
- isRange: false,
45
- };
46
-
47
- Default.parameters = {
48
- controls: {
49
- exclude: [
50
- 'data',
51
- 'testId',
52
- 'tabIndex',
53
- 'onChange',
54
- 'onFocus',
55
- 'onBlur',
56
- 'onPaste',
57
- 'onIconClick',
58
- 'onKeyDown',
59
- ],
60
- },
61
- };
1
+ import { useEffect, useState } from 'react';
2
+ import { format, isValid } from 'date-fns';
3
+ import { ComponentStory } from '@storybook/react';
4
+ import { DateInput } from './DateInput';
5
+
6
+ export default {
7
+ title: 'Inputs/DateInput',
8
+ component: DateInput,
9
+ };
10
+
11
+ const Template: ComponentStory<typeof DateInput> = ({ date, startDate, endDate, ...args }) => {
12
+ const [value, setValue] = useState(date);
13
+
14
+ const startDateValue = isValid(startDate)
15
+ ? format(new Date(startDate as string), 'dd.MM.yyyy')
16
+ : undefined;
17
+
18
+ const endDateValue = isValid(endDate)
19
+ ? format(new Date(endDate as string), 'dd.MM.yyyy')
20
+ : undefined;
21
+
22
+ useEffect(() => {
23
+ setValue(date);
24
+ }, [date]);
25
+
26
+ return (
27
+ <DateInput
28
+ {...args}
29
+ date={value}
30
+ startDate={startDateValue}
31
+ endDate={endDateValue}
32
+ onClick={(e) => console.log('Click', e)}
33
+ onChange={(_, newValue) => setValue(newValue)}
34
+ />
35
+ );
36
+ };
37
+
38
+ export const Default = Template.bind({});
39
+
40
+ Default.args = {
41
+ date: '23.01.2023',
42
+ startDate: undefined,
43
+ endDate: undefined,
44
+ isRange: false,
45
+ };
46
+
47
+ Default.parameters = {
48
+ controls: {
49
+ exclude: [
50
+ 'data',
51
+ 'testId',
52
+ 'tabIndex',
53
+ 'onChange',
54
+ 'onFocus',
55
+ 'onBlur',
56
+ 'onPaste',
57
+ 'onIconClick',
58
+ 'onKeyDown',
59
+ ],
60
+ },
61
+ };
@@ -1,82 +1,82 @@
1
- import { FormEvent, MouseEvent, forwardRef, ChangeEvent } from 'react';
2
- import clsx from 'clsx';
3
- import { addDataAttributes } from '../../helpers';
4
- import { useTheme, useTweakStyles } from '../../hooks';
5
- import { IInputProps, Input } from '../Input';
6
- import { EMPTY_DATE_INPUT_VALUE, EMPTY_DATE_RANGE_INPUT_VALUE } from './constants';
7
- import { DateInputStyles, styles } from './DateInput.styles';
8
-
9
- export interface IDateInputProps
10
- extends Omit<IInputProps, 'value' | 'beforeMaskedStateChange' | 'onChange'> {
11
- date?: string;
12
- startDate?: string;
13
- endDate?: string;
14
- className?: string;
15
- isRange?: boolean;
16
- tweakStyles?: DateInputStyles;
17
- onClick?(event: MouseEvent<HTMLDivElement>): void;
18
- // react-datepicker ожидает event первым аргументом
19
- onChange?(event: FormEvent<HTMLInputElement>, value: string): void;
20
- }
21
-
22
- export const DateInput = forwardRef<HTMLInputElement, IDateInputProps>(
23
- (
24
- {
25
- date,
26
- startDate = '',
27
- endDate = '',
28
- mask,
29
- className,
30
- placeholder,
31
- data,
32
- isRange,
33
- tweakStyles,
34
- onClick,
35
- onChange,
36
- ...inputProps
37
- },
38
- ref,
39
- ) => {
40
- const { classes, componentStyles } = useTheme('DateInput', styles, tweakStyles);
41
-
42
- const tweakInputStyles = useTweakStyles(componentStyles, tweakStyles, 'tweakInput');
43
-
44
- const beforeMaskedStateChange: IInputProps['beforeMaskedStateChange'] = ({ nextState }) => {
45
- // Если в инпуте отсутствует введенное значение, то выставляем
46
- // пустую строку для корректной работы react-datepicker
47
- if (
48
- nextState.value === EMPTY_DATE_INPUT_VALUE ||
49
- nextState.value === EMPTY_DATE_RANGE_INPUT_VALUE
50
- ) {
51
- return { value: '', selection: { start: 0, end: 0 } };
52
- }
53
- return nextState;
54
- };
55
-
56
- const handleChange: IInputProps['onChange'] = (value, event) => {
57
- // Событие click срабатывает только при нажатии на кнопку очистки
58
- if (event.type === 'click') {
59
- // react-datepicker ожидает пустую строку в event.target.value
60
- (event as ChangeEvent<HTMLInputElement>).target.value = '';
61
- }
62
- onChange?.(event, value);
63
- };
64
-
65
- return (
66
- <div className={clsx(classes.root, className)} onClick={onClick} {...addDataAttributes(data)}>
67
- <Input
68
- {...inputProps}
69
- ref={ref}
70
- value={isRange ? `${startDate}${endDate}` : date}
71
- mask={mask ?? (isRange ? '99.99.9999 - 99.99.9999' : '99.99.9999')}
72
- placeholder={
73
- placeholder ?? (isRange ? EMPTY_DATE_RANGE_INPUT_VALUE : EMPTY_DATE_INPUT_VALUE)
74
- }
75
- tweakStyles={tweakInputStyles}
76
- onChange={handleChange}
77
- beforeMaskedStateChange={beforeMaskedStateChange}
78
- />
79
- </div>
80
- );
81
- },
82
- );
1
+ import { FormEvent, MouseEvent, forwardRef, ChangeEvent } from 'react';
2
+ import clsx from 'clsx';
3
+ import { addDataAttributes } from '../../helpers';
4
+ import { useTheme, useTweakStyles } from '../../hooks';
5
+ import { IInputProps, Input } from '../Input';
6
+ import { EMPTY_DATE_INPUT_VALUE, EMPTY_DATE_RANGE_INPUT_VALUE } from './constants';
7
+ import { DateInputStyles, styles } from './DateInput.styles';
8
+
9
+ export interface IDateInputProps
10
+ extends Omit<IInputProps, 'value' | 'beforeMaskedStateChange' | 'onChange'> {
11
+ date?: string;
12
+ startDate?: string;
13
+ endDate?: string;
14
+ className?: string;
15
+ isRange?: boolean;
16
+ tweakStyles?: DateInputStyles;
17
+ onClick?(event: MouseEvent<HTMLDivElement>): void;
18
+ // react-datepicker ожидает event первым аргументом
19
+ onChange?(event: FormEvent<HTMLInputElement>, value: string): void;
20
+ }
21
+
22
+ export const DateInput = forwardRef<HTMLInputElement, IDateInputProps>(
23
+ (
24
+ {
25
+ date,
26
+ startDate = '',
27
+ endDate = '',
28
+ mask,
29
+ className,
30
+ placeholder,
31
+ data,
32
+ isRange,
33
+ tweakStyles,
34
+ onClick,
35
+ onChange,
36
+ ...inputProps
37
+ },
38
+ ref,
39
+ ) => {
40
+ const { classes, componentStyles } = useTheme('DateInput', styles, tweakStyles);
41
+
42
+ const tweakInputStyles = useTweakStyles(componentStyles, tweakStyles, 'tweakInput');
43
+
44
+ const beforeMaskedStateChange: IInputProps['beforeMaskedStateChange'] = ({ nextState }) => {
45
+ // Если в инпуте отсутствует введенное значение, то выставляем
46
+ // пустую строку для корректной работы react-datepicker
47
+ if (
48
+ nextState.value === EMPTY_DATE_INPUT_VALUE ||
49
+ nextState.value === EMPTY_DATE_RANGE_INPUT_VALUE
50
+ ) {
51
+ return { value: '', selection: { start: 0, end: 0 } };
52
+ }
53
+ return nextState;
54
+ };
55
+
56
+ const handleChange: IInputProps['onChange'] = (value, event) => {
57
+ // Событие click срабатывает только при нажатии на кнопку очистки
58
+ if (event.type === 'click') {
59
+ // react-datepicker ожидает пустую строку в event.target.value
60
+ (event as ChangeEvent<HTMLInputElement>).target.value = '';
61
+ }
62
+ onChange?.(event, value);
63
+ };
64
+
65
+ return (
66
+ <div className={clsx(classes.root, className)} onClick={onClick} {...addDataAttributes(data)}>
67
+ <Input
68
+ {...inputProps}
69
+ ref={ref}
70
+ value={isRange ? `${startDate}${endDate}` : date}
71
+ mask={mask ?? (isRange ? '99.99.9999 - 99.99.9999' : '99.99.9999')}
72
+ placeholder={
73
+ placeholder ?? (isRange ? EMPTY_DATE_RANGE_INPUT_VALUE : EMPTY_DATE_INPUT_VALUE)
74
+ }
75
+ tweakStyles={tweakInputStyles}
76
+ onChange={handleChange}
77
+ beforeMaskedStateChange={beforeMaskedStateChange}
78
+ />
79
+ </div>
80
+ );
81
+ },
82
+ );