@true-engineering/true-react-common-ui-kit 1.12.0 → 2.0.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 (266) hide show
  1. package/LICENSE +201 -201
  2. package/dist/components/Button/Button.d.ts +2 -2
  3. package/dist/components/DateInput/DateInput.d.ts +8 -8
  4. package/dist/components/DateInput/DateInput.styles.d.ts +2 -2
  5. package/dist/components/DateInput/constants.d.ts +2 -0
  6. package/dist/components/DateInput/index.d.ts +1 -0
  7. package/dist/components/DatePicker/DatePicker.d.ts +16 -24
  8. package/dist/components/DatePicker/DatePicker.styles.d.ts +12 -24
  9. package/dist/components/DatePicker/DatePickerHeader/DatePickerHeader.d.ts +3 -9
  10. package/dist/components/DatePicker/DatePickerHeader/index.d.ts +1 -0
  11. package/dist/components/DatePicker/constants.d.ts +1 -0
  12. package/dist/components/DatePicker/helpers.d.ts +3 -0
  13. package/dist/components/DatePicker/index.d.ts +1 -2
  14. package/dist/components/DatePicker/types.d.ts +4 -0
  15. package/dist/components/FiltersPane/FilterWithDates/FilterWithDates.d.ts +1 -1
  16. package/dist/components/Flag/augment.d.ts +1 -1
  17. package/dist/components/Icon/complexIcons/augment.d.ts +1 -1
  18. package/dist/helpers/utils.d.ts +2 -1
  19. package/dist/style.css +125 -50
  20. package/dist/true-react-common-ui-kit.js +392 -427
  21. package/dist/true-react-common-ui-kit.js.map +1 -1
  22. package/dist/true-react-common-ui-kit.umd.cjs +392 -427
  23. package/dist/true-react-common-ui-kit.umd.cjs.map +1 -1
  24. package/dist/types.d.ts +1 -1
  25. package/dist/vite-env.d.ts +1 -1
  26. package/package.json +91 -91
  27. package/src/components/AccountInfo/AccountInfo.stories.tsx +35 -35
  28. package/src/components/AccountInfo/AccountInfo.styles.ts +55 -55
  29. package/src/components/AccountInfo/AccountInfo.tsx +106 -106
  30. package/src/components/AccountInfo/index.ts +2 -2
  31. package/src/components/AddButton/AddButton.stories.tsx +21 -21
  32. package/src/components/AddButton/AddButton.styles.ts +34 -34
  33. package/src/components/AddButton/AddButton.tsx +49 -49
  34. package/src/components/AddButton/index.ts +2 -2
  35. package/src/components/Button/Button.stories.tsx +61 -61
  36. package/src/components/Button/Button.styles.ts +196 -196
  37. package/src/components/Button/Button.tsx +207 -207
  38. package/src/components/Button/index.ts +2 -2
  39. package/src/components/Checkbox/Checkbox.stories.tsx +35 -35
  40. package/src/components/Checkbox/Checkbox.styles.ts +62 -62
  41. package/src/components/Checkbox/Checkbox.tsx +106 -106
  42. package/src/components/Checkbox/index.ts +2 -2
  43. package/src/components/CloseButton/CloseButton.styles.ts +34 -34
  44. package/src/components/CloseButton/CloseButton.tsx +37 -37
  45. package/src/components/CloseButton/index.ts +2 -2
  46. package/src/components/Colors/Colors.stories.tsx +7 -7
  47. package/src/components/Colors/Colors.styles.ts +38 -38
  48. package/src/components/Colors/Colors.tsx +34 -34
  49. package/src/components/Colors/index.ts +2 -2
  50. package/src/components/CssBaseline/CssBaseline.styles.ts +15 -15
  51. package/src/components/CssBaseline/CssBaseline.tsx +17 -17
  52. package/src/components/CssBaseline/index.ts +2 -2
  53. package/src/components/DateInput/DateInput.stories.tsx +67 -63
  54. package/src/components/DateInput/DateInput.styles.ts +14 -14
  55. package/src/components/DateInput/DateInput.tsx +101 -60
  56. package/src/components/DateInput/constants.ts +2 -0
  57. package/src/components/DateInput/index.ts +3 -2
  58. package/src/components/DatePicker/DatePicker.stories.tsx +90 -96
  59. package/src/components/DatePicker/DatePicker.styles.ts +44 -54
  60. package/src/components/DatePicker/DatePicker.tsx +354 -358
  61. package/src/components/DatePicker/DatePickerHeader/DatePickerHeader.styles.ts +84 -84
  62. package/src/components/DatePicker/DatePickerHeader/DatePickerHeader.tsx +80 -94
  63. package/src/components/DatePicker/DatePickerHeader/index.ts +2 -1
  64. package/src/components/DatePicker/constants.ts +1 -0
  65. package/src/components/DatePicker/helpers.ts +24 -0
  66. package/src/components/DatePicker/index.ts +3 -4
  67. package/src/components/DatePicker/types.ts +40 -0
  68. package/src/components/Description/Description.stories.tsx +29 -29
  69. package/src/components/Description/Description.styles.ts +31 -31
  70. package/src/components/Description/Description.tsx +69 -69
  71. package/src/components/Description/index.ts +2 -2
  72. package/src/components/FiltersPane/FilterInterval/FilterInterval.styles.ts +64 -64
  73. package/src/components/FiltersPane/FilterInterval/FilterInterval.tsx +162 -162
  74. package/src/components/FiltersPane/FilterInterval/index.ts +1 -1
  75. package/src/components/FiltersPane/FilterMultiSelect/FilterMultiSelect.tsx +14 -14
  76. package/src/components/FiltersPane/FilterMultiSelect/index.ts +1 -1
  77. package/src/components/FiltersPane/FilterSelect/FilterSelect.styles.ts +144 -144
  78. package/src/components/FiltersPane/FilterSelect/FilterSelect.tsx +397 -397
  79. package/src/components/FiltersPane/FilterSelect/index.ts +1 -1
  80. package/src/components/FiltersPane/FilterSelect/locales.ts +37 -37
  81. package/src/components/FiltersPane/FilterValueView/FilterValueView.styles.tsx +15 -15
  82. package/src/components/FiltersPane/FilterValueView/FilterValueView.tsx +186 -186
  83. package/src/components/FiltersPane/FilterValueView/index.tsx +1 -1
  84. package/src/components/FiltersPane/FilterWithDates/FilterWithDates.styles.ts +60 -60
  85. package/src/components/FiltersPane/FilterWithDates/FilterWithDates.tsx +210 -222
  86. package/src/components/FiltersPane/FilterWithDates/index.ts +1 -1
  87. package/src/components/FiltersPane/FilterWithPeriod/FilterWithPeriod.styles.ts +17 -17
  88. package/src/components/FiltersPane/FilterWithPeriod/FilterWithPeriod.tsx +231 -231
  89. package/src/components/FiltersPane/FilterWithPeriod/index.ts +1 -1
  90. package/src/components/FiltersPane/FilterWrapper/FilterWrapper.styles.ts +110 -110
  91. package/src/components/FiltersPane/FilterWrapper/FilterWrapper.tsx +360 -360
  92. package/src/components/FiltersPane/FilterWrapper/index.ts +1 -1
  93. package/src/components/FiltersPane/FiltersPane.stories.tsx +308 -308
  94. package/src/components/FiltersPane/FiltersPane.styles.ts +71 -71
  95. package/src/components/FiltersPane/FiltersPane.tsx +193 -193
  96. package/src/components/FiltersPane/FiltersPaneSearch/FiltersPaneSearch.styles.ts +109 -109
  97. package/src/components/FiltersPane/FiltersPaneSearch/FiltersPaneSearch.tsx +175 -175
  98. package/src/components/FiltersPane/FiltersPaneSearch/index.ts +1 -1
  99. package/src/components/FiltersPane/index.ts +20 -20
  100. package/src/components/FiltersPane/locales.ts +107 -107
  101. package/src/components/FiltersPane/types.ts +126 -126
  102. package/src/components/Flag/Flag.stories.tsx +29 -29
  103. package/src/components/Flag/Flag.styles.ts +18 -18
  104. package/src/components/Flag/Flag.tsx +28 -28
  105. package/src/components/Flag/augment.d.ts +1 -1
  106. package/src/components/Flag/index.ts +2 -2
  107. package/src/components/FlexibleTable/FlexibleTable.stories.tsx +86 -86
  108. package/src/components/FlexibleTable/FlexibleTable.styles.ts +131 -131
  109. package/src/components/FlexibleTable/FlexibleTable.tsx +243 -243
  110. package/src/components/FlexibleTable/TableRow.tsx +171 -171
  111. package/src/components/FlexibleTable/TableValue.tsx +81 -81
  112. package/src/components/FlexibleTable/fixture-test.ts +254 -254
  113. package/src/components/FlexibleTable/index.ts +3 -3
  114. package/src/components/FlexibleTable/types.ts +58 -58
  115. package/src/components/Icon/ComplexIconBoilerplate.tsx +17 -17
  116. package/src/components/Icon/Icon.stories.tsx +88 -88
  117. package/src/components/Icon/Icon.styles.ts +10 -10
  118. package/src/components/Icon/Icon.tsx +34 -34
  119. package/src/components/Icon/IconBoilerplate.tsx +42 -42
  120. package/src/components/Icon/complexIcons/augment.d.ts +1 -1
  121. package/src/components/Icon/complexIcons/avatarGreen.svg +57 -57
  122. package/src/components/Icon/complexIcons/icons.ts +7 -7
  123. package/src/components/Icon/complexIcons/index.ts +1 -1
  124. package/src/components/Icon/icons/icons.ts +838 -838
  125. package/src/components/Icon/icons/index.ts +1 -1
  126. package/src/components/Icon/index.ts +4 -4
  127. package/src/components/IncrementInput/ChangeButton.tsx +34 -34
  128. package/src/components/IncrementInput/IncrementInput.stories.tsx +34 -34
  129. package/src/components/IncrementInput/IncrementInput.styles.ts +77 -77
  130. package/src/components/IncrementInput/IncrementInput.tsx +95 -95
  131. package/src/components/IncrementInput/index.ts +2 -2
  132. package/src/components/Input/Input.stories.tsx +92 -92
  133. package/src/components/Input/Input.styles.ts +307 -307
  134. package/src/components/Input/Input.tsx +321 -321
  135. package/src/components/Input/index.ts +2 -2
  136. package/src/components/List/List.stories.tsx +62 -62
  137. package/src/components/List/List.styles.ts +52 -52
  138. package/src/components/List/List.tsx +82 -82
  139. package/src/components/List/index.ts +2 -2
  140. package/src/components/Modal/Modal.stories.tsx +113 -113
  141. package/src/components/Modal/Modal.styles.ts +308 -308
  142. package/src/components/Modal/Modal.tsx +210 -210
  143. package/src/components/Modal/index.ts +2 -2
  144. package/src/components/MoreMenu/MoreMenu.stories.tsx +46 -46
  145. package/src/components/MoreMenu/MoreMenu.styles.ts +70 -70
  146. package/src/components/MoreMenu/MoreMenu.tsx +102 -102
  147. package/src/components/MoreMenu/index.ts +2 -2
  148. package/src/components/MultiSelect/MultiSelect.stories.tsx +46 -46
  149. package/src/components/MultiSelect/MultiSelect.styles.ts +55 -55
  150. package/src/components/MultiSelect/MultiSelect.tsx +98 -98
  151. package/src/components/MultiSelect/MultiSelectInput/MultiSelectInput.styles.ts +73 -73
  152. package/src/components/MultiSelect/MultiSelectInput/MultiSelectInput.tsx +62 -62
  153. package/src/components/MultiSelect/MultiSelectInput/index.ts +1 -1
  154. package/src/components/MultiSelect/index.ts +3 -3
  155. package/src/components/MultiSelectList/MultiSelectList.styles.ts +125 -125
  156. package/src/components/MultiSelectList/MultiSelectList.tsx +519 -519
  157. package/src/components/MultiSelectList/index.ts +2 -2
  158. package/src/components/MultiSelectList/locales.ts +37 -37
  159. package/src/components/Notification/Notification.stories.tsx +51 -51
  160. package/src/components/Notification/Notification.styles.ts +50 -50
  161. package/src/components/Notification/Notification.tsx +84 -84
  162. package/src/components/Notification/index.ts +2 -2
  163. package/src/components/NumberInput/NumberInput.stories.tsx +36 -36
  164. package/src/components/NumberInput/NumberInput.tsx +154 -154
  165. package/src/components/NumberInput/helpers.ts +87 -87
  166. package/src/components/NumberInput/index.ts +1 -1
  167. package/src/components/PhoneInput/PhoneInput.stories.tsx +71 -71
  168. package/src/components/PhoneInput/PhoneInput.styles.ts +84 -84
  169. package/src/components/PhoneInput/PhoneInput.tsx +223 -223
  170. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.stories.tsx +21 -21
  171. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.styles.ts +100 -100
  172. package/src/components/PhoneInput/PhoneInputCountryList/PhoneInputCountryList.tsx +171 -171
  173. package/src/components/PhoneInput/PhoneInputCountryList/index.ts +2 -2
  174. package/src/components/PhoneInput/index.ts +6 -6
  175. package/src/components/PhoneInput/phone-info.ts +2167 -2167
  176. package/src/components/PhoneInput/types.ts +16 -16
  177. package/src/components/RadioButton/RadioButton.stories.tsx +46 -46
  178. package/src/components/RadioButton/RadioButton.styles.ts +37 -37
  179. package/src/components/RadioButton/RadioButton.tsx +56 -56
  180. package/src/components/RadioButton/index.ts +2 -2
  181. package/src/components/ScrollIntoViewIfNeeded/ScrollIntoViewIfNeeded.ts +66 -66
  182. package/src/components/ScrollIntoViewIfNeeded/index.ts +1 -1
  183. package/src/components/SearchInput/SearchInput.stories.tsx +24 -24
  184. package/src/components/SearchInput/SearchInput.styles.ts +50 -50
  185. package/src/components/SearchInput/SearchInput.tsx +63 -63
  186. package/src/components/SearchInput/index.ts +2 -2
  187. package/src/components/Select/MultiSelect.stories.tsx +263 -263
  188. package/src/components/Select/Select.stories.tsx +258 -258
  189. package/src/components/Select/Select.styles.ts +96 -96
  190. package/src/components/Select/Select.tsx +630 -630
  191. package/src/components/Select/SelectList/SelectList.styles.ts +72 -72
  192. package/src/components/Select/SelectList/SelectList.tsx +165 -165
  193. package/src/components/Select/SelectList/index.ts +1 -1
  194. package/src/components/Select/SelectListItem/SelectListItem.styles.ts +14 -14
  195. package/src/components/Select/SelectListItem/SelectListItem.tsx +73 -73
  196. package/src/components/Select/constants.ts +2 -2
  197. package/src/components/Select/helpers.ts +29 -29
  198. package/src/components/Select/index.ts +4 -4
  199. package/src/components/Select/types.ts +1 -1
  200. package/src/components/SmartInput/SmartInput.stories.tsx +63 -63
  201. package/src/components/SmartInput/SmartInput.tsx +180 -180
  202. package/src/components/SmartInput/helpers.ts +85 -85
  203. package/src/components/SmartInput/index.ts +1 -1
  204. package/src/components/Switch/Switch.stories.tsx +40 -40
  205. package/src/components/Switch/Switch.styles.ts +75 -75
  206. package/src/components/Switch/Switch.tsx +89 -89
  207. package/src/components/Switch/index.ts +2 -2
  208. package/src/components/TextArea/TextArea.stories.tsx +35 -35
  209. package/src/components/TextArea/TextArea.styles.ts +153 -153
  210. package/src/components/TextArea/TextArea.tsx +178 -178
  211. package/src/components/TextArea/index.ts +2 -2
  212. package/src/components/TextWithInfo/TextWithInfo.stories.tsx +53 -53
  213. package/src/components/TextWithInfo/TextWithInfo.styles.ts +60 -60
  214. package/src/components/TextWithInfo/TextWithInfo.tsx +67 -67
  215. package/src/components/TextWithInfo/index.ts +2 -2
  216. package/src/components/TextWithTooltip/TextWithTooltip.stories.tsx +58 -58
  217. package/src/components/TextWithTooltip/TextWithTooltip.styles.ts +19 -19
  218. package/src/components/TextWithTooltip/TextWithTooltip.tsx +163 -163
  219. package/src/components/TextWithTooltip/index.ts +2 -2
  220. package/src/components/ThemedPreloader/ThemedPreloader.stories.tsx +41 -41
  221. package/src/components/ThemedPreloader/ThemedPreloader.styles.ts +21 -21
  222. package/src/components/ThemedPreloader/ThemedPreloader.tsx +56 -56
  223. package/src/components/ThemedPreloader/components/DefaultPreloader/DefaultPreloader.tsx +34 -34
  224. package/src/components/ThemedPreloader/components/DefaultPreloader/index.ts +1 -1
  225. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.styles.ts +54 -54
  226. package/src/components/ThemedPreloader/components/DotsPreloader/DotsPreloader.tsx +18 -18
  227. package/src/components/ThemedPreloader/components/DotsPreloader/index.ts +2 -2
  228. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.styles.ts +11 -11
  229. package/src/components/ThemedPreloader/components/SvgPreloader/SvgPreloader.tsx +32 -32
  230. package/src/components/ThemedPreloader/components/SvgPreloader/index.ts +2 -2
  231. package/src/components/ThemedPreloader/components/index.ts +2 -2
  232. package/src/components/ThemedPreloader/index.ts +2 -2
  233. package/src/components/Toaster/Toaster.stories.tsx +34 -34
  234. package/src/components/Toaster/Toaster.styles.ts +59 -59
  235. package/src/components/Toaster/Toaster.tsx +113 -113
  236. package/src/components/Toaster/index.ts +2 -2
  237. package/src/components/Tooltip/Tooltip.stories.tsx +21 -21
  238. package/src/components/Tooltip/Tooltip.styles.ts +45 -45
  239. package/src/components/Tooltip/Tooltip.tsx +40 -40
  240. package/src/components/Tooltip/index.ts +3 -3
  241. package/src/components/Tooltip/types.ts +1 -1
  242. package/src/components/index.ts +36 -36
  243. package/src/helpers/colors.ts +2 -2
  244. package/src/helpers/dateHelpers/date-helpers.ts +9 -9
  245. package/src/helpers/index.ts +4 -4
  246. package/src/helpers/phone.ts +106 -106
  247. package/src/helpers/popper-helpers.ts +17 -17
  248. package/src/helpers/snippets.tsx +5 -5
  249. package/src/helpers/utils.ts +261 -250
  250. package/src/hooks/index.ts +6 -6
  251. package/src/hooks/use-did-mount-effect.ts +21 -21
  252. package/src/hooks/use-dropdown.ts +85 -85
  253. package/src/hooks/use-is-mounted.ts +15 -15
  254. package/src/hooks/use-on-click-outside.ts +92 -92
  255. package/src/hooks/use-theme.ts +36 -36
  256. package/src/hooks/use-tweak-styles.ts +14 -14
  257. package/src/index.ts +6 -6
  258. package/src/theme.ts +155 -155
  259. package/src/types.ts +105 -106
  260. package/src/vite-env.d.ts +1 -1
  261. package/dist/components/DatePicker/DatePickerInput/DatePickerInput.d.ts +0 -11
  262. package/dist/components/DatePicker/DatePickerInput/DatePickerInput.styles.d.ts +0 -20
  263. package/dist/components/DatePicker/DatePickerInput/index.d.ts +0 -1
  264. package/src/components/DatePicker/DatePickerInput/DatePickerInput.styles.ts +0 -25
  265. package/src/components/DatePicker/DatePickerInput/DatePickerInput.tsx +0 -31
  266. package/src/components/DatePicker/DatePickerInput/index.ts +0 -1
@@ -1 +1 @@
1
- export * from './FilterSelect';
1
+ export * from './FilterSelect';
@@ -1,37 +1,37 @@
1
- import merge from 'lodash-es/merge';
2
-
3
- export interface ISelectLocale {
4
- clear: string;
5
- all: string;
6
- chosen: string;
7
- searchPlaceholder: string;
8
- nothingFound: string;
9
- }
10
-
11
- export const SelectLocales: Record<string, ISelectLocale> = {
12
- ru: {
13
- clear: 'Очистить',
14
- all: 'Все',
15
- chosen: 'Выбранные',
16
- nothingFound: 'Ничего не найдено',
17
- searchPlaceholder: 'Поиск',
18
- },
19
-
20
- en: {
21
- clear: 'Clear',
22
- all: 'All',
23
- chosen: 'Chosen',
24
- nothingFound: 'Nothing found',
25
- searchPlaceholder: 'Search',
26
- },
27
- };
28
-
29
- export type ISelectLocaleKey = keyof typeof SelectLocales;
30
-
31
- export const DEFAULT_LOCALE: ISelectLocaleKey = 'en';
32
-
33
- export const getLocale = (
34
- key: ISelectLocaleKey = DEFAULT_LOCALE,
35
- custom?: Partial<ISelectLocale>,
36
- custom2?: Partial<ISelectLocale>,
37
- ): ISelectLocale => merge({}, SelectLocales[key], custom, custom2);
1
+ import merge from 'lodash-es/merge';
2
+
3
+ export interface ISelectLocale {
4
+ clear: string;
5
+ all: string;
6
+ chosen: string;
7
+ searchPlaceholder: string;
8
+ nothingFound: string;
9
+ }
10
+
11
+ export const SelectLocales: Record<string, ISelectLocale> = {
12
+ ru: {
13
+ clear: 'Очистить',
14
+ all: 'Все',
15
+ chosen: 'Выбранные',
16
+ nothingFound: 'Ничего не найдено',
17
+ searchPlaceholder: 'Поиск',
18
+ },
19
+
20
+ en: {
21
+ clear: 'Clear',
22
+ all: 'All',
23
+ chosen: 'Chosen',
24
+ nothingFound: 'Nothing found',
25
+ searchPlaceholder: 'Search',
26
+ },
27
+ };
28
+
29
+ export type ISelectLocaleKey = keyof typeof SelectLocales;
30
+
31
+ export const DEFAULT_LOCALE: ISelectLocaleKey = 'en';
32
+
33
+ export const getLocale = (
34
+ key: ISelectLocaleKey = DEFAULT_LOCALE,
35
+ custom?: Partial<ISelectLocale>,
36
+ custom2?: Partial<ISelectLocale>,
37
+ ): ISelectLocale => merge({}, SelectLocales[key], custom, custom2);
@@ -1,15 +1,15 @@
1
- import { ComponentStyles } from '../../../types';
2
-
3
- export const styles = {
4
- text: {
5
- overflow: 'hidden',
6
- textOverflow: 'ellipsis',
7
- whiteSpace: 'nowrap',
8
- },
9
-
10
- count: {
11
- whiteSpace: 'pre',
12
- },
13
- };
14
-
15
- export type FilterValueViewStyles = ComponentStyles<typeof styles>;
1
+ import { ComponentStyles } from '../../../types';
2
+
3
+ export const styles = {
4
+ text: {
5
+ overflow: 'hidden',
6
+ textOverflow: 'ellipsis',
7
+ whiteSpace: 'nowrap',
8
+ },
9
+
10
+ count: {
11
+ whiteSpace: 'pre',
12
+ },
13
+ };
14
+
15
+ export type FilterValueViewStyles = ComponentStyles<typeof styles>;
@@ -1,186 +1,186 @@
1
- import { useMemo } from 'react';
2
- import { format } from 'date-fns';
3
-
4
- import { useTheme } from '../../../hooks';
5
- import { IFilterWrapperProps } from '../FilterWrapper';
6
- import { IMultiSelectListValues } from '../../MultiSelectList';
7
- import { IDateRangeConfigItem, IFilterWithDatesValue, IPeriod } from '../types';
8
- import { getLocale } from '../locales';
9
-
10
- import { styles } from './FilterValueView.styles';
11
-
12
- const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy';
13
-
14
- const defaultGetValueView = <T,>(v: T): string => String(v);
15
-
16
- export function FilterValueView<Values, Key extends keyof Values>({
17
- locale,
18
- localeKey,
19
- filter,
20
- value,
21
- }: Omit<
22
- IFilterWrapperProps<Values, Key>,
23
- 'onChange' | 'filtersPaneRef'
24
- >): JSX.Element {
25
- const { classes } = useTheme('FilterWrapper', styles);
26
-
27
- if (value === undefined || value === null) {
28
- return <></>;
29
- }
30
-
31
- const translatesLocaleKey = filter.localeKey ?? localeKey;
32
- const translates = useMemo(
33
- () => getLocale(translatesLocaleKey, locale, filter.locale),
34
- [localeKey, locale, filter.locale],
35
- );
36
-
37
- if (filter.getSelectedValueView !== undefined) {
38
- return (
39
- <span className={classes.text}>{filter.getSelectedValueView(value)}</span>
40
- );
41
- }
42
-
43
- const isMultiple =
44
- filter.type === 'custom' && filter.valueViewType === 'multiple';
45
- const isRange = filter.type === 'custom' && filter.valueViewType === 'range';
46
- const isDate =
47
- filter.type === 'dateRange' || filter.type === 'dateRangeWithoutPeriod';
48
-
49
- const displayValue = (v: any): string => {
50
- if (v === undefined || v === null) {
51
- return '';
52
- }
53
-
54
- if (v instanceof Date) {
55
- return format(
56
- v,
57
- (filter as IDateRangeConfigItem<IFilterWithDatesValue>).dateFormat ||
58
- DEFAULT_DATE_FORMAT,
59
- );
60
- }
61
-
62
- if (typeof v === 'object' && v.value !== undefined) {
63
- return String(v.value);
64
- }
65
-
66
- if (
67
- typeof v === 'string' ||
68
- typeof v === 'number' ||
69
- typeof v === 'boolean'
70
- ) {
71
- return String(v);
72
- }
73
-
74
- console.warn(
75
- `%c Ошибка конфигурации фильтра ${filter.name}. Невозможно отобразить значение фильтра. Задайте filterValueViewComponent или filterValueViewType.`,
76
- 'background: orange; color: black',
77
- );
78
-
79
- return '';
80
- };
81
-
82
- if (filter.type === 'select') {
83
- const getView = filter.getValueView ?? defaultGetValueView;
84
- return <span className={classes.text}>{getView(value)}</span>;
85
- }
86
-
87
- if (filter.type === 'multiSelect') {
88
- const multiSelectValue = value as unknown as IMultiSelectListValues<any>;
89
- const getView = filter.getValueView ?? defaultGetValueView;
90
- const { include } = multiSelectValue;
91
-
92
- return (
93
- <>
94
- {Array.isArray(include) && include.length > 0 && (
95
- <>
96
- <span className={classes.text}>{getView(include[0])}</span>
97
- <span className={classes.count}>
98
- {include.length > 1 && ` (+${include.length - 1})`}
99
- </span>
100
- </>
101
- )}
102
- </>
103
- );
104
- }
105
-
106
- if (filter.type === 'interval') {
107
- const intervalValue = value as unknown as number[];
108
- const intervalValueFrom = intervalValue[0];
109
- const intervalValueTo = intervalValue[1];
110
-
111
- const intervals = [];
112
- if (intervalValueFrom !== undefined) {
113
- intervals.push(
114
- `${translates.from.toLowerCase()} ${String(intervalValueFrom)}`,
115
- );
116
- }
117
- if (intervalValueTo !== undefined) {
118
- intervals.push(
119
- `${translates.to.toLowerCase()} ${String(intervalValueTo)}`,
120
- );
121
- }
122
-
123
- return <span className={classes.text}>{intervals.join(' ')}</span>;
124
- }
125
-
126
- if (isMultiple) {
127
- return (
128
- <>
129
- {Array.isArray(value) && value.length > 0 && (
130
- <>
131
- <span className={classes.text}>{displayValue(value[0])}</span>
132
- <span className={classes.count}>
133
- {value.length > 1 && ` (+${value.length - 1})`}
134
- </span>
135
- </>
136
- )}
137
- </>
138
- );
139
- }
140
-
141
- if (isDate) {
142
- const { from, to, periodType, label } = value as unknown as IPeriod;
143
- const hasFrom = from !== undefined && from !== null;
144
- const hasTo = to !== undefined && to !== null;
145
-
146
- if (periodType !== 'CUSTOM') {
147
- return <span className={classes.text}>{displayValue(label)}</span>;
148
- }
149
-
150
- const range = [];
151
- if (hasFrom) {
152
- if (!hasTo) {
153
- range.push(translates.from.toLowerCase());
154
- }
155
- range.push(displayValue(from));
156
- }
157
- if (hasTo) {
158
- if (hasFrom) {
159
- range.push('—');
160
- } else {
161
- range.push(translates.to.toLowerCase());
162
- }
163
- range.push(displayValue(to));
164
- }
165
-
166
- return <span className={classes.text}>{range.join(' ')}</span>;
167
- }
168
-
169
- if (isRange && Array.isArray(value)) {
170
- const rangeValue = value as unknown as number[];
171
- const rangeValueFrom = rangeValue[0];
172
- const rangeValueTo = rangeValue[1];
173
-
174
- const range = [];
175
- if (rangeValueFrom !== undefined) {
176
- range.push(`${translates.from.toLowerCase()} ${String(rangeValueFrom)}`);
177
- }
178
- if (rangeValueTo !== undefined) {
179
- range.push(`${translates.to.toLowerCase()} ${String(rangeValueTo)}`);
180
- }
181
-
182
- return <span className={classes.text}>{range.join(' ')}</span>;
183
- }
184
-
185
- return <span className={classes.text}>{displayValue(value)}</span>;
186
- }
1
+ import { useMemo } from 'react';
2
+ import { format } from 'date-fns';
3
+
4
+ import { useTheme } from '../../../hooks';
5
+ import { IFilterWrapperProps } from '../FilterWrapper';
6
+ import { IMultiSelectListValues } from '../../MultiSelectList';
7
+ import { IDateRangeConfigItem, IFilterWithDatesValue, IPeriod } from '../types';
8
+ import { getLocale } from '../locales';
9
+
10
+ import { styles } from './FilterValueView.styles';
11
+
12
+ const DEFAULT_DATE_FORMAT = 'dd.MM.yyyy';
13
+
14
+ const defaultGetValueView = <T,>(v: T): string => String(v);
15
+
16
+ export function FilterValueView<Values, Key extends keyof Values>({
17
+ locale,
18
+ localeKey,
19
+ filter,
20
+ value,
21
+ }: Omit<
22
+ IFilterWrapperProps<Values, Key>,
23
+ 'onChange' | 'filtersPaneRef'
24
+ >): JSX.Element {
25
+ const { classes } = useTheme('FilterWrapper', styles);
26
+
27
+ if (value === undefined || value === null) {
28
+ return <></>;
29
+ }
30
+
31
+ const translatesLocaleKey = filter.localeKey ?? localeKey;
32
+ const translates = useMemo(
33
+ () => getLocale(translatesLocaleKey, locale, filter.locale),
34
+ [localeKey, locale, filter.locale],
35
+ );
36
+
37
+ if (filter.getSelectedValueView !== undefined) {
38
+ return (
39
+ <span className={classes.text}>{filter.getSelectedValueView(value)}</span>
40
+ );
41
+ }
42
+
43
+ const isMultiple =
44
+ filter.type === 'custom' && filter.valueViewType === 'multiple';
45
+ const isRange = filter.type === 'custom' && filter.valueViewType === 'range';
46
+ const isDate =
47
+ filter.type === 'dateRange' || filter.type === 'dateRangeWithoutPeriod';
48
+
49
+ const displayValue = (v: any): string => {
50
+ if (v === undefined || v === null) {
51
+ return '';
52
+ }
53
+
54
+ if (v instanceof Date) {
55
+ return format(
56
+ v,
57
+ (filter as IDateRangeConfigItem<IFilterWithDatesValue>).dateFormat ||
58
+ DEFAULT_DATE_FORMAT,
59
+ );
60
+ }
61
+
62
+ if (typeof v === 'object' && v.value !== undefined) {
63
+ return String(v.value);
64
+ }
65
+
66
+ if (
67
+ typeof v === 'string' ||
68
+ typeof v === 'number' ||
69
+ typeof v === 'boolean'
70
+ ) {
71
+ return String(v);
72
+ }
73
+
74
+ console.warn(
75
+ `%c Ошибка конфигурации фильтра ${filter.name}. Невозможно отобразить значение фильтра. Задайте filterValueViewComponent или filterValueViewType.`,
76
+ 'background: orange; color: black',
77
+ );
78
+
79
+ return '';
80
+ };
81
+
82
+ if (filter.type === 'select') {
83
+ const getView = filter.getValueView ?? defaultGetValueView;
84
+ return <span className={classes.text}>{getView(value)}</span>;
85
+ }
86
+
87
+ if (filter.type === 'multiSelect') {
88
+ const multiSelectValue = value as unknown as IMultiSelectListValues<any>;
89
+ const getView = filter.getValueView ?? defaultGetValueView;
90
+ const { include } = multiSelectValue;
91
+
92
+ return (
93
+ <>
94
+ {Array.isArray(include) && include.length > 0 && (
95
+ <>
96
+ <span className={classes.text}>{getView(include[0])}</span>
97
+ <span className={classes.count}>
98
+ {include.length > 1 && ` (+${include.length - 1})`}
99
+ </span>
100
+ </>
101
+ )}
102
+ </>
103
+ );
104
+ }
105
+
106
+ if (filter.type === 'interval') {
107
+ const intervalValue = value as unknown as number[];
108
+ const intervalValueFrom = intervalValue[0];
109
+ const intervalValueTo = intervalValue[1];
110
+
111
+ const intervals = [];
112
+ if (intervalValueFrom !== undefined) {
113
+ intervals.push(
114
+ `${translates.from.toLowerCase()} ${String(intervalValueFrom)}`,
115
+ );
116
+ }
117
+ if (intervalValueTo !== undefined) {
118
+ intervals.push(
119
+ `${translates.to.toLowerCase()} ${String(intervalValueTo)}`,
120
+ );
121
+ }
122
+
123
+ return <span className={classes.text}>{intervals.join(' ')}</span>;
124
+ }
125
+
126
+ if (isMultiple) {
127
+ return (
128
+ <>
129
+ {Array.isArray(value) && value.length > 0 && (
130
+ <>
131
+ <span className={classes.text}>{displayValue(value[0])}</span>
132
+ <span className={classes.count}>
133
+ {value.length > 1 && ` (+${value.length - 1})`}
134
+ </span>
135
+ </>
136
+ )}
137
+ </>
138
+ );
139
+ }
140
+
141
+ if (isDate) {
142
+ const { from, to, periodType, label } = value as unknown as IPeriod;
143
+ const hasFrom = from !== undefined && from !== null;
144
+ const hasTo = to !== undefined && to !== null;
145
+
146
+ if (periodType !== 'CUSTOM') {
147
+ return <span className={classes.text}>{displayValue(label)}</span>;
148
+ }
149
+
150
+ const range = [];
151
+ if (hasFrom) {
152
+ if (!hasTo) {
153
+ range.push(translates.from.toLowerCase());
154
+ }
155
+ range.push(displayValue(from));
156
+ }
157
+ if (hasTo) {
158
+ if (hasFrom) {
159
+ range.push('—');
160
+ } else {
161
+ range.push(translates.to.toLowerCase());
162
+ }
163
+ range.push(displayValue(to));
164
+ }
165
+
166
+ return <span className={classes.text}>{range.join(' ')}</span>;
167
+ }
168
+
169
+ if (isRange && Array.isArray(value)) {
170
+ const rangeValue = value as unknown as number[];
171
+ const rangeValueFrom = rangeValue[0];
172
+ const rangeValueTo = rangeValue[1];
173
+
174
+ const range = [];
175
+ if (rangeValueFrom !== undefined) {
176
+ range.push(`${translates.from.toLowerCase()} ${String(rangeValueFrom)}`);
177
+ }
178
+ if (rangeValueTo !== undefined) {
179
+ range.push(`${translates.to.toLowerCase()} ${String(rangeValueTo)}`);
180
+ }
181
+
182
+ return <span className={classes.text}>{range.join(' ')}</span>;
183
+ }
184
+
185
+ return <span className={classes.text}>{displayValue(value)}</span>;
186
+ }
@@ -1 +1 @@
1
- export * from './FilterValueView';
1
+ export * from './FilterValueView';
@@ -1,60 +1,60 @@
1
- import { colors } from '../../../theme';
2
- import { ComponentStyles } from '../../../types';
3
-
4
- export const styles = {
5
- root: {
6
- background: colors.CLASSIC_WHITE,
7
- position: 'relative',
8
- zIndex: 20,
9
- },
10
-
11
- container: {
12
- display: 'flex',
13
- gap: 20,
14
- padding: [8, 20],
15
- },
16
-
17
- containerItem: {
18
- width: '50%',
19
- height: 44,
20
- },
21
-
22
- btnRow: {
23
- display: 'flex',
24
- flexDirection: 'row-reverse',
25
- justifyContent: 'space-between',
26
- padding: 8,
27
- },
28
-
29
- datepicker: {},
30
-
31
- tweakClearButton: {
32
- text: {
33
- color: colors.GREY_ACTIVE,
34
-
35
- '&:hover, &:focus': {
36
- color: colors.FONT_MEDIUM,
37
- },
38
-
39
- '&:active': {
40
- color: colors.FONT_MEDIUM,
41
- },
42
- },
43
- },
44
-
45
- tweakBackButton: {
46
- text: {
47
- color: colors.GREY_ACTIVE,
48
-
49
- '&:hover, &:focus': {
50
- color: colors.FONT_MEDIUM,
51
- },
52
-
53
- '&:active': {
54
- color: colors.FONT_MEDIUM,
55
- },
56
- },
57
- },
58
- };
59
-
60
- export type FilterWithDatesStyles = ComponentStyles<typeof styles>;
1
+ import { colors } from '../../../theme';
2
+ import { ComponentStyles } from '../../../types';
3
+
4
+ export const styles = {
5
+ root: {
6
+ background: colors.CLASSIC_WHITE,
7
+ position: 'relative',
8
+ zIndex: 20,
9
+ },
10
+
11
+ container: {
12
+ display: 'flex',
13
+ gap: 20,
14
+ padding: [8, 20],
15
+ },
16
+
17
+ containerItem: {
18
+ width: '50%',
19
+ height: 44,
20
+ },
21
+
22
+ btnRow: {
23
+ display: 'flex',
24
+ flexDirection: 'row-reverse',
25
+ justifyContent: 'space-between',
26
+ padding: 8,
27
+ },
28
+
29
+ datepicker: {},
30
+
31
+ tweakClearButton: {
32
+ text: {
33
+ color: colors.GREY_ACTIVE,
34
+
35
+ '&:hover, &:focus': {
36
+ color: colors.FONT_MEDIUM,
37
+ },
38
+
39
+ '&:active': {
40
+ color: colors.FONT_MEDIUM,
41
+ },
42
+ },
43
+ },
44
+
45
+ tweakBackButton: {
46
+ text: {
47
+ color: colors.GREY_ACTIVE,
48
+
49
+ '&:hover, &:focus': {
50
+ color: colors.FONT_MEDIUM,
51
+ },
52
+
53
+ '&:active': {
54
+ color: colors.FONT_MEDIUM,
55
+ },
56
+ },
57
+ },
58
+ };
59
+
60
+ export type FilterWithDatesStyles = ComponentStyles<typeof styles>;