@itcase/ui 1.9.58 → 1.9.60

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 (257) hide show
  1. package/dist/{Avatar_cjs_BIHJrAbQ.js → Avatar_cjs_rB8eleZS.js} +5 -8
  2. package/dist/{Avatar_es_CtP68jPM.js → Avatar_es_eDWRG48M.js} +2 -5
  3. package/dist/{Button_cjs_BCcz3-Fw.js → Button_cjs_cNwSkY7f.js} +7 -13
  4. package/dist/{Button_es_DAzeb-vJ.js → Button_es_egCg1YEe.js} +2 -8
  5. package/dist/{ChipsGroup_cjs_C27x9x9O.js → ChipsGroup_cjs_DvFJapnM.js} +7 -11
  6. package/dist/{ChipsGroup_es_BTe1MYhV.js → ChipsGroup_es_C7tQ_vNa.js} +1 -5
  7. package/dist/{DatePicker_cjs_Dvw_cGFH.js → DatePicker_cjs_B03pbJ0K.js} +10 -14
  8. package/dist/{DatePicker_es_t3u6yddn.js → DatePicker_es_DIuTzpna.js} +4 -8
  9. package/dist/{Group_cjs_BLGSskb3.js → Group_cjs_DtBLfpiv.js} +4 -6
  10. package/dist/{Group_es_CP-uIchb.js → Group_es_BUkLNi2_.js} +1 -3
  11. package/dist/{Image_cjs_Hvjp2QDB.js → Image_cjs_BSwaz7r5.js} +4 -6
  12. package/dist/{Image_es_DpOCNWpn.js → Image_es_DhPg4srf.js} +1 -3
  13. package/dist/{Input_cjs_BQIi1N63.js → Input_cjs_Cr6u1JXB.js} +3 -4
  14. package/dist/{Input_es_BYbc2X9M.js → Input_es_Da2Yhzcz.js} +1 -2
  15. package/dist/{Label_cjs_RI5tFcPt.js → Label_cjs_DMOG-8Eu.js} +5 -9
  16. package/dist/{Label_es_CNRTIAWo.js → Label_es_DZn7Ulmk.js} +1 -5
  17. package/dist/{Loader_cjs_CJpdLndn.js → Loader_cjs_Bi6IoQFb.js} +5 -8
  18. package/dist/{Loader_es_CqlLujBJ.js → Loader_es_BZMRBcgn.js} +1 -4
  19. package/dist/{Overlay_cjs_BK_0yTLw.js → Overlay_cjs_bR_cRWP3.js} +4 -6
  20. package/dist/{Overlay_es_DOO535JM.js → Overlay_es_BVxlUWXu.js} +1 -3
  21. package/dist/{SelectContainer_cjs_DJ_IUDjE.js → SelectContainer_cjs_DSMCeePO.js} +17 -22
  22. package/dist/{SelectContainer_es_BYBGTq-u.js → SelectContainer_es_D2Yz1Qwi.js} +3 -8
  23. package/dist/cjs/components/Accordion.js +7 -22
  24. package/dist/cjs/components/Avatar.js +4 -18
  25. package/dist/cjs/components/AvatarStack.js +8 -22
  26. package/dist/cjs/components/Badge.js +5 -19
  27. package/dist/cjs/components/Breadcrumbs.js +7 -21
  28. package/dist/cjs/components/Button.js +4 -18
  29. package/dist/cjs/components/Cell.js +6 -20
  30. package/dist/cjs/components/Checkbox.js +7 -15
  31. package/dist/cjs/components/Checkmark.js +5 -19
  32. package/dist/cjs/components/Chips.js +2 -16
  33. package/dist/cjs/components/Choice.js +7 -21
  34. package/dist/cjs/components/Code.js +5 -10
  35. package/dist/cjs/components/CookiesWarning.js +7 -21
  36. package/dist/cjs/components/Dadata.js +4 -9
  37. package/dist/cjs/components/DatePeriod.js +18 -33
  38. package/dist/cjs/components/DatePicker.js +7 -21
  39. package/dist/cjs/components/Divider.js +6 -14
  40. package/dist/cjs/components/Dot.js +4 -10
  41. package/dist/cjs/components/Drawer.js +6 -21
  42. package/dist/cjs/components/Dropdown.js +5 -21
  43. package/dist/cjs/components/Dropzone.js +11 -25
  44. package/dist/cjs/components/Flex.js +6 -12
  45. package/dist/cjs/components/Grid.js +8 -14
  46. package/dist/cjs/components/Group.js +3 -10
  47. package/dist/cjs/components/HTMLContent.js +4 -10
  48. package/dist/cjs/components/HeroTitle.js +5 -19
  49. package/dist/cjs/components/Icon.js +5 -19
  50. package/dist/cjs/components/Image.js +4 -12
  51. package/dist/cjs/components/Input.js +4 -9
  52. package/dist/cjs/components/InputNumber.js +6 -20
  53. package/dist/cjs/components/InputPassword.js +6 -20
  54. package/dist/cjs/components/Label.js +2 -16
  55. package/dist/cjs/components/Link.js +6 -14
  56. package/dist/cjs/components/List.js +8 -16
  57. package/dist/cjs/components/Loader.js +3 -11
  58. package/dist/cjs/components/Logo.js +8 -18
  59. package/dist/cjs/components/MenuItem.js +5 -19
  60. package/dist/cjs/components/Modal.js +7 -21
  61. package/dist/cjs/components/ModalSheetBottom.js +5 -19
  62. package/dist/cjs/components/Notification.js +11 -25
  63. package/dist/cjs/components/Overlay.js +3 -10
  64. package/dist/cjs/components/Pagination.js +8 -24
  65. package/dist/cjs/components/Radio.js +5 -13
  66. package/dist/cjs/components/RangeSlider.js +4 -10
  67. package/dist/cjs/components/Response.js +10 -24
  68. package/dist/cjs/components/SVGContent.js +5 -14
  69. package/dist/cjs/components/ScrollOnDrag.js +4 -10
  70. package/dist/cjs/components/ScrollToView.js +4 -10
  71. package/dist/cjs/components/Search.js +7 -21
  72. package/dist/cjs/components/Segmented.js +6 -20
  73. package/dist/cjs/components/Select.js +5 -20
  74. package/dist/cjs/components/Swiper.js +6 -20
  75. package/dist/cjs/components/Switch.js +5 -13
  76. package/dist/cjs/components/Tab.js +8 -23
  77. package/dist/cjs/components/Text.js +6 -14
  78. package/dist/cjs/components/Textarea.js +5 -10
  79. package/dist/cjs/components/Tile.js +5 -19
  80. package/dist/cjs/components/Title.js +5 -19
  81. package/dist/cjs/components/Tooltip.js +5 -19
  82. package/dist/cjs/components/Video.js +5 -9
  83. package/dist/cjs/components/Warning.js +5 -19
  84. package/dist/cjs/context/Notifications.js +16 -188
  85. package/dist/cjs/context/UIContext.js +14 -71
  86. package/dist/cjs/context/UrlAssetPrefix.js +15 -13
  87. package/dist/cjs/hoc/urlWithAssetPrefix.js +14 -73
  88. package/dist/cjs/hooks/useAppearanceConfig/useAppearanceConfig.js +14 -25
  89. package/dist/cjs/hooks/useAppearanceConfig.js +12 -2
  90. package/dist/cjs/hooks/useDevicePropsGenerator/useDevicePropsGenerator.js +10 -124
  91. package/dist/cjs/hooks/useDevicePropsGenerator.js +6 -9
  92. package/dist/cjs/hooks/useDeviceTargetClass.js +8 -4
  93. package/dist/cjs/hooks/useMediaQueries/useMediaQueries.js +13 -116
  94. package/dist/cjs/hooks/useMediaQueries.js +11 -2
  95. package/dist/cjs/hooks/useStyles/styleAttributes.js +15 -168
  96. package/dist/cjs/hooks/useStyles/useStyles.js +10 -196
  97. package/dist/cjs/hooks/useStyles.js +7 -10
  98. package/dist/cjs/hooks.js +15 -6
  99. package/dist/cjs/utils/mergeAppearanceKeys.js +15 -15
  100. package/dist/cjs/utils/setViewportProperty.js +15 -5
  101. package/dist/cjs/utils.js +14 -4
  102. package/dist/components/Accordion.js +1 -16
  103. package/dist/components/Avatar.js +4 -18
  104. package/dist/components/AvatarStack.js +4 -18
  105. package/dist/components/Badge/index.js +1 -1
  106. package/dist/components/Badge.js +2 -16
  107. package/dist/components/Breadcrumbs.js +1 -15
  108. package/dist/components/Button.js +4 -18
  109. package/dist/components/Cell.js +2 -16
  110. package/dist/components/Checkbox.js +4 -12
  111. package/dist/components/Checkmark.js +1 -15
  112. package/dist/components/Chips.js +2 -16
  113. package/dist/components/Choice.js +2 -16
  114. package/dist/components/Code.js +3 -8
  115. package/dist/components/CookiesWarning.js +4 -18
  116. package/dist/components/Dadata.js +4 -9
  117. package/dist/components/DatePeriod.js +12 -27
  118. package/dist/components/DatePicker.js +7 -21
  119. package/dist/components/Divider.js +3 -11
  120. package/dist/components/Dot.js +2 -8
  121. package/dist/components/Drawer.js +3 -18
  122. package/dist/components/Dropdown.js +1 -17
  123. package/dist/components/Dropzone.js +7 -21
  124. package/dist/components/Flex.js +2 -8
  125. package/dist/components/Grid.js +2 -8
  126. package/dist/components/Group.js +3 -10
  127. package/dist/components/HTMLContent.js +2 -8
  128. package/dist/components/HeroTitle.js +1 -15
  129. package/dist/components/Icon.js +2 -16
  130. package/dist/components/Image.js +4 -12
  131. package/dist/components/Input.js +4 -9
  132. package/dist/components/InputNumber.js +4 -18
  133. package/dist/components/InputPassword/index.js +1 -1
  134. package/dist/components/InputPassword.js +3 -17
  135. package/dist/components/Label.js +2 -16
  136. package/dist/components/Link/index.js +1 -1
  137. package/dist/components/Link.js +2 -10
  138. package/dist/components/List.js +2 -10
  139. package/dist/components/Loader.js +3 -11
  140. package/dist/components/Logo.js +3 -13
  141. package/dist/components/MenuItem.js +1 -15
  142. package/dist/components/Modal/index.js +1 -1
  143. package/dist/components/Modal.js +3 -17
  144. package/dist/components/ModalSheetBottom.js +1 -15
  145. package/dist/components/Notification/index.js +1 -1
  146. package/dist/components/Notification.js +5 -19
  147. package/dist/components/Overlay.js +3 -10
  148. package/dist/components/Pagination.js +1 -17
  149. package/dist/components/Radio.js +2 -10
  150. package/dist/components/RangeSlider.js +2 -8
  151. package/dist/components/Response.js +5 -19
  152. package/dist/components/SVGContent.js +2 -11
  153. package/dist/components/ScrollOnDrag.js +2 -8
  154. package/dist/components/ScrollToView.js +2 -8
  155. package/dist/components/Search/index.js +1 -1
  156. package/dist/components/Search.js +1 -15
  157. package/dist/components/Segmented.js +2 -16
  158. package/dist/components/Select.js +5 -20
  159. package/dist/components/Swiper.js +2 -16
  160. package/dist/components/Switch.js +2 -10
  161. package/dist/components/Tab.js +2 -17
  162. package/dist/components/Text.js +3 -11
  163. package/dist/components/Textarea.js +3 -8
  164. package/dist/components/Tile.js +1 -15
  165. package/dist/components/Title.js +2 -16
  166. package/dist/components/Tooltip.js +2 -16
  167. package/dist/components/Video.js +4 -8
  168. package/dist/components/Warning.js +1 -15
  169. package/dist/hooks/useAppearanceConfig.js +11 -1
  170. package/dist/hooks/useDevicePropsGenerator.js +5 -8
  171. package/dist/hooks/useMediaQueries.js +10 -1
  172. package/dist/hooks/useStyles.js +6 -9
  173. package/dist/hooks.js +12 -7
  174. package/dist/primitives_cjs_CnyJ13MJ.js +2715 -0
  175. package/dist/primitives_es_BjyEnscF.js +2672 -0
  176. package/dist/types/components/Accordion/index.d.ts +1 -0
  177. package/dist/types/components/Avatar/index.d.ts +1 -0
  178. package/dist/types/components/AvatarStack/index.d.ts +1 -0
  179. package/dist/types/components/Badge/index.d.ts +2 -1
  180. package/dist/types/components/Breadcrumbs/index.d.ts +1 -0
  181. package/dist/types/components/Button/Button.d.ts +45 -45
  182. package/dist/types/components/Button/index.d.ts +1 -0
  183. package/dist/types/components/Cell/index.d.ts +1 -0
  184. package/dist/types/components/Checkbox/index.d.ts +1 -0
  185. package/dist/types/components/Checkmark/index.d.ts +1 -0
  186. package/dist/types/components/Choice/index.d.ts +1 -0
  187. package/dist/types/components/Code/index.d.ts +1 -0
  188. package/dist/types/components/CookiesWarning/index.d.ts +1 -0
  189. package/dist/types/components/Dadata/index.d.ts +1 -0
  190. package/dist/types/components/DatePeriod/index.d.ts +1 -0
  191. package/dist/types/components/DatePicker/index.d.ts +1 -0
  192. package/dist/types/components/Divider/index.d.ts +1 -0
  193. package/dist/types/components/Dot/index.d.ts +1 -0
  194. package/dist/types/components/Drawer/index.d.ts +1 -0
  195. package/dist/types/components/Dropdown/index.d.ts +1 -0
  196. package/dist/types/components/Dropzone/index.d.ts +1 -0
  197. package/dist/types/components/Flex/index.d.ts +1 -0
  198. package/dist/types/components/Grid/index.d.ts +1 -0
  199. package/dist/types/components/Group/Group.d.ts +5 -5
  200. package/dist/types/components/Group/index.d.ts +1 -0
  201. package/dist/types/components/HTMLContent/index.d.ts +1 -0
  202. package/dist/types/components/HeroTitle/index.d.ts +1 -0
  203. package/dist/types/components/Icon/Icon.d.ts +2 -2
  204. package/dist/types/components/Icon/index.d.ts +1 -0
  205. package/dist/types/components/Image/index.d.ts +1 -0
  206. package/dist/types/components/Input/index.d.ts +1 -0
  207. package/dist/types/components/InputPassword/index.d.ts +2 -1
  208. package/dist/types/components/Label/index.d.ts +1 -0
  209. package/dist/types/components/Link/index.d.ts +2 -1
  210. package/dist/types/components/List/index.d.ts +1 -0
  211. package/dist/types/components/Loader/index.d.ts +1 -0
  212. package/dist/types/components/Logo/index.d.ts +1 -0
  213. package/dist/types/components/MenuItem/index.d.ts +1 -0
  214. package/dist/types/components/Modal/Modal.d.ts +16 -16
  215. package/dist/types/components/Modal/index.d.ts +2 -1
  216. package/dist/types/components/ModalSheetBottom/ModalSheetBottom.d.ts +7 -7
  217. package/dist/types/components/ModalSheetBottom/index.d.ts +1 -0
  218. package/dist/types/components/Notification/index.d.ts +2 -1
  219. package/dist/types/components/Overlay/index.d.ts +1 -0
  220. package/dist/types/components/Pagination/index.d.ts +1 -0
  221. package/dist/types/components/Radio/index.d.ts +1 -0
  222. package/dist/types/components/RangeSlider/index.d.ts +1 -0
  223. package/dist/types/components/Response/Response.d.ts +33 -33
  224. package/dist/types/components/Response/index.d.ts +1 -0
  225. package/dist/types/components/SVGContent/SVGContent.d.ts +1 -1
  226. package/dist/types/components/SVGContent/index.d.ts +1 -0
  227. package/dist/types/components/ScrollOnDrag/index.d.ts +1 -0
  228. package/dist/types/components/ScrollToView/index.d.ts +1 -0
  229. package/dist/types/components/Scrollbar/index.d.ts +1 -0
  230. package/dist/types/components/Search/SearchInput.d.ts +19 -19
  231. package/dist/types/components/Search/index.d.ts +2 -1
  232. package/dist/types/components/Segmented/index.d.ts +1 -0
  233. package/dist/types/components/Select/index.d.ts +1 -0
  234. package/dist/types/components/Swiper/index.d.ts +1 -0
  235. package/dist/types/components/Switch/Switch.d.ts +4 -4
  236. package/dist/types/components/Switch/index.d.ts +1 -0
  237. package/dist/types/components/Tab/index.d.ts +1 -0
  238. package/dist/types/components/Text/index.d.ts +1 -0
  239. package/dist/types/components/Textarea/index.d.ts +1 -0
  240. package/dist/types/components/Tile/index.d.ts +1 -0
  241. package/dist/types/components/Title/index.d.ts +1 -0
  242. package/dist/types/components/Tooltip/Tooltip.d.ts +6 -6
  243. package/dist/types/components/Tooltip/index.d.ts +1 -0
  244. package/dist/types/components/Video/index.d.ts +1 -0
  245. package/dist/types/components/Warning/index.d.ts +1 -0
  246. package/dist/utils.js +12 -2
  247. package/package.json +1 -1
  248. package/dist/Divider_cjs_C5Ou2Kqa.js +0 -104
  249. package/dist/Divider_es_D2snK_vn.js +0 -100
  250. package/dist/DropdownItem_cjs_k28TIoDU.js +0 -230
  251. package/dist/DropdownItem_es_DjPgbwtU.js +0 -225
  252. package/dist/Icon_cjs_DTvdhr8B.js +0 -1099
  253. package/dist/Icon_es_kewxGRUB.js +0 -1086
  254. package/dist/Link_cjs_Dn7UhCYe.js +0 -277
  255. package/dist/Link_es_BDAmhIzd.js +0 -272
  256. package/dist/Text_cjs_erTy2pUN.js +0 -68
  257. package/dist/Text_es_DVNvU0m0.js +0 -64
@@ -1,225 +0,0 @@
1
- import { jsxs, jsx } from 'react/jsx-runtime';
2
- import React, { useRef, useState, useCallback, useEffect } from 'react';
3
- import clsx from 'clsx';
4
- import { useAppearanceConfig } from './hooks/useAppearanceConfig/useAppearanceConfig.js';
5
- import { useDevicePropsGenerator } from './hooks/useDevicePropsGenerator/useDevicePropsGenerator.js';
6
- import { useStyles } from './hooks/useStyles/useStyles.js';
7
- import { I as Icon, B as Badge } from './Icon_es_kewxGRUB.js';
8
- import { D as Divider } from './Divider_es_D2snK_vn.js';
9
- import { T as Text } from './Text_es_DVNvU0m0.js';
10
-
11
- const dropdownAppearanceAccent = {
12
- accentPrimary: {
13
- fill: 'accentPrimary',
14
- fillActive: 'accentActivePrimary',
15
- fillActiveHover: 'accentActiveHoverPrimary',
16
- fillHover: 'accentHoverPrimary',
17
- labelTextColor: 'accentTextPrimary',
18
- labelTextColorActive: 'accentTextPrimary',
19
- labelTextColorActiveHover: 'accentTextPrimary',
20
- labelTextColorHover: 'accentTextPrimary',
21
- badgeAppearance: 'surfacePrimary',
22
- dividerFill: 'surfaceTertiary',
23
- emptyMessageTextColor: 'accentTextPrimary',
24
- iconAfterFillIcon: 'accentItemPrimary',
25
- iconBeforeFillIcon: 'accentItemPrimary',
26
- },
27
- accentSecondary: {
28
- fill: 'accentPrimary',
29
- fillHover: 'accentHoverPrimary',
30
- labelTextColor: 'accentTextSecondary',
31
- labelTextColorHover: 'accentTextSecondary',
32
- },
33
- };
34
-
35
- const dropdownAppearanceShape = {
36
- circular: {
37
- shape: 'circular',
38
- },
39
- rounded: {
40
- shape: 'rounded',
41
- },
42
- roundedXL: {
43
- shape: 'rounded',
44
- shapeStrength: '2m',
45
- },
46
- roundedL: {
47
- shape: 'rounded',
48
- shapeStrength: '1_5m',
49
- },
50
- roundedM: {
51
- shape: 'rounded',
52
- shapeStrength: '1m',
53
- },
54
- roundedS: {
55
- shape: 'rounded',
56
- shapeStrength: '0_5m',
57
- },
58
- };
59
-
60
- const dropdownAppearanceSize = {
61
- sizeL: {
62
- size: 'l',
63
- labelTextSize: 'm',
64
- badgeSize: 'xs',
65
- badgeTextSize: 'xs',
66
- dividerSize: 's',
67
- emptyMessageTextSize: 'm',
68
- iconAfterFillSize: '24',
69
- iconAfterSize: '24',
70
- iconBeforeFillSize: '24',
71
- iconBeforeSize: '24',
72
- },
73
- sizeS: {
74
- size: 's',
75
- labelTextSize: 's',
76
- badgeSize: 'xs',
77
- badgeTextSize: 'xs',
78
- dividerSize: 's',
79
- emptyMessageTextSize: 'm',
80
- iconAfterFillSize: '16',
81
- iconAfterSize: '16',
82
- iconBeforeFillSize: '16',
83
- iconBeforeSize: '16',
84
- },
85
- sizeXS: {
86
- size: 'xs',
87
- labelTextSize: 'xs',
88
- badgeSize: 'xs',
89
- badgeTextSize: 'xs',
90
- dividerSize: 's',
91
- emptyMessageTextSize: 'xs',
92
- iconAfterFillSize: '12',
93
- iconAfterSize: '12',
94
- iconBeforeFillSize: '12',
95
- iconBeforeSize: '12',
96
- },
97
- };
98
-
99
- const dropdownAppearanceStyle = {
100
- solid: {
101
- borderColor: 'none',
102
- },
103
- outlined: {
104
- fill: 'none',
105
- },
106
- full: {},
107
- ghost: {
108
- fill: 'none',
109
- borderColor: 'none',
110
- },
111
- };
112
-
113
- const dropdownAppearanceSurface = {
114
- surfacePrimary: {
115
- fill: 'surfacePrimary',
116
- fillActive: 'surfaceActivePrimary',
117
- fillHover: 'surfaceHoverPrimary',
118
- labelTextColor: 'surfaceTextPrimary',
119
- labelTextColorActive: 'surfaceTextPrimary',
120
- labelTextColorActiveHover: 'surfaceTextPrimary',
121
- labelTextColorHover: 'surfaceTextPrimary',
122
- badgeAppearance: 'accentPrimary',
123
- dividerFill: 'surfaceTertiary',
124
- emptyMessageTextColor: 'surfaceTextPrimary',
125
- iconAfterFillIcon: 'surfaceItemPrimary',
126
- iconBeforeFillIcon: 'surfaceItemPrimary',
127
- },
128
- surfaceQuaternary: {
129
- fill: 'surfaceQuaternary',
130
- fillHover: 'surfaceHoverQuaternary',
131
- labelTextColor: 'surfaceTextPrimary',
132
- },
133
- surfaceSecondary: {
134
- fill: 'surfaceSecondary',
135
- fillHover: 'surfaceHoverSecondary',
136
- labelTextColor: 'surfaceTextPrimary',
137
- },
138
- surfaceTertiary: {
139
- fill: 'surfaceTertiary',
140
- fillHover: 'surfaceHoverTertiary',
141
- labelTextColor: 'surfaceTextPrimary',
142
- },
143
- };
144
-
145
- const dropdownAppearance = {
146
- ...dropdownAppearanceSurface,
147
- ...dropdownAppearanceStyle,
148
- ...dropdownAppearanceShape,
149
- ...dropdownAppearanceAccent,
150
- ...dropdownAppearanceSize,
151
- };
152
-
153
- const dropdownConfig = {
154
- appearance: dropdownAppearance};
155
- function Dropdown(props) {
156
- const { appearance, className, dataTestId, dataTour, animationClose = 'dropdown_animation_close', animationOpen = 'dropdown_animation_open', dropdownList, showDivider, before, after, isSkeleton, isOpen, setIsOpen, onClickItem, children, } = props;
157
- const dropdownRef = useRef(null);
158
- const appearanceConfig = useAppearanceConfig(appearance, dropdownConfig);
159
- const [animationState, setAnimationState] = useState({
160
- className: '',
161
- });
162
- const onAnimationEnd = useCallback(() => {
163
- setAnimationState((prevState) => ({
164
- className: isOpen ? prevState.className : '',
165
- }));
166
- }, [isOpen]);
167
- useEffect(() => {
168
- if (animationOpen && animationClose) {
169
- // eslint-disable-next-line react-hooks/set-state-in-effect
170
- setAnimationState(() => ({
171
- className: isOpen ? animationOpen : animationClose,
172
- }));
173
- }
174
- }, [isOpen, animationOpen, animationClose]);
175
- useEffect(() => {
176
- function onClickWindow(event) {
177
- const dropdownElement = dropdownRef.current;
178
- if (dropdownElement && animationOpen) {
179
- const isContainsTarget = dropdownElement.contains(event.target);
180
- const hasOpenClass = dropdownElement.classList.contains(animationOpen);
181
- if (!isContainsTarget && hasOpenClass) {
182
- setIsOpen(false);
183
- }
184
- }
185
- }
186
- window.addEventListener('click', onClickWindow);
187
- return () => {
188
- window.removeEventListener('click', onClickWindow);
189
- };
190
- }, [animationOpen, setIsOpen]);
191
- const propsGenerator = useDevicePropsGenerator(props, appearanceConfig);
192
- const { alignmentClass, fillClass, elevationClass, shapeClass, shapeStrengthClass, } = propsGenerator;
193
- const { styles } = useStyles(props);
194
- return (jsxs("div", { className: clsx(className, 'dropdown', alignmentClass && `alignment_${alignmentClass}`, fillClass && `fill_${fillClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, elevationClass && `elevation_${elevationClass}`, isOpen ? 'dropdown_state_open' : 'dropdown_state_close', animationState.className), ref: dropdownRef, "data-testid": dataTestId, "data-tour": dataTour, style: styles, children: [before, (children || dropdownList) && (jsxs("div", { className: clsx('dropdown__wrapper'), onAnimationEnd: onAnimationEnd, children: [dropdownList?.map((item) => (jsx(DropdownItem, { appearance: appearance, label: item.label, badgeValue: item.badgeValue, emptyMessage: item.emptyMessage, iconAfter: item.iconAfter, iconBefore: item.iconBefore, iconSrc: item.icon, showDivider: showDivider, isActive: item.isActive, isSkeleton: isSkeleton, onClick: item.onClick || ((event) => onClickItem?.(item, event)) }, item.key))), children] })), after] }));
195
- }
196
-
197
- const dropdownItemAppearance = {
198
- ...dropdownAppearanceSurface,
199
- ...dropdownAppearanceStyle,
200
- ...dropdownAppearanceShape,
201
- ...dropdownAppearanceAccent,
202
- ...dropdownAppearanceSize,
203
- };
204
-
205
- const dropdownItemConfig = {
206
- appearance: dropdownItemAppearance,
207
- setAppearance: (appearanceConfig) => {
208
- dropdownItemConfig.appearance = appearanceConfig;
209
- },
210
- };
211
- function DropdownItem(props) {
212
- const { appearance, className, dataTestId, dataTour, label, desc, badgeValue, emptyMessage, showDivider, before, after, isActive, isDisabled, isSkeleton, isHover, onClick, onMouseEnter, children, } = props;
213
- const appearanceConfig = useAppearanceConfig(appearance, dropdownItemConfig);
214
- const propsGenerator = useDevicePropsGenerator(props, appearanceConfig);
215
- const { directionClass, justifyContentClass, fillActiveClass, fillActiveHoverClass, fillClass, fillDisabledClass, fillHoverClass, labelTextAlign, labelTextColor, labelTextColorActive, labelTextColorActiveHover, labelTextColorHover, labelTextSize, labelTextStyle, labelTextWeight, labelTextWrap, descTextColor, descTextColorHover, descTextGradient, descTextSize, descTextStyle, descTextWeight, descTextWrap, badgeAppearance, badgeShape, badgeSize, badgeTextColor, badgeTextSize, dividerDirection, dividerFill, dividerSize, emptyMessageTextColor, emptyMessageTextColorHover, emptyMessageTextSize, emptyMessageTextStyle, emptyMessageTextWeight, emptyMessageTextWrap, iconAfter, iconAfterFill, iconAfterFillIcon, iconAfterFillSize, iconAfterShape, iconAfterSize, iconAfterSrc, iconBadgeAppearance, iconBadgeShape, iconBadgeSize, iconBadgeTextColor, iconBadgeTextSize, iconBadgeValue, iconBefore, iconBeforeFill, iconBeforeFillIcon, iconBeforeFillSize, iconBeforeShape, iconBeforeSize, iconBeforeSrc, shapeClass, shapeStrengthClass, sizeClass, widthClass, } = propsGenerator;
216
- const { styles: dropdownItem } = useStyles(props);
217
- return (jsxs("div", { className: clsx('dropdown__item', isActive && 'dropdown__item_state_active', isHover && 'dropdown__item_state_hover', directionClass && `dropdown__item_direction_${directionClass}`, className, !isActive
218
- ? fillClass && `fill_${fillClass}`
219
- : fillActiveClass && `fill_active_${fillActiveClass}`, !isActive
220
- ? fillHoverClass && `fill_hover_${fillHoverClass}`
221
- : fillActiveHoverClass && `fill_active_hover_${fillActiveHoverClass}`, fillDisabledClass && `fill_disabled_${fillDisabledClass}`, sizeClass && `dropdown__item_size_${sizeClass}`, shapeClass && `shape_${shapeClass}`, shapeStrengthClass && `shape-strength_${shapeStrengthClass}`, widthClass && `dropdown__item_width_${widthClass}`, isDisabled && `dropdown__item_state_disabled`, onClick && 'cursor_type_pointer', isSkeleton && `dropdown__item_skeleton`, justifyContentClass &&
222
- `dropdown__item_justify-content_${justifyContentClass}`), "data-testid": dataTestId, "data-tour": dataTour, style: dropdownItem, onClick: onClick, onMouseEnter: onMouseEnter, children: [jsx("div", { className: "dropdown__item-wrapper", children: jsxs(React.Fragment, { children: [before, (iconBefore || iconBeforeSrc) && (jsx(Icon, { className: clsx('dropdown__item_before', iconBadgeValue && 'dropdown__item_before-badge'), fill: iconBeforeFill, fillSize: iconBeforeFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'dropdown__item_before_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconBeforeFillIcon, iconSize: iconBeforeSize, imageSrc: iconBeforeSrc, shape: iconBeforeShape, SvgImage: iconBefore })), children || (jsxs(React.Fragment, { children: [label && (jsx(Text, { className: "dropdown__item-label", size: labelTextSize, textAlign: labelTextAlign, textColor: labelTextColor, textColorActive: labelTextColorActive, textColorActiveHover: labelTextColorActiveHover, textColorHover: labelTextColorHover, textStyle: labelTextStyle, textWeight: labelTextWeight, textWrap: labelTextWrap, isActive: isActive, children: label })), badgeValue && (jsx(Badge, { appearance: badgeAppearance, size: badgeSize, textColor: badgeTextColor, textSize: badgeTextSize, shape: badgeShape, value: badgeValue })), desc && (jsx(Text, { className: "dropdown__item-desc", size: descTextSize, textColor: descTextColor, textColorGradient: descTextGradient, textColorHover: descTextColorHover, textStyle: descTextStyle, textWeight: descTextWeight, textWrap: descTextWrap, isActive: isActive, children: desc })), emptyMessage && (jsx(Text, { className: "dropdown__item", size: emptyMessageTextSize, textColor: emptyMessageTextColor, textColorHover: emptyMessageTextColorHover, textStyle: emptyMessageTextStyle, textWeight: emptyMessageTextWeight, textWrap: emptyMessageTextWrap, isActive: isActive, children: emptyMessage }))] })), after, (iconAfter || iconAfterSrc) && (jsx(Icon, { className: clsx('dropdown__item_after', iconBadgeValue && 'dropdown__item_after-badge'), fill: iconAfterFill, fillSize: iconAfterFillSize, badgeAppearance: iconBadgeAppearance, badgeClass: 'dropdown__item_after_badge', badgeShape: iconBadgeShape, badgeSize: iconBadgeSize, badgeTextColor: iconBadgeTextColor, badgeTextSize: iconBadgeTextSize, badgeValue: iconBadgeValue, iconFill: iconAfterFillIcon, iconSize: iconAfterSize, imageSrc: iconAfterSrc, shape: iconAfterShape, SvgImage: iconAfter }))] }) }), showDivider && (jsx(Divider, { width: "fill", direction: dividerDirection, size: dividerSize, fill: dividerFill }))] }));
223
- }
224
-
225
- export { Dropdown as D, DropdownItem as a, dropdownItemConfig as b, dropdownItemAppearance as d };