@true-engineering/true-react-common-ui-kit 2.1.0 → 2.1.1

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