@alfalab/core-components-select 19.0.6 → 19.1.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 (306) hide show
  1. package/components/arrow/index.css +4 -4
  2. package/components/arrow/index.module.css.js +1 -1
  3. package/components/base-checkmark/Component.d.ts +2 -2
  4. package/components/base-checkmark/Component.js +14 -7
  5. package/components/base-checkmark/Component.js.map +1 -1
  6. package/components/base-checkmark/index.css +32 -5
  7. package/components/base-checkmark/index.module.css.js +1 -1
  8. package/components/base-checkmark/index.module.css.js.map +1 -1
  9. package/components/base-option/Component.js +4 -16
  10. package/components/base-option/Component.js.map +1 -1
  11. package/components/base-option/index.css +14 -20
  12. package/components/base-option/index.module.css.js +1 -1
  13. package/components/base-option/index.module.css.js.map +1 -1
  14. package/components/base-select/index.css +11 -11
  15. package/components/base-select/index.module.css.js +1 -1
  16. package/components/base-select/mobile.css +11 -11
  17. package/components/base-select/mobile.module.css.js +1 -1
  18. package/components/checkmark/Component.d.ts +1 -1
  19. package/components/checkmark/Component.js +3 -4
  20. package/components/checkmark/Component.js.map +1 -1
  21. package/components/checkmark/index.css +23 -31
  22. package/components/checkmark/index.module.css.js +1 -1
  23. package/components/checkmark/index.module.css.js.map +1 -1
  24. package/components/checkmark-mobile/Component.d.ts +1 -1
  25. package/components/checkmark-mobile/Component.js +2 -2
  26. package/components/checkmark-mobile/Component.js.map +1 -1
  27. package/components/checkmark-mobile/index.css +14 -7
  28. package/components/checkmark-mobile/index.module.css.js +1 -1
  29. package/components/checkmark-mobile/index.module.css.js.map +1 -1
  30. package/components/clear-button/index.css +4 -4
  31. package/components/clear-button/index.module.css.js +1 -1
  32. package/components/field/Component.js +6 -23
  33. package/components/field/Component.js.map +1 -1
  34. package/components/field/index.css +13 -13
  35. package/components/field/index.module.css.js +1 -1
  36. package/components/footer/index.css +4 -4
  37. package/components/footer/index.module.css.js +1 -1
  38. package/components/optgroup/index.css +4 -4
  39. package/components/optgroup/index.module.css.js +1 -1
  40. package/components/option/Component.js +8 -4
  41. package/components/option/Component.js.map +1 -1
  42. package/components/option/desktop/index.css +19 -19
  43. package/components/option/desktop/index.module.css.js +1 -1
  44. package/components/option/mobile/index.css +16 -16
  45. package/components/option/mobile/index.module.css.js +1 -1
  46. package/components/options-list/index.css +13 -13
  47. package/components/options-list/index.module.css.js +1 -1
  48. package/components/search/index.css +1 -1
  49. package/components/search/index.module.css.js +1 -1
  50. package/components/virtual-options-list/index.css +13 -13
  51. package/components/virtual-options-list/index.module.css.js +1 -1
  52. package/cssm/components/base-checkmark/Component.d.ts +2 -2
  53. package/cssm/components/base-checkmark/Component.js +14 -7
  54. package/cssm/components/base-checkmark/Component.js.map +1 -1
  55. package/cssm/components/base-checkmark/index.module.css +29 -2
  56. package/cssm/components/base-option/Component.js +4 -16
  57. package/cssm/components/base-option/Component.js.map +1 -1
  58. package/cssm/components/base-option/index.module.css +0 -6
  59. package/cssm/components/checkmark/Component.d.ts +1 -1
  60. package/cssm/components/checkmark/Component.js +4 -5
  61. package/cssm/components/checkmark/Component.js.map +1 -1
  62. package/cssm/components/checkmark/index.module.css +16 -24
  63. package/cssm/components/checkmark-mobile/Component.d.ts +1 -1
  64. package/cssm/components/checkmark-mobile/Component.js +2 -2
  65. package/cssm/components/checkmark-mobile/Component.js.map +1 -1
  66. package/cssm/components/checkmark-mobile/index.module.css +10 -3
  67. package/cssm/components/field/Component.js +6 -23
  68. package/cssm/components/field/Component.js.map +1 -1
  69. package/cssm/components/option/Component.js +8 -4
  70. package/cssm/components/option/Component.js.map +1 -1
  71. package/cssm/desktop/Component.desktop.js +0 -2
  72. package/cssm/desktop/Component.desktop.js.map +1 -1
  73. package/cssm/mobile/Component.mobile.js +2 -3
  74. package/cssm/mobile/Component.mobile.js.map +1 -1
  75. package/cssm/presets/useLazyLoading/hook.js +0 -2
  76. package/cssm/presets/useLazyLoading/hook.js.map +1 -1
  77. package/cssm/presets/useSelectWithApply/hook.d.ts +7 -1
  78. package/cssm/presets/useSelectWithApply/hook.js +9 -8
  79. package/cssm/presets/useSelectWithApply/hook.js.map +1 -1
  80. package/cssm/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +1 -0
  81. package/cssm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +3 -3
  82. package/cssm/presets/useSelectWithApply/options-list-with-apply/header/Component.js.map +1 -1
  83. package/cssm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css +5 -1
  84. package/cssm/presets/useSelectWithLoading/hook.js +0 -2
  85. package/cssm/presets/useSelectWithLoading/hook.js.map +1 -1
  86. package/cssm/typings.d.ts +9 -0
  87. package/desktop/Component.desktop.js +0 -2
  88. package/desktop/Component.desktop.js.map +1 -1
  89. package/esm/components/arrow/index.css +4 -4
  90. package/esm/components/arrow/index.module.css.js +1 -1
  91. package/esm/components/base-checkmark/Component.d.ts +2 -2
  92. package/esm/components/base-checkmark/Component.js +14 -7
  93. package/esm/components/base-checkmark/Component.js.map +1 -1
  94. package/esm/components/base-checkmark/index.css +32 -5
  95. package/esm/components/base-checkmark/index.module.css.js +1 -1
  96. package/esm/components/base-checkmark/index.module.css.js.map +1 -1
  97. package/esm/components/base-option/Component.js +4 -16
  98. package/esm/components/base-option/Component.js.map +1 -1
  99. package/esm/components/base-option/index.css +14 -20
  100. package/esm/components/base-option/index.module.css.js +1 -1
  101. package/esm/components/base-option/index.module.css.js.map +1 -1
  102. package/esm/components/base-select/index.css +11 -11
  103. package/esm/components/base-select/index.module.css.js +1 -1
  104. package/esm/components/base-select/mobile.css +11 -11
  105. package/esm/components/base-select/mobile.module.css.js +1 -1
  106. package/esm/components/checkmark/Component.d.ts +1 -1
  107. package/esm/components/checkmark/Component.js +3 -4
  108. package/esm/components/checkmark/Component.js.map +1 -1
  109. package/esm/components/checkmark/index.css +23 -31
  110. package/esm/components/checkmark/index.module.css.js +1 -1
  111. package/esm/components/checkmark/index.module.css.js.map +1 -1
  112. package/esm/components/checkmark-mobile/Component.d.ts +1 -1
  113. package/esm/components/checkmark-mobile/Component.js +2 -2
  114. package/esm/components/checkmark-mobile/Component.js.map +1 -1
  115. package/esm/components/checkmark-mobile/index.css +14 -7
  116. package/esm/components/checkmark-mobile/index.module.css.js +1 -1
  117. package/esm/components/checkmark-mobile/index.module.css.js.map +1 -1
  118. package/esm/components/clear-button/index.css +4 -4
  119. package/esm/components/clear-button/index.module.css.js +1 -1
  120. package/esm/components/field/Component.js +8 -25
  121. package/esm/components/field/Component.js.map +1 -1
  122. package/esm/components/field/index.css +13 -13
  123. package/esm/components/field/index.module.css.js +1 -1
  124. package/esm/components/footer/index.css +4 -4
  125. package/esm/components/footer/index.module.css.js +1 -1
  126. package/esm/components/optgroup/index.css +4 -4
  127. package/esm/components/optgroup/index.module.css.js +1 -1
  128. package/esm/components/option/Component.js +8 -4
  129. package/esm/components/option/Component.js.map +1 -1
  130. package/esm/components/option/desktop/index.css +19 -19
  131. package/esm/components/option/desktop/index.module.css.js +1 -1
  132. package/esm/components/option/mobile/index.css +16 -16
  133. package/esm/components/option/mobile/index.module.css.js +1 -1
  134. package/esm/components/options-list/index.css +13 -13
  135. package/esm/components/options-list/index.module.css.js +1 -1
  136. package/esm/components/search/index.css +1 -1
  137. package/esm/components/search/index.module.css.js +1 -1
  138. package/esm/components/virtual-options-list/index.css +13 -13
  139. package/esm/components/virtual-options-list/index.module.css.js +1 -1
  140. package/esm/desktop/Component.desktop.js +0 -2
  141. package/esm/desktop/Component.desktop.js.map +1 -1
  142. package/esm/mobile/Component.mobile.js +2 -3
  143. package/esm/mobile/Component.mobile.js.map +1 -1
  144. package/esm/presets/useLazyLoading/hook.js +0 -2
  145. package/esm/presets/useLazyLoading/hook.js.map +1 -1
  146. package/esm/presets/useSelectWithApply/hook.d.ts +7 -1
  147. package/esm/presets/useSelectWithApply/hook.js +9 -8
  148. package/esm/presets/useSelectWithApply/hook.js.map +1 -1
  149. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  150. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
  151. package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +1 -0
  152. package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +3 -3
  153. package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js.map +1 -1
  154. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +8 -4
  155. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
  156. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js.map +1 -1
  157. package/esm/presets/useSelectWithLoading/hook.js +0 -2
  158. package/esm/presets/useSelectWithLoading/hook.js.map +1 -1
  159. package/esm/presets/useSelectWithLoading/index.css +1 -1
  160. package/esm/presets/useSelectWithLoading/index.module.css.js +1 -1
  161. package/esm/typings.d.ts +9 -0
  162. package/mobile/Component.mobile.js +2 -3
  163. package/mobile/Component.mobile.js.map +1 -1
  164. package/modern/components/arrow/index.css +4 -4
  165. package/modern/components/arrow/index.module.css.js +1 -1
  166. package/modern/components/base-checkmark/Component.d.ts +2 -2
  167. package/modern/components/base-checkmark/Component.js +10 -6
  168. package/modern/components/base-checkmark/Component.js.map +1 -1
  169. package/modern/components/base-checkmark/index.css +32 -5
  170. package/modern/components/base-checkmark/index.module.css.js +1 -1
  171. package/modern/components/base-checkmark/index.module.css.js.map +1 -1
  172. package/modern/components/base-option/Component.js +4 -15
  173. package/modern/components/base-option/Component.js.map +1 -1
  174. package/modern/components/base-option/index.css +14 -20
  175. package/modern/components/base-option/index.module.css.js +1 -1
  176. package/modern/components/base-option/index.module.css.js.map +1 -1
  177. package/modern/components/base-select/index.css +11 -11
  178. package/modern/components/base-select/index.module.css.js +1 -1
  179. package/modern/components/base-select/mobile.css +11 -11
  180. package/modern/components/base-select/mobile.module.css.js +1 -1
  181. package/modern/components/checkmark/Component.d.ts +1 -1
  182. package/modern/components/checkmark/Component.js +3 -4
  183. package/modern/components/checkmark/Component.js.map +1 -1
  184. package/modern/components/checkmark/index.css +23 -31
  185. package/modern/components/checkmark/index.module.css.js +1 -1
  186. package/modern/components/checkmark/index.module.css.js.map +1 -1
  187. package/modern/components/checkmark-mobile/Component.d.ts +1 -1
  188. package/modern/components/checkmark-mobile/Component.js +1 -1
  189. package/modern/components/checkmark-mobile/Component.js.map +1 -1
  190. package/modern/components/checkmark-mobile/index.css +14 -7
  191. package/modern/components/checkmark-mobile/index.module.css.js +1 -1
  192. package/modern/components/checkmark-mobile/index.module.css.js.map +1 -1
  193. package/modern/components/clear-button/index.css +4 -4
  194. package/modern/components/clear-button/index.module.css.js +1 -1
  195. package/modern/components/field/Component.js +8 -25
  196. package/modern/components/field/Component.js.map +1 -1
  197. package/modern/components/field/index.css +13 -13
  198. package/modern/components/field/index.module.css.js +1 -1
  199. package/modern/components/footer/index.css +4 -4
  200. package/modern/components/footer/index.module.css.js +1 -1
  201. package/modern/components/optgroup/index.css +4 -4
  202. package/modern/components/optgroup/index.module.css.js +1 -1
  203. package/modern/components/option/Component.js +5 -3
  204. package/modern/components/option/Component.js.map +1 -1
  205. package/modern/components/option/desktop/index.css +19 -19
  206. package/modern/components/option/desktop/index.module.css.js +1 -1
  207. package/modern/components/option/mobile/index.css +16 -16
  208. package/modern/components/option/mobile/index.module.css.js +1 -1
  209. package/modern/components/options-list/index.css +13 -13
  210. package/modern/components/options-list/index.module.css.js +1 -1
  211. package/modern/components/search/index.css +1 -1
  212. package/modern/components/search/index.module.css.js +1 -1
  213. package/modern/components/virtual-options-list/index.css +13 -13
  214. package/modern/components/virtual-options-list/index.module.css.js +1 -1
  215. package/modern/desktop/Component.desktop.js +0 -2
  216. package/modern/desktop/Component.desktop.js.map +1 -1
  217. package/modern/mobile/Component.mobile.js +2 -3
  218. package/modern/mobile/Component.mobile.js.map +1 -1
  219. package/modern/presets/useLazyLoading/hook.js +0 -2
  220. package/modern/presets/useLazyLoading/hook.js.map +1 -1
  221. package/modern/presets/useSelectWithApply/hook.d.ts +7 -1
  222. package/modern/presets/useSelectWithApply/hook.js +3 -1
  223. package/modern/presets/useSelectWithApply/hook.js.map +1 -1
  224. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  225. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
  226. package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +1 -0
  227. package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js +2 -2
  228. package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js.map +1 -1
  229. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +8 -4
  230. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
  231. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js.map +1 -1
  232. package/modern/presets/useSelectWithLoading/hook.js +0 -2
  233. package/modern/presets/useSelectWithLoading/hook.js.map +1 -1
  234. package/modern/presets/useSelectWithLoading/index.css +1 -1
  235. package/modern/presets/useSelectWithLoading/index.module.css.js +1 -1
  236. package/modern/typings.d.ts +9 -0
  237. package/moderncssm/components/base-checkmark/Component.d.ts +2 -2
  238. package/moderncssm/components/base-checkmark/Component.js +10 -6
  239. package/moderncssm/components/base-checkmark/Component.js.map +1 -1
  240. package/moderncssm/components/base-checkmark/index.module.css +32 -2
  241. package/moderncssm/components/base-option/Component.js +4 -15
  242. package/moderncssm/components/base-option/Component.js.map +1 -1
  243. package/moderncssm/components/base-option/index.module.css +0 -8
  244. package/moderncssm/components/checkmark/Component.d.ts +1 -1
  245. package/moderncssm/components/checkmark/Component.js +3 -4
  246. package/moderncssm/components/checkmark/Component.js.map +1 -1
  247. package/moderncssm/components/checkmark/index.module.css +19 -18
  248. package/moderncssm/components/checkmark-mobile/Component.d.ts +1 -1
  249. package/moderncssm/components/checkmark-mobile/Component.js +1 -1
  250. package/moderncssm/components/checkmark-mobile/Component.js.map +1 -1
  251. package/moderncssm/components/checkmark-mobile/index.module.css +8 -4
  252. package/moderncssm/components/field/Component.js +8 -25
  253. package/moderncssm/components/field/Component.js.map +1 -1
  254. package/moderncssm/components/option/Component.js +5 -3
  255. package/moderncssm/components/option/Component.js.map +1 -1
  256. package/moderncssm/desktop/Component.desktop.js +0 -2
  257. package/moderncssm/desktop/Component.desktop.js.map +1 -1
  258. package/moderncssm/mobile/Component.mobile.js +2 -3
  259. package/moderncssm/mobile/Component.mobile.js.map +1 -1
  260. package/moderncssm/presets/useLazyLoading/hook.js +0 -2
  261. package/moderncssm/presets/useLazyLoading/hook.js.map +1 -1
  262. package/moderncssm/presets/useSelectWithApply/hook.d.ts +7 -1
  263. package/moderncssm/presets/useSelectWithApply/hook.js +3 -1
  264. package/moderncssm/presets/useSelectWithApply/hook.js.map +1 -1
  265. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +1 -0
  266. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +2 -2
  267. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/Component.js.map +1 -1
  268. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css +6 -1
  269. package/moderncssm/presets/useSelectWithLoading/hook.js +0 -2
  270. package/moderncssm/presets/useSelectWithLoading/hook.js.map +1 -1
  271. package/moderncssm/typings.d.ts +9 -0
  272. package/package.json +8 -9
  273. package/presets/useLazyLoading/hook.js +0 -2
  274. package/presets/useLazyLoading/hook.js.map +1 -1
  275. package/presets/useSelectWithApply/hook.d.ts +7 -1
  276. package/presets/useSelectWithApply/hook.js +9 -8
  277. package/presets/useSelectWithApply/hook.js.map +1 -1
  278. package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  279. package/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css.js +1 -1
  280. package/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +1 -0
  281. package/presets/useSelectWithApply/options-list-with-apply/header/Component.js +3 -3
  282. package/presets/useSelectWithApply/options-list-with-apply/header/Component.js.map +1 -1
  283. package/presets/useSelectWithApply/options-list-with-apply/header/index.css +8 -4
  284. package/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js +1 -1
  285. package/presets/useSelectWithApply/options-list-with-apply/header/index.module.css.js.map +1 -1
  286. package/presets/useSelectWithLoading/hook.js +0 -2
  287. package/presets/useSelectWithLoading/hook.js.map +1 -1
  288. package/presets/useSelectWithLoading/index.css +1 -1
  289. package/presets/useSelectWithLoading/index.module.css.js +1 -1
  290. package/src/components/base-checkmark/Component.tsx +26 -9
  291. package/src/components/base-checkmark/index.module.css +30 -1
  292. package/src/components/base-option/Component.tsx +17 -27
  293. package/src/components/base-option/index.module.css +0 -8
  294. package/src/components/checkmark/Component.tsx +3 -13
  295. package/src/components/checkmark/index.module.css +17 -9
  296. package/src/components/checkmark-mobile/Component.tsx +2 -2
  297. package/src/components/checkmark-mobile/index.module.css +8 -4
  298. package/src/components/field/Component.tsx +12 -26
  299. package/src/components/option/Component.tsx +14 -17
  300. package/src/mobile/Component.mobile.tsx +2 -0
  301. package/src/presets/useSelectWithApply/hook.ts +9 -1
  302. package/src/presets/useSelectWithApply/options-list-with-apply/header/Component.tsx +4 -0
  303. package/src/presets/useSelectWithApply/options-list-with-apply/header/index.module.css +5 -1
  304. package/src/typings.ts +11 -0
  305. package/src/vars.css +3 -3
  306. package/typings.d.ts +9 -0
@@ -1,4 +1,4 @@
1
- .select__skeleton_1s7nq {
1
+ .select__skeleton_rw7xv {
2
2
  position: absolute;
3
3
  top: 50%;
4
4
  transform: translateY(-50%);
@@ -2,7 +2,7 @@
2
2
 
3
3
  require('./index.css');
4
4
 
5
- var styles = {"skeleton":"select__skeleton_1s7nq"};
5
+ var styles = {"skeleton":"select__skeleton_rw7xv"};
6
6
 
7
7
  module.exports = styles;
8
8
  //# sourceMappingURL=index.module.css.js.map
@@ -1,4 +1,4 @@
1
- import React from 'react';
1
+ import React, { type FC } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { Checkbox } from '@alfalab/core-components-checkbox';
@@ -8,27 +8,44 @@ import { type CheckmarkProps } from '../../typings';
8
8
 
9
9
  import styles from './index.module.css';
10
10
 
11
- export const BaseCheckmark = ({
11
+ export const BaseCheckmark: FC<CheckmarkProps> = ({
12
12
  selected,
13
13
  disabled = false,
14
14
  className,
15
15
  multiple,
16
16
  align = 'center',
17
- }: CheckmarkProps) => {
18
- const checkmarkClassNames = cn(styles.checkmark, styles[align], className, {
19
- [styles.single]: !multiple,
20
- [styles.selected]: selected,
21
- });
17
+ position = 'before',
18
+ content,
19
+ }) => {
20
+ const renderCheckmarkIcon = () => (
21
+ <CheckmarkMIcon
22
+ className={cn(styles.singleIcon, styles[position], {
23
+ [styles.selected]: selected,
24
+ })}
25
+ />
26
+ );
22
27
 
23
28
  return multiple ? (
24
29
  <Checkbox
30
+ block={true}
25
31
  checked={selected}
26
32
  disabled={disabled}
27
- className={checkmarkClassNames}
33
+ contentClassName={cn({ [styles.positionAfter]: position === 'after' })}
34
+ className={cn(styles.checkmark, styles[align], className, {
35
+ [styles.selected]: selected,
36
+ })}
28
37
  size={24}
38
+ position={position}
39
+ label={content}
29
40
  hiddenInput={true}
30
41
  />
31
42
  ) : (
32
- <CheckmarkMIcon className={checkmarkClassNames} />
43
+ <div className={cn(styles.container, styles[align], className)}>
44
+ {position === 'before' && renderCheckmarkIcon()}
45
+
46
+ <div className={styles.content}>{content}</div>
47
+
48
+ {position === 'after' && renderCheckmarkIcon()}
49
+ </div>
33
50
  );
34
51
  };
@@ -14,13 +14,42 @@
14
14
  }
15
15
  }
16
16
 
17
- .single {
17
+ .positionAfter {
18
+ margin-left: unset;
19
+ }
20
+
21
+ .container {
18
22
  display: flex;
19
23
  align-items: center;
20
24
  justify-content: center;
25
+ width: 100%;
26
+
27
+ &.start {
28
+ align-items: flex-start;
29
+ }
30
+
31
+ &.center {
32
+ align-items: center;
33
+ }
34
+ }
35
+
36
+ .singleIcon {
37
+ flex-shrink: 0;
21
38
  opacity: 0;
22
39
 
40
+ &.before {
41
+ margin-right: var(--gap-12);
42
+ }
43
+
44
+ &.after {
45
+ margin-left: var(--gap-12);
46
+ }
47
+
23
48
  &.selected {
24
49
  opacity: 1;
25
50
  }
26
51
  }
52
+
53
+ .content {
54
+ flex: 1;
55
+ }
@@ -24,27 +24,8 @@ export const BaseOption: FC<OptionProps> = ({
24
24
  }) => {
25
25
  const content = children || option.content || option.key;
26
26
  const { showCheckMark = true } = option;
27
-
28
27
  const isTextContent = !isValidElement(content);
29
-
30
- const renderCheckmark = () => {
31
- if (Checkmark && showCheckMark) {
32
- return (
33
- <Checkmark
34
- className={cn({
35
- [styles.checkmarkBeforeContent]: checkmarkPosition === 'before',
36
- [styles.checkmarkAfterContent]: checkmarkPosition === 'after',
37
- })}
38
- disabled={disabled}
39
- selected={selected}
40
- multiple={multiple}
41
- align={align}
42
- />
43
- );
44
- }
45
-
46
- return null;
47
- };
28
+ const showCheckmark = Checkmark && showCheckMark;
48
29
 
49
30
  return (
50
31
  <div
@@ -55,17 +36,26 @@ export const BaseOption: FC<OptionProps> = ({
55
36
  [styles.disabled]: disabled,
56
37
  [styles.textContent]: isTextContent,
57
38
  [styles.mobile]: mobile,
58
- [styles.checkmarkAfter]: !isTextContent && checkmarkPosition === 'after',
59
- [styles.checkmarkBefore]: !isTextContent && checkmarkPosition === 'before',
39
+ [styles.checkmarkAfter]:
40
+ showCheckmark && !isTextContent && checkmarkPosition === 'after',
41
+ [styles.checkmarkBefore]:
42
+ showCheckmark && !isTextContent && checkmarkPosition === 'before',
60
43
  })}
61
44
  data-test-id={dataTestId}
62
45
  aria-label={option?.value?.name}
63
46
  >
64
- {checkmarkPosition === 'before' && renderCheckmark()}
65
-
66
- <div className={cn(styles.content)}>{content}</div>
67
-
68
- {checkmarkPosition === 'after' && renderCheckmark()}
47
+ {showCheckmark ? (
48
+ <Checkmark
49
+ disabled={disabled}
50
+ selected={selected}
51
+ multiple={multiple}
52
+ align={align}
53
+ position={checkmarkPosition}
54
+ content={content}
55
+ />
56
+ ) : (
57
+ <div className={cn(styles.content)}>{content}</div>
58
+ )}
69
59
  </div>
70
60
  );
71
61
  };
@@ -70,14 +70,6 @@
70
70
  color: var(--select-option-disabled-color);
71
71
  }
72
72
 
73
- .checkmarkBeforeContent {
74
- margin-right: var(--gap-12);
75
- }
76
-
77
- .checkmarkAfterContent {
78
- margin-left: var(--gap-12);
79
- }
80
-
81
73
  .content {
82
74
  flex: 1;
83
75
  }
@@ -1,9 +1,7 @@
1
1
  import React, { useCallback } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
- import { Badge } from '@alfalab/core-components-badge';
5
4
  import { Checkbox, type CheckboxProps } from '@alfalab/core-components-checkbox';
6
- import { CheckmarkCircleMIcon } from '@alfalab/icons-glyph/CheckmarkCircleMIcon';
7
5
  import CheckmarkMIcon from '@alfalab/icons-glyph/CheckmarkMIcon';
8
6
 
9
7
  import { type CheckmarkProps } from '../../typings';
@@ -16,6 +14,7 @@ export const Checkmark = ({
16
14
  className,
17
15
  multiple,
18
16
  position = 'before',
17
+ content,
19
18
  }: CheckmarkProps) => {
20
19
  const single = !multiple;
21
20
 
@@ -32,17 +31,7 @@ export const Checkmark = ({
32
31
 
33
32
  return single ? (
34
33
  <div className={checkmarkClassNames}>
35
- {position === 'before' ? (
36
- <Badge
37
- className={styles.after}
38
- view='icon'
39
- size='m'
40
- iconColor='positive'
41
- content={<CheckmarkCircleMIcon className={styles.colorIcon} />}
42
- />
43
- ) : (
44
- <CheckmarkMIcon className={cn(styles.displayIcon)} />
45
- )}
34
+ <CheckmarkMIcon className={cn(styles.displayIcon)} />
46
35
  </div>
47
36
  ) : (
48
37
  <Checkbox
@@ -50,6 +39,7 @@ export const Checkmark = ({
50
39
  disabled={disabled}
51
40
  className={checkmarkClassNames}
52
41
  size={24}
42
+ label={content}
53
43
  onClick={handleCheckboxClick}
54
44
  />
55
45
  );
@@ -3,10 +3,13 @@
3
3
 
4
4
  .checkmark {
5
5
  flex-shrink: 0;
6
- margin: var(--select-checkmark-margin);
6
+
7
+ &.before {
8
+ display: var(--select-checkmark-before-display);
9
+ }
7
10
 
8
11
  &.after {
9
- margin: var(--select-checkmark-margin-after);
12
+ display: var(--select-checkmark-after-display);
10
13
  }
11
14
  }
12
15
 
@@ -15,9 +18,6 @@
15
18
  align-items: center;
16
19
  justify-content: center;
17
20
  opacity: var(--select-checkmark-unselected-opacity);
18
- background: var(--select-checkmark-background);
19
- background-size: cover;
20
- border-radius: var(--select-checkmark-border-radius);
21
21
  width: var(--select-checkmark-size);
22
22
  height: var(--select-checkmark-size);
23
23
 
@@ -26,13 +26,15 @@
26
26
  }
27
27
  }
28
28
 
29
- .before {
30
- display: var(--select-checkmark-before-display);
31
-
32
- &.multiple {
29
+ .multiple {
30
+ &.before {
33
31
  margin-right: var(--gap-12);
34
32
  display: var(--select-checkmark-before-display-multiple);
35
33
  }
34
+
35
+ &.after {
36
+ margin-left: var(--gap-12);
37
+ }
36
38
  }
37
39
 
38
40
  .after.after {
@@ -46,3 +48,9 @@
46
48
  .colorIcon {
47
49
  color: var(--color-light-status-positive);
48
50
  }
51
+
52
+ .displayIcon {
53
+ display: block;
54
+ width: 100%;
55
+ height: 100%;
56
+ }
@@ -7,9 +7,9 @@ import { type CheckmarkProps } from '../../typings';
7
7
 
8
8
  import styles from './index.module.css';
9
9
 
10
- export const Checkmark = ({ selected, className }: CheckmarkProps) => (
10
+ export const Checkmark = ({ selected, className, position = 'after' }: CheckmarkProps) => (
11
11
  <div
12
- className={cn(styles.checkmark, className, {
12
+ className={cn(styles.checkmark, className, styles[position], {
13
13
  [styles.selected]: selected,
14
14
  })}
15
15
  >
@@ -10,13 +10,17 @@
10
10
  height: 24px;
11
11
  opacity: 0;
12
12
 
13
- &:first-child {
14
- display: none;
15
- }
16
-
17
13
  &.selected {
18
14
  opacity: 1;
19
15
  }
16
+
17
+ &.before {
18
+ margin-right: var(--gap-8);
19
+ }
20
+
21
+ &.after {
22
+ margin-left: var(--gap-8);
23
+ }
20
24
  }
21
25
 
22
26
  .displayIcon {
@@ -1,8 +1,8 @@
1
- import React, { type ElementType, useCallback, useRef, useState } from 'react';
1
+ import React, { type ElementType, Fragment, useCallback, useRef, useState } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { type FormControlProps } from '@alfalab/core-components-form-control';
5
- import { getAddonsByPriority, LockIcon } from '@alfalab/core-components-input/shared';
5
+ import { LockIcon } from '@alfalab/core-components-input/shared';
6
6
  import { getDataTestId } from '@alfalab/core-components-shared';
7
7
  import { useFocus } from '@alfalab/hooks';
8
8
 
@@ -70,35 +70,21 @@ export const Field = ({
70
70
  * [1] - Indicators (eye, calendar, chevron, stepper e.g.)
71
71
  * [0] - Lock
72
72
  */
73
- const rightAddonsMap = getAddonsByPriority([
74
- {
75
- priority: 4,
76
- predicate: clear && filled && !disabled,
77
- render: () => (
73
+ const renderRightAddons = () => (
74
+ <Fragment>
75
+ {clear && filled && !disabled && (
78
76
  <ClearButton
79
77
  onClick={onClear}
80
78
  disabled={disabled}
81
79
  dataTestId={getDataTestId(dataTestId, 'clear-icon')}
82
80
  size={size}
83
81
  />
84
- ),
85
- },
86
- {
87
- priority: 2,
88
- predicate: Boolean(rightAddons),
89
- render: () => rightAddons,
90
- },
91
- {
92
- priority: 1,
93
- predicate: Boolean(Arrow) && !disabled,
94
- render: () => Arrow && React.cloneElement(Arrow, { className: styles.arrow }),
95
- },
96
- {
97
- priority: 0,
98
- predicate: disabled,
99
- render: () => <LockIcon colors={colors} size={size} />,
100
- },
101
- ]);
82
+ )}
83
+ {rightAddons}
84
+ {!disabled && Arrow && React.cloneElement(Arrow, { className: styles.arrow })}
85
+ {disabled && <LockIcon colors={colors} size={size} />}
86
+ </Fragment>
87
+ );
102
88
 
103
89
  return (
104
90
  <div
@@ -123,7 +109,7 @@ export const Field = ({
123
109
  labelView={labelView}
124
110
  error={error}
125
111
  hint={hint}
126
- rightAddons={rightAddonsMap}
112
+ rightAddons={renderRightAddons()}
127
113
  data-test-id={dataTestId}
128
114
  {...restProps}
129
115
  {...innerProps}
@@ -28,6 +28,7 @@ export const OptionBase: FC<OptionCommonProps & OptionPrivateProps> = ({
28
28
  multiple,
29
29
  mobile,
30
30
  Checkmark,
31
+ checkmarkPosition = multiple ? 'before' : 'after',
31
32
  innerProps,
32
33
  dataTestId,
33
34
  styles,
@@ -35,6 +36,17 @@ export const OptionBase: FC<OptionCommonProps & OptionPrivateProps> = ({
35
36
  const content = children || option.content || option.key;
36
37
  const { showCheckMark = true } = option;
37
38
 
39
+ const renderCheckmark = (position: 'before' | 'after') =>
40
+ Checkmark &&
41
+ showCheckMark && (
42
+ <Checkmark
43
+ disabled={disabled}
44
+ selected={selected}
45
+ multiple={multiple}
46
+ position={position}
47
+ />
48
+ );
49
+
38
50
  return (
39
51
  <div
40
52
  {...innerProps}
@@ -45,14 +57,7 @@ export const OptionBase: FC<OptionCommonProps & OptionPrivateProps> = ({
45
57
  })}
46
58
  data-test-id={dataTestId}
47
59
  >
48
- {Checkmark && showCheckMark && (
49
- <Checkmark
50
- disabled={disabled}
51
- selected={selected}
52
- multiple={multiple}
53
- position='before'
54
- />
55
- )}
60
+ {checkmarkPosition === 'before' && renderCheckmark('before')}
56
61
 
57
62
  <div
58
63
  className={cn(styles.content, {
@@ -62,15 +67,7 @@ export const OptionBase: FC<OptionCommonProps & OptionPrivateProps> = ({
62
67
  {content}
63
68
  </div>
64
69
 
65
- {/** Workaround чтобы для клика показывать отметку справа и всегда в виде иконки */}
66
- {Checkmark && showCheckMark && (
67
- <Checkmark
68
- disabled={disabled}
69
- selected={selected}
70
- multiple={multiple}
71
- position='after'
72
- />
73
- )}
70
+ {checkmarkPosition === 'after' && renderCheckmark('after')}
74
71
  </div>
75
72
  );
76
73
  };
@@ -49,6 +49,7 @@ export const SelectMobile = forwardRef(
49
49
  showClear = true,
50
50
  showSelectAll,
51
51
  showHeaderWithSelectAll,
52
+ checkmarkPosition = 'before',
52
53
  useWithApplyHook = multiple,
53
54
  showSearch,
54
55
  searchProps,
@@ -69,6 +70,7 @@ export const SelectMobile = forwardRef(
69
70
  onChange,
70
71
  showClear,
71
72
  showSelectAll,
73
+ checkmarkPosition,
72
74
  });
73
75
 
74
76
  const bottomAddons = (flatOptions: OptionShape[]) =>
@@ -80,6 +80,12 @@ export type UseSelectWithApplyProps = {
80
80
  * @default 'reset-footer'
81
81
  */
82
82
  resetName?: string;
83
+
84
+ /**
85
+ * Позиция чекбокса "Выбрать все" в Header
86
+ * @default 'before'
87
+ */
88
+ checkmarkPosition?: 'before' | 'after';
83
89
  };
84
90
 
85
91
  const selectAllOption = { key: SELECT_ALL_KEY, content: 'Выбрать все' };
@@ -94,6 +100,7 @@ export function useSelectWithApply({
94
100
  showClear = true,
95
101
  showSelectAll = false,
96
102
  showHeaderWithSelectAll = false,
103
+ checkmarkPosition = 'before',
97
104
  showSearch = false,
98
105
  searchProps = {},
99
106
  applyName = 'apply-footer',
@@ -134,7 +141,6 @@ export function useSelectWithApply({
134
141
  ),
135
142
  [options, selected, showSearch, filterGroup, filterFn, accessor, search, groupAccessor],
136
143
  );
137
-
138
144
  const [selectedDraft, setSelectedDraft] = useState<OptionShape[]>(selectedOptions);
139
145
 
140
146
  const selectedOptionsRef = useRef<OptionShape[]>(selectedOptions);
@@ -233,6 +239,7 @@ export function useSelectWithApply({
233
239
  selectedDraft.length === flatOptions.length ||
234
240
  flatOptions.every(({ key }) => selectedKeys.includes(key)),
235
241
  onChange: handleToggleAll,
242
+ checkmarkPosition,
236
243
  },
237
244
  },
238
245
  multiple: true,
@@ -257,6 +264,7 @@ export function useSelectWithApply({
257
264
  showClear,
258
265
  showSelectAll,
259
266
  showHeaderWithSelectAll,
267
+ checkmarkPosition,
260
268
  showSearch,
261
269
  searchProps,
262
270
  applyName,
@@ -13,6 +13,7 @@ export type HeaderProps = {
13
13
  onChange?: CheckboxProps['onChange'];
14
14
  mobile?: boolean;
15
15
  dataTestId?: string;
16
+ checkmarkPosition?: 'before' | 'after';
16
17
  size?: OptionsListProps['size'];
17
18
  };
18
19
 
@@ -23,6 +24,7 @@ export const Header: React.FC<HeaderProps> = ({
23
24
  mobile,
24
25
  dataTestId,
25
26
  size,
27
+ checkmarkPosition = 'before',
26
28
  }) => (
27
29
  <div
28
30
  className={cn(size && styles[`size-${size}`], {
@@ -38,6 +40,8 @@ export const Header: React.FC<HeaderProps> = ({
38
40
  checked={checked}
39
41
  label='Выбрать все'
40
42
  dataTestId={dataTestId}
43
+ position={checkmarkPosition}
44
+ contentClassName={cn({ [styles.positionAfter]: checkmarkPosition === 'after' })}
41
45
  />
42
46
  </div>
43
47
  );
@@ -8,5 +8,9 @@
8
8
  }
9
9
 
10
10
  .mobile {
11
- padding: var(--gap-12) var(--gap-8);
11
+ padding: var(--gap-12) var(--gap-12) var(--gap-12) var(--gap-8);
12
+ }
13
+
14
+ .positionAfter {
15
+ margin-left: unset;
12
16
  }
package/src/typings.ts CHANGED
@@ -853,6 +853,11 @@ export type CheckmarkProps = {
853
853
  */
854
854
  position?: 'before' | 'after';
855
855
 
856
+ /**
857
+ * Дополнительный контент
858
+ */
859
+ content?: ReactNode;
860
+
856
861
  /**
857
862
  * Иконка выбранного пункта
858
863
  */
@@ -888,6 +893,12 @@ export type AdditionalMobileProps = {
888
893
  * Использовать ли хук useSelectWithApply в мобильном компоненте
889
894
  */
890
895
  useWithApplyHook?: boolean;
896
+
897
+ /**
898
+ * Позиция чекбокса "Выбрать все" в Header
899
+ * @default 'before'
900
+ */
901
+ checkmarkPosition?: 'before' | 'after';
891
902
  };
892
903
 
893
904
  export type BottomSheetSelectMobileProps = {
package/src/vars.css CHANGED
@@ -37,11 +37,11 @@
37
37
 
38
38
  --select-checkmark-margin: var(--gap-0) var(--gap-8) var(--gap-0) var(--gap-0);
39
39
  --select-checkmark-margin-after: var(--select-checkmark-margin);
40
- --select-checkmark-size: 4px;
41
- --select-checkmark-before-display: 'flex';
40
+ --select-checkmark-size: 24px;
41
+ --select-checkmark-before-display: flex;
42
42
  --select-checkmark-after-display: none;
43
43
  --select-checkmark-before-display-multiple: block;
44
- --select-checkmark-after-display-single: none;
44
+ --select-checkmark-after-display-single: flex;
45
45
  --select-checkmark-unselected-opacity: 0;
46
46
  --select-checkmark-background: var(--color-light-neutral-translucent-1300);
47
47
  --select-checkmark-border-radius: var(--border-radius-circle);
package/typings.d.ts CHANGED
@@ -669,6 +669,10 @@ export declare type CheckmarkProps = {
669
669
  * Расположение отметки
670
670
  */
671
671
  position?: 'before' | 'after';
672
+ /**
673
+ * Дополнительный контент
674
+ */
675
+ content?: ReactNode;
672
676
  /**
673
677
  * Иконка выбранного пункта
674
678
  */
@@ -697,6 +701,11 @@ export declare type AdditionalMobileProps = {
697
701
  * Использовать ли хук useSelectWithApply в мобильном компоненте
698
702
  */
699
703
  useWithApplyHook?: boolean;
704
+ /**
705
+ * Позиция чекбокса "Выбрать все" в Header
706
+ * @default 'before'
707
+ */
708
+ checkmarkPosition?: 'before' | 'after';
700
709
  };
701
710
  export declare type BottomSheetSelectMobileProps = {
702
711
  /**