@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,84 +1,84 @@
1
- import { ComponentStyles } from '../../../../types';
2
-
3
- const SELECT_PADDING_LEFT = 12;
4
- const SELECT_PADDING_RIGHT = 24;
5
-
6
- export const styles = {
7
- btn: {
8
- width: 36,
9
- height: 36,
10
- padding: 8,
11
- boxSizing: 'border-box',
12
- border: 'none',
13
- outline: 'none',
14
-
15
- cursor: 'pointer',
16
- marginLeft: 8,
17
- },
18
-
19
- select: {
20
- height: 35,
21
- fontSize: 16,
22
- position: 'relative',
23
- },
24
-
25
- selectValue: {
26
- fontSize: 16,
27
- fontWeight: 'bold',
28
- color: 'transparent',
29
- pointerEvents: 'none',
30
- paddingLeft: SELECT_PADDING_LEFT,
31
- paddingRight: SELECT_PADDING_RIGHT,
32
- },
33
-
34
- selectControl: {
35
- position: 'absolute',
36
- top: 0,
37
- left: 0,
38
- width: '100%',
39
- height: '100%',
40
- },
41
-
42
- header: {
43
- margin: 6,
44
- display: 'flex',
45
- alignItems: 'center',
46
- },
47
-
48
- buttons: {
49
- flexShrink: 0,
50
- marginLeft: 'auto',
51
- },
52
-
53
- tweakSelect: {
54
- list: {
55
- cell: {
56
- fontSize: 14,
57
- minHeight: 35,
58
- },
59
- },
60
-
61
- arrow: {
62
- right: 0,
63
- top: 9,
64
- width: 16,
65
- height: 16,
66
- },
67
-
68
- tweakInput: {
69
- inputWrapper: {
70
- height: 35,
71
- border: 'none',
72
- },
73
-
74
- input: {
75
- fontSize: 16,
76
- fontWeight: 'bold',
77
- paddingRight: SELECT_PADDING_RIGHT - 8,
78
- paddingLeft: SELECT_PADDING_LEFT,
79
- },
80
- },
81
- },
82
- };
83
-
84
- export type DatePickerHeaderStyles = ComponentStyles<typeof styles>;
1
+ import { ComponentStyles } from '../../../../types';
2
+
3
+ const SELECT_PADDING_LEFT = 12;
4
+ const SELECT_PADDING_RIGHT = 24;
5
+
6
+ export const styles = {
7
+ btn: {
8
+ width: 36,
9
+ height: 36,
10
+ padding: 8,
11
+ boxSizing: 'border-box',
12
+ border: 'none',
13
+ outline: 'none',
14
+
15
+ cursor: 'pointer',
16
+ marginLeft: 8,
17
+ },
18
+
19
+ select: {
20
+ height: 35,
21
+ fontSize: 16,
22
+ position: 'relative',
23
+ },
24
+
25
+ selectValue: {
26
+ fontSize: 16,
27
+ fontWeight: 'bold',
28
+ color: 'transparent',
29
+ pointerEvents: 'none',
30
+ paddingLeft: SELECT_PADDING_LEFT,
31
+ paddingRight: SELECT_PADDING_RIGHT,
32
+ },
33
+
34
+ selectControl: {
35
+ position: 'absolute',
36
+ top: 0,
37
+ left: 0,
38
+ width: '100%',
39
+ height: '100%',
40
+ },
41
+
42
+ header: {
43
+ margin: 6,
44
+ display: 'flex',
45
+ alignItems: 'center',
46
+ },
47
+
48
+ buttons: {
49
+ flexShrink: 0,
50
+ marginLeft: 'auto',
51
+ },
52
+
53
+ tweakSelect: {
54
+ list: {
55
+ cell: {
56
+ fontSize: 14,
57
+ minHeight: 35,
58
+ },
59
+ },
60
+
61
+ arrow: {
62
+ right: 0,
63
+ top: 9,
64
+ width: 16,
65
+ height: 16,
66
+ },
67
+
68
+ tweakInput: {
69
+ inputWrapper: {
70
+ height: 35,
71
+ border: 'none',
72
+ },
73
+
74
+ input: {
75
+ fontSize: 16,
76
+ fontWeight: 'bold',
77
+ paddingRight: SELECT_PADDING_RIGHT - 8,
78
+ paddingLeft: SELECT_PADDING_LEFT,
79
+ },
80
+ },
81
+ },
82
+ };
83
+
84
+ export type DatePickerHeaderStyles = ComponentStyles<typeof styles>;
@@ -1,79 +1,79 @@
1
- import { FC, useMemo } from 'react';
2
- import { ReactDatePickerCustomHeaderProps as BaseProps } from 'react-datepicker';
3
- import { getYear, getMonth } from 'date-fns';
4
- import { useTheme } from '../../../../hooks';
5
- import { Icon } from '../../../Icon';
6
- import { Select } from '../../../Select';
7
- import { DatePickerHeaderStyles, styles } from './DatePickerHeader.styles';
8
-
9
- export interface IDatePickerHeaderProps extends BaseProps {
10
- months?: string[];
11
- tweakStyles?: DatePickerHeaderStyles;
12
- }
13
-
14
- export const DatePickerHeader: FC<IDatePickerHeaderProps> = ({
15
- date,
16
- months = [],
17
- prevMonthButtonDisabled,
18
- nextMonthButtonDisabled,
19
- changeYear,
20
- changeMonth,
21
- decreaseMonth,
22
- increaseMonth,
23
- }) => {
24
- const { classes, componentStyles } = useTheme('DatePickerHeader', styles);
25
-
26
- const years = useMemo(
27
- () => Array.from(Array(41)).map((_, i) => getYear(new Date()) - 30 + i),
28
- [],
29
- );
30
-
31
- return (
32
- <div className={classes.header}>
33
- <div className={classes.select}>
34
- <div className={classes.selectValue}>{months[getMonth(date)]}</div>
35
- <div className={classes.selectControl}>
36
- <Select
37
- value={months[getMonth(date)]}
38
- options={months}
39
- dropdownIcon="chevron-down-small"
40
- tweakStyles={componentStyles.tweakSelect}
41
- onChange={(value) => changeMonth(months.indexOf(value as string))}
42
- />
43
- </div>
44
- </div>
45
- <div className={classes.select}>
46
- <div className={classes.selectValue}>{getYear(date)}</div>
47
- <div className={classes.selectControl}>
48
- <Select
49
- value={getYear(date)}
50
- options={years}
51
- dropdownIcon="chevron-down-small"
52
- tweakStyles={componentStyles.tweakSelect}
53
- onChange={(value) => changeYear(value as number)}
54
- />
55
- </div>
56
- </div>
57
-
58
- <div className={classes.buttons}>
59
- <button
60
- type="button"
61
- className={classes.btn}
62
- disabled={prevMonthButtonDisabled}
63
- onClick={decreaseMonth}
64
- >
65
- <Icon type="chevron-left" />
66
- </button>
67
-
68
- <button
69
- type="button"
70
- className={classes.btn}
71
- disabled={nextMonthButtonDisabled}
72
- onClick={increaseMonth}
73
- >
74
- <Icon type="chevron-right" />
75
- </button>
76
- </div>
77
- </div>
78
- );
79
- };
1
+ import { FC, useMemo } from 'react';
2
+ import { ReactDatePickerCustomHeaderProps as BaseProps } from 'react-datepicker';
3
+ import { getYear, getMonth } from 'date-fns';
4
+ import { useTheme } from '../../../../hooks';
5
+ import { Icon } from '../../../Icon';
6
+ import { Select } from '../../../Select';
7
+ import { DatePickerHeaderStyles, styles } from './DatePickerHeader.styles';
8
+
9
+ export interface IDatePickerHeaderProps extends BaseProps {
10
+ months?: string[];
11
+ tweakStyles?: DatePickerHeaderStyles;
12
+ }
13
+
14
+ export const DatePickerHeader: FC<IDatePickerHeaderProps> = ({
15
+ date,
16
+ months = [],
17
+ prevMonthButtonDisabled,
18
+ nextMonthButtonDisabled,
19
+ changeYear,
20
+ changeMonth,
21
+ decreaseMonth,
22
+ increaseMonth,
23
+ }) => {
24
+ const { classes, componentStyles } = useTheme('DatePickerHeader', styles);
25
+
26
+ const years = useMemo(
27
+ () => Array.from(Array(41)).map((_, i) => getYear(new Date()) - 30 + i),
28
+ [],
29
+ );
30
+
31
+ return (
32
+ <div className={classes.header}>
33
+ <div className={classes.select}>
34
+ <div className={classes.selectValue}>{months[getMonth(date)]}</div>
35
+ <div className={classes.selectControl}>
36
+ <Select
37
+ value={months[getMonth(date)]}
38
+ options={months}
39
+ dropdownIcon="chevron-down-small"
40
+ tweakStyles={componentStyles.tweakSelect}
41
+ onChange={(value) => changeMonth(months.indexOf(value as string))}
42
+ />
43
+ </div>
44
+ </div>
45
+ <div className={classes.select}>
46
+ <div className={classes.selectValue}>{getYear(date)}</div>
47
+ <div className={classes.selectControl}>
48
+ <Select
49
+ value={getYear(date)}
50
+ options={years}
51
+ dropdownIcon="chevron-down-small"
52
+ tweakStyles={componentStyles.tweakSelect}
53
+ onChange={(value) => changeYear(value as number)}
54
+ />
55
+ </div>
56
+ </div>
57
+
58
+ <div className={classes.buttons}>
59
+ <button
60
+ type="button"
61
+ className={classes.btn}
62
+ disabled={prevMonthButtonDisabled}
63
+ onClick={decreaseMonth}
64
+ >
65
+ <Icon type="chevron-left" />
66
+ </button>
67
+
68
+ <button
69
+ type="button"
70
+ className={classes.btn}
71
+ disabled={nextMonthButtonDisabled}
72
+ onClick={increaseMonth}
73
+ >
74
+ <Icon type="chevron-right" />
75
+ </button>
76
+ </div>
77
+ </div>
78
+ );
79
+ };
@@ -1,2 +1,2 @@
1
- export * from './DatePickerHeader';
2
- export type { DatePickerHeaderStyles } from './DatePickerHeader.styles';
1
+ export * from './DatePickerHeader';
2
+ export type { DatePickerHeaderStyles } from './DatePickerHeader.styles';
@@ -1,6 +1,6 @@
1
- import { FC, ReactElement, ReactNode } from 'react';
2
- import { Portal } from 'react-overlays';
3
-
4
- export const PopperContainer: FC<{ children: ReactNode }> = ({ children }) => (
5
- <Portal container={document.body}>{children as ReactElement}</Portal>
6
- );
1
+ import { FC, ReactElement, ReactNode } from 'react';
2
+ import { Portal } from 'react-overlays';
3
+
4
+ export const PopperContainer: FC<{ children: ReactNode }> = ({ children }) => (
5
+ <Portal container={document.body}>{children as ReactElement}</Portal>
6
+ );
@@ -1 +1 @@
1
- export * from './PopperContainer';
1
+ export * from './PopperContainer';
@@ -1,2 +1,2 @@
1
- export * from './DatePickerHeader';
2
- export * from './PopperContainer';
1
+ export * from './DatePickerHeader';
2
+ export * from './PopperContainer';
@@ -1,6 +1,6 @@
1
- import ReactDatePicker from 'react-datepicker';
2
-
3
- export const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy';
4
-
5
- export const DatePickerComponent =
6
- (ReactDatePicker as unknown as { default: typeof ReactDatePicker }).default ?? ReactDatePicker;
1
+ import ReactDatePicker from 'react-datepicker';
2
+
3
+ export const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy';
4
+
5
+ export const DatePickerComponent =
6
+ (ReactDatePicker as unknown as { default: typeof ReactDatePicker }).default ?? ReactDatePicker;
@@ -1,23 +1,23 @@
1
- import { parse, format, isSameDay } from 'date-fns';
2
- import {
3
- isEmpty,
4
- isNotEmpty,
5
- isStringNotEmpty,
6
- } from '@true-engineering/true-react-platform-helpers';
7
- import { EMPTY_DATE_INPUT_VALUE } from '../DateInput';
8
-
9
- export const getDateFormatter =
10
- (dateFormat: string) =>
11
- (date?: Date | null): string =>
12
- isNotEmpty(date) ? format(date, dateFormat) : '';
13
-
14
- export const getDateValueParser =
15
- (dateFormat: string) =>
16
- (value: string): Date | null => {
17
- const inputValue = value === EMPTY_DATE_INPUT_VALUE ? '' : value;
18
- return isStringNotEmpty(inputValue) ? parse(value, dateFormat, new Date()) : null;
19
- };
20
-
21
- export const areDatesEquals = (date1?: Date | null, date2?: Date | null): boolean =>
22
- (isEmpty(date1) && isEmpty(date2)) ||
23
- (isNotEmpty(date1) && isNotEmpty(date2) && isSameDay(date1, date2));
1
+ import { parse, format, isSameDay } from 'date-fns';
2
+ import {
3
+ isEmpty,
4
+ isNotEmpty,
5
+ isStringNotEmpty,
6
+ } from '@true-engineering/true-react-platform-helpers';
7
+ import { EMPTY_DATE_INPUT_VALUE } from '../DateInput';
8
+
9
+ export const getDateFormatter =
10
+ (dateFormat: string) =>
11
+ (date?: Date | null): string =>
12
+ isNotEmpty(date) ? format(date, dateFormat) : '';
13
+
14
+ export const getDateValueParser =
15
+ (dateFormat: string) =>
16
+ (value: string): Date | null => {
17
+ const inputValue = value === EMPTY_DATE_INPUT_VALUE ? '' : value;
18
+ return isStringNotEmpty(inputValue) ? parse(value, dateFormat, new Date()) : null;
19
+ };
20
+
21
+ export const areDatesEquals = (date1?: Date | null, date2?: Date | null): boolean =>
22
+ (isEmpty(date1) && isEmpty(date2)) ||
23
+ (isNotEmpty(date1) && isNotEmpty(date2) && isSameDay(date1, date2));
@@ -1,4 +1,4 @@
1
- export * from './DatePicker';
2
- export * from './types';
3
- export type { DatePickerStyles } from './DatePicker.styles';
4
- export type { DatePickerHeaderStyles } from './components';
1
+ export * from './DatePicker';
2
+ export * from './types';
3
+ export type { DatePickerStyles } from './DatePicker.styles';
4
+ export type { DatePickerHeaderStyles } from './components';
@@ -1,45 +1,45 @@
1
- import { ReactDatePickerProps } from 'react-datepicker';
2
- import { IDateInputProps } from '../DateInput';
3
-
4
- export type IRange = [Date | null, Date | null] | null;
5
-
6
- export type IDatePickerBaseProps = Pick<
7
- ReactDatePickerProps,
8
- | 'startDate'
9
- | 'endDate'
10
- | 'minDate'
11
- | 'maxDate'
12
- | 'allowSameDay'
13
- | 'disabledKeyboardNavigation'
14
- | 'monthsShown'
15
- | 'popperModifiers'
16
- | 'popperPlacement'
17
- | 'filterDate'
18
- | 'dayClassName'
19
- | 'calendarContainer'
20
- | 'onCalendarOpen'
21
- | 'onCalendarClose'
22
- | 'onYearChange'
23
- | 'onMonthChange'
24
- | 'focusSelectedMonth'
25
- | 'shouldCloseOnSelect'
26
- | 'showPreviousMonths'
27
- | 'todayButton'
28
- | 'renderCustomHeader'
29
- | 'customInputRef'
30
- | 'preventOpenOnFocus'
31
- | 'strictParsing'
32
- > &
33
- Omit<
34
- IDateInputProps,
35
- | 'date'
36
- | 'startDate'
37
- | 'endDate'
38
- | 'isRange'
39
- | 'isActive'
40
- | 'iconType'
41
- | 'maxLength'
42
- | 'onChange'
43
- | 'onClick'
44
- | 'tweakStyles'
45
- >;
1
+ import { ReactDatePickerProps } from 'react-datepicker';
2
+ import { IDateInputProps } from '../DateInput';
3
+
4
+ export type IRange = [Date | null, Date | null] | null;
5
+
6
+ export type IDatePickerBaseProps = Pick<
7
+ ReactDatePickerProps,
8
+ | 'startDate'
9
+ | 'endDate'
10
+ | 'minDate'
11
+ | 'maxDate'
12
+ | 'allowSameDay'
13
+ | 'disabledKeyboardNavigation'
14
+ | 'monthsShown'
15
+ | 'popperModifiers'
16
+ | 'popperPlacement'
17
+ | 'filterDate'
18
+ | 'dayClassName'
19
+ | 'calendarContainer'
20
+ | 'onCalendarOpen'
21
+ | 'onCalendarClose'
22
+ | 'onYearChange'
23
+ | 'onMonthChange'
24
+ | 'focusSelectedMonth'
25
+ | 'shouldCloseOnSelect'
26
+ | 'showPreviousMonths'
27
+ | 'todayButton'
28
+ | 'renderCustomHeader'
29
+ | 'customInputRef'
30
+ | 'preventOpenOnFocus'
31
+ | 'strictParsing'
32
+ > &
33
+ Omit<
34
+ IDateInputProps,
35
+ | 'date'
36
+ | 'startDate'
37
+ | 'endDate'
38
+ | 'isRange'
39
+ | 'isActive'
40
+ | 'iconType'
41
+ | 'maxLength'
42
+ | 'onChange'
43
+ | 'onClick'
44
+ | 'tweakStyles'
45
+ >;
@@ -1,27 +1,27 @@
1
- import { ComponentStory } from '@storybook/react';
2
- import { Description } from './Description';
3
-
4
- export default {
5
- title: 'Description',
6
- component: Description,
7
- argTypes: {
8
- truncateIndex: {
9
- control: { type: 'range', min: 20, max: 600, step: 10 },
10
- },
11
- },
12
- };
13
-
14
- const lorem =
15
- 'Lorem ipsum dolor, sit amet consectetur adipisicing. Alias necessitatibus quidem nobis molestiae dolor sed at, voluptatum nulla qui enim maiores consectetur dolorum atque odit id ratione pariatur ut nihil. http://google.com';
16
-
17
- const Template: ComponentStory<typeof Description> = (args) => <Description {...args} />;
18
-
19
- export const Default = Template.bind({});
20
-
21
- Default.args = {
22
- text: lorem,
23
- moreTitle: 'подробнее',
24
- lessTitle: 'скрыть',
25
- truncateIndex: 150,
26
- isAlwaysOpen: false,
27
- };
1
+ import { ComponentStory } from '@storybook/react';
2
+ import { Description } from './Description';
3
+
4
+ export default {
5
+ title: 'Description',
6
+ component: Description,
7
+ argTypes: {
8
+ truncateIndex: {
9
+ control: { type: 'range', min: 20, max: 600, step: 10 },
10
+ },
11
+ },
12
+ };
13
+
14
+ const lorem =
15
+ 'Lorem ipsum dolor, sit amet consectetur adipisicing. Alias necessitatibus quidem nobis molestiae dolor sed at, voluptatum nulla qui enim maiores consectetur dolorum atque odit id ratione pariatur ut nihil. http://google.com';
16
+
17
+ const Template: ComponentStory<typeof Description> = (args) => <Description {...args} />;
18
+
19
+ export const Default = Template.bind({});
20
+
21
+ Default.args = {
22
+ text: lorem,
23
+ moreTitle: 'подробнее',
24
+ lessTitle: 'скрыть',
25
+ truncateIndex: 150,
26
+ isAlwaysOpen: false,
27
+ };