@alfalab/core-components-select 14.3.5 → 15.0.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 (416) hide show
  1. package/Component.desktop.d.ts +19 -0
  2. package/{Component.js → Component.desktop.js} +6 -6
  3. package/Component.mobile-ebda875c.d.ts +6 -0
  4. package/Component.mobile-f1f15074.d.ts +387 -0
  5. package/Component.mobile.d.ts +41 -0
  6. package/Component.mobile.js +62 -0
  7. package/Component.modal.mobile.d.ts +60 -0
  8. package/Component.modal.mobile.js +62 -0
  9. package/Component.responsive.d.ts +1 -1
  10. package/Component.responsive.js +26 -25
  11. package/components/arrow/Component.js +1 -1
  12. package/components/arrow/index.css +3 -3
  13. package/components/base-checkmark/Component.js +1 -1
  14. package/components/base-checkmark/index.css +4 -4
  15. package/components/base-option/Component.js +1 -1
  16. package/components/base-option/index.css +13 -13
  17. package/components/base-select/Component.js +6 -6
  18. package/components/base-select/index.css +8 -8
  19. package/components/base-select/index.js +1 -1
  20. package/components/base-select-mobile/Component.d.ts +3 -3
  21. package/components/base-select-mobile/Component.js +13 -9
  22. package/components/base-select-mobile/footer/Component.js +4 -4
  23. package/components/base-select-mobile/footer/index.css +5 -5
  24. package/components/base-select-mobile/footer/index.js +1 -1
  25. package/components/base-select-mobile/index.css +13 -11
  26. package/components/base-select-mobile/index.js +1 -2
  27. package/components/checkmark/Component.js +1 -1
  28. package/components/checkmark/index.css +10 -10
  29. package/components/checkmark-mobile/Component.js +1 -1
  30. package/components/checkmark-mobile/index.css +6 -6
  31. package/components/field/Component.d.ts +8 -1
  32. package/components/field/Component.js +19 -16
  33. package/components/field/index.css +38 -11
  34. package/components/field/index.js +0 -1
  35. package/components/index.d.ts +0 -2
  36. package/components/index.js +4 -19
  37. package/components/optgroup/Component.js +1 -1
  38. package/components/optgroup/index.css +6 -6
  39. package/components/option/Component.js +1 -1
  40. package/components/option/index.css +20 -20
  41. package/components/options-list/Component.js +1 -1
  42. package/components/options-list/index.css +9 -9
  43. package/components/virtual-options-list/Component.js +1 -1
  44. package/components/virtual-options-list/index.css +15 -15
  45. package/cssm/Component.desktop.d.ts +19 -0
  46. package/cssm/{Component.js → Component.desktop.js} +6 -6
  47. package/cssm/Component.mobile-ebda875c.d.ts +6 -0
  48. package/cssm/Component.mobile-f1f15074.d.ts +387 -0
  49. package/cssm/Component.mobile.d.ts +41 -0
  50. package/cssm/Component.mobile.js +74 -0
  51. package/cssm/Component.modal.mobile.d.ts +60 -0
  52. package/cssm/Component.modal.mobile.js +74 -0
  53. package/cssm/Component.responsive.d.ts +1 -1
  54. package/cssm/Component.responsive.js +30 -33
  55. package/cssm/components/base-select/Component.js +5 -5
  56. package/cssm/components/base-select/index.js +1 -1
  57. package/cssm/components/base-select-mobile/Component.d.ts +3 -3
  58. package/cssm/components/base-select-mobile/Component.js +12 -8
  59. package/cssm/components/base-select-mobile/footer/Component.js +3 -3
  60. package/cssm/components/base-select-mobile/footer/index.js +1 -1
  61. package/cssm/components/base-select-mobile/index.js +1 -2
  62. package/cssm/components/base-select-mobile/index.module.css +4 -2
  63. package/cssm/components/field/Component.d.ts +8 -1
  64. package/cssm/components/field/Component.js +18 -15
  65. package/cssm/components/field/index.js +0 -1
  66. package/cssm/components/field/index.module.css +31 -4
  67. package/cssm/components/index.d.ts +0 -2
  68. package/cssm/components/index.js +7 -28
  69. package/cssm/desktop-63dec22f.d.ts +6 -0
  70. package/cssm/desktop.d.ts +2 -0
  71. package/cssm/desktop.js +44 -0
  72. package/cssm/hook-97e6e688.d.ts +16 -0
  73. package/cssm/hook-97e6e688.js +110 -0
  74. package/{esm/hook-b4e70cb0.d.ts → cssm/hook-9ea9e32c.d.ts} +9 -7
  75. package/cssm/index-ebda875c.d.ts +20 -60
  76. package/cssm/index.d.ts +2 -5
  77. package/cssm/index.js +34 -61
  78. package/cssm/mobile-96988a65.d.ts +2 -0
  79. package/cssm/mobile.d.ts +5 -4
  80. package/cssm/mobile.js +15 -24
  81. package/cssm/presets/index.d.ts +1 -1
  82. package/cssm/presets/index.js +9 -36
  83. package/cssm/presets/useLazyLoading/hook.js +9 -4
  84. package/cssm/presets/useSelectWithApply/hook.js +9 -48
  85. package/cssm/presets/useSelectWithApply/options-list-with-apply/Component.js +3 -42
  86. package/cssm/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +3 -3
  87. package/cssm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  88. package/cssm/presets/useSelectWithApply/options-list-with-apply/index.js +10 -49
  89. package/cssm/shared.d.ts +5 -0
  90. package/cssm/shared.js +78 -0
  91. package/cssm/typings-9211a437.d.ts +95 -0
  92. package/cssm/typings-baf4875b.d.ts +52 -0
  93. package/desktop-63dec22f.d.ts +6 -0
  94. package/desktop.d.ts +2 -0
  95. package/{responsive.js → desktop.js} +5 -19
  96. package/esm/Component.desktop.d.ts +19 -0
  97. package/esm/{Component.js → Component.desktop.js} +6 -6
  98. package/esm/Component.mobile-ebda875c.d.ts +6 -0
  99. package/esm/Component.mobile-f1f15074.d.ts +387 -0
  100. package/esm/Component.mobile.d.ts +41 -0
  101. package/esm/Component.mobile.js +54 -0
  102. package/esm/Component.modal.mobile.d.ts +60 -0
  103. package/esm/Component.modal.mobile.js +54 -0
  104. package/esm/Component.responsive.d.ts +1 -1
  105. package/esm/Component.responsive.js +26 -25
  106. package/esm/components/arrow/Component.js +1 -1
  107. package/esm/components/arrow/index.css +3 -3
  108. package/esm/components/base-checkmark/Component.js +1 -1
  109. package/esm/components/base-checkmark/index.css +4 -4
  110. package/esm/components/base-option/Component.js +1 -1
  111. package/esm/components/base-option/index.css +13 -13
  112. package/esm/components/base-select/Component.js +2 -2
  113. package/esm/components/base-select/index.css +8 -8
  114. package/esm/components/base-select/index.js +1 -1
  115. package/esm/components/base-select-mobile/Component.d.ts +3 -3
  116. package/esm/components/base-select-mobile/Component.js +9 -5
  117. package/esm/components/base-select-mobile/footer/Component.js +4 -4
  118. package/esm/components/base-select-mobile/footer/index.css +5 -5
  119. package/esm/components/base-select-mobile/footer/index.js +1 -1
  120. package/esm/components/base-select-mobile/index.css +13 -11
  121. package/esm/components/base-select-mobile/index.js +1 -2
  122. package/esm/components/checkmark/Component.js +1 -1
  123. package/esm/components/checkmark/index.css +10 -10
  124. package/esm/components/checkmark-mobile/Component.js +1 -1
  125. package/esm/components/checkmark-mobile/index.css +6 -6
  126. package/esm/components/field/Component.d.ts +8 -1
  127. package/esm/components/field/Component.js +19 -16
  128. package/esm/components/field/index.css +38 -11
  129. package/esm/components/field/index.js +0 -1
  130. package/esm/components/index.d.ts +0 -2
  131. package/esm/components/index.js +4 -17
  132. package/esm/components/optgroup/Component.js +1 -1
  133. package/esm/components/optgroup/index.css +6 -6
  134. package/esm/components/option/Component.js +1 -1
  135. package/esm/components/option/index.css +20 -20
  136. package/esm/components/options-list/Component.js +1 -1
  137. package/esm/components/options-list/index.css +9 -9
  138. package/esm/components/virtual-options-list/Component.js +1 -1
  139. package/esm/components/virtual-options-list/index.css +15 -15
  140. package/esm/desktop-63dec22f.d.ts +6 -0
  141. package/esm/desktop.d.ts +2 -0
  142. package/esm/{responsive.js → desktop.js} +4 -18
  143. package/{cssm/hook-b4e70cb0.d.ts → esm/hook-9ea9e32c.d.ts} +9 -7
  144. package/esm/hook-cb30fc23.d.ts +16 -0
  145. package/esm/hook-cb30fc23.js +102 -0
  146. package/esm/index-ebda875c.d.ts +20 -60
  147. package/esm/index.d.ts +2 -5
  148. package/esm/index.js +27 -29
  149. package/esm/mobile-96988a65.d.ts +2 -0
  150. package/esm/mobile.d.ts +5 -4
  151. package/esm/mobile.js +12 -16
  152. package/esm/presets/index.d.ts +1 -1
  153. package/esm/presets/index.js +7 -25
  154. package/esm/presets/useLazyLoading/hook.js +9 -5
  155. package/esm/presets/useSelectWithApply/hook.js +7 -33
  156. package/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +2 -28
  157. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +4 -4
  158. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  159. package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  160. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  161. package/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  162. package/esm/presets/useSelectWithApply/options-list-with-apply/index.js +8 -34
  163. package/esm/presets/useSelectWithLoading/hook.js +1 -1
  164. package/esm/presets/useSelectWithLoading/index.css +2 -2
  165. package/esm/shared.d.ts +5 -0
  166. package/esm/shared.js +38 -0
  167. package/esm/typings-9211a437.d.ts +95 -0
  168. package/esm/typings-baf4875b.d.ts +52 -0
  169. package/hook-3e654f56.d.ts +16 -0
  170. package/hook-3e654f56.js +110 -0
  171. package/{hook-b4e70cb0.d.ts → hook-9ea9e32c.d.ts} +9 -7
  172. package/index-ebda875c.d.ts +20 -60
  173. package/index.d.ts +2 -5
  174. package/index.js +28 -51
  175. package/mobile-96988a65.d.ts +2 -0
  176. package/mobile.d.ts +5 -4
  177. package/mobile.js +14 -18
  178. package/modern/Component.desktop.d.ts +19 -0
  179. package/modern/{Component.js → Component.desktop.js} +7 -4
  180. package/modern/Component.mobile-ebda875c.d.ts +6 -0
  181. package/modern/Component.mobile-f1f15074.d.ts +387 -0
  182. package/modern/Component.mobile.d.ts +41 -0
  183. package/modern/Component.mobile.js +61 -0
  184. package/modern/Component.modal.mobile.d.ts +60 -0
  185. package/modern/Component.modal.mobile.js +61 -0
  186. package/modern/Component.responsive.d.ts +1 -1
  187. package/modern/Component.responsive.js +26 -25
  188. package/modern/components/arrow/Component.js +1 -1
  189. package/modern/components/arrow/index.css +3 -3
  190. package/modern/components/base-checkmark/Component.js +1 -1
  191. package/modern/components/base-checkmark/index.css +4 -4
  192. package/modern/components/base-option/Component.js +1 -1
  193. package/modern/components/base-option/index.css +13 -13
  194. package/modern/components/base-select/Component.js +2 -2
  195. package/modern/components/base-select/index.css +8 -8
  196. package/modern/components/base-select/index.js +1 -1
  197. package/modern/components/base-select-mobile/Component.d.ts +3 -3
  198. package/modern/components/base-select-mobile/Component.js +9 -5
  199. package/modern/components/base-select-mobile/footer/Component.js +4 -4
  200. package/modern/components/base-select-mobile/footer/index.css +5 -5
  201. package/modern/components/base-select-mobile/footer/index.js +1 -1
  202. package/modern/components/base-select-mobile/index.css +13 -11
  203. package/modern/components/base-select-mobile/index.js +1 -2
  204. package/modern/components/checkmark/Component.js +1 -1
  205. package/modern/components/checkmark/index.css +10 -10
  206. package/modern/components/checkmark-mobile/Component.js +1 -1
  207. package/modern/components/checkmark-mobile/index.css +6 -6
  208. package/modern/components/field/Component.d.ts +8 -1
  209. package/modern/components/field/Component.js +17 -14
  210. package/modern/components/field/index.css +38 -11
  211. package/modern/components/field/index.js +0 -1
  212. package/modern/components/index.d.ts +0 -2
  213. package/modern/components/index.js +4 -17
  214. package/modern/components/optgroup/Component.js +1 -1
  215. package/modern/components/optgroup/index.css +6 -6
  216. package/modern/components/option/Component.js +1 -1
  217. package/modern/components/option/index.css +20 -20
  218. package/modern/components/options-list/Component.js +1 -1
  219. package/modern/components/options-list/index.css +9 -9
  220. package/modern/components/virtual-options-list/Component.js +1 -1
  221. package/modern/components/virtual-options-list/index.css +15 -15
  222. package/modern/desktop-63dec22f.d.ts +6 -0
  223. package/modern/desktop.d.ts +2 -0
  224. package/modern/{responsive.js → desktop.js} +4 -18
  225. package/modern/hook-467b4d42.d.ts +16 -0
  226. package/modern/{Component-5c16a908.js → hook-467b4d42.js} +3 -66
  227. package/modern/{hook-b4e70cb0.d.ts → hook-9ea9e32c.d.ts} +9 -7
  228. package/modern/index-ebda875c.d.ts +20 -60
  229. package/modern/index.d.ts +2 -5
  230. package/modern/index.js +27 -29
  231. package/modern/mobile-96988a65.d.ts +2 -0
  232. package/modern/mobile.d.ts +5 -4
  233. package/modern/mobile.js +12 -16
  234. package/modern/presets/index.d.ts +1 -1
  235. package/modern/presets/index.js +7 -25
  236. package/modern/presets/useLazyLoading/hook.js +9 -5
  237. package/modern/presets/useSelectWithApply/hook.js +7 -33
  238. package/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +2 -28
  239. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +4 -4
  240. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  241. package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  242. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  243. package/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  244. package/modern/presets/useSelectWithApply/options-list-with-apply/index.js +8 -34
  245. package/modern/presets/useSelectWithLoading/hook.js +1 -1
  246. package/modern/presets/useSelectWithLoading/index.css +2 -2
  247. package/modern/shared.d.ts +5 -0
  248. package/modern/shared.js +37 -0
  249. package/modern/typings-9211a437.d.ts +95 -0
  250. package/modern/typings-baf4875b.d.ts +52 -0
  251. package/package.json +38 -12
  252. package/presets/index.d.ts +1 -1
  253. package/presets/index.js +7 -25
  254. package/presets/useLazyLoading/hook.js +9 -5
  255. package/presets/useSelectWithApply/hook.js +7 -33
  256. package/presets/useSelectWithApply/options-list-with-apply/Component.js +2 -28
  257. package/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +4 -4
  258. package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  259. package/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  260. package/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  261. package/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  262. package/presets/useSelectWithApply/options-list-with-apply/index.js +8 -34
  263. package/presets/useSelectWithLoading/hook.js +1 -1
  264. package/presets/useSelectWithLoading/index.css +2 -2
  265. package/shared.d.ts +5 -0
  266. package/shared.js +64 -0
  267. package/src/Component.desktop.tsx +52 -0
  268. package/src/Component.mobile.tsx +149 -0
  269. package/src/Component.modal.mobile.tsx +144 -0
  270. package/src/Component.responsive.tsx +59 -0
  271. package/src/components/arrow/Component.tsx +12 -0
  272. package/src/components/arrow/index.module.css +15 -0
  273. package/src/components/arrow/index.ts +1 -0
  274. package/src/components/base-checkmark/Component.tsx +33 -0
  275. package/src/components/base-checkmark/index.module.css +18 -0
  276. package/src/components/base-checkmark/index.ts +1 -0
  277. package/src/components/base-option/Component.tsx +57 -0
  278. package/src/components/base-option/index.module.css +67 -0
  279. package/src/components/base-option/index.ts +1 -0
  280. package/src/components/base-select/Component.tsx +478 -0
  281. package/src/components/base-select/index.module.css +68 -0
  282. package/src/components/base-select/index.ts +1 -0
  283. package/src/components/base-select-mobile/Component.tsx +486 -0
  284. package/src/components/base-select-mobile/footer/Component.tsx +46 -0
  285. package/src/components/base-select-mobile/footer/index.module.css +23 -0
  286. package/src/components/base-select-mobile/footer/index.ts +1 -0
  287. package/src/components/base-select-mobile/index.module.css +48 -0
  288. package/src/components/base-select-mobile/index.ts +1 -0
  289. package/src/components/checkmark/Component.tsx +56 -0
  290. package/src/components/checkmark/index.module.css +48 -0
  291. package/src/components/checkmark/index.ts +1 -0
  292. package/src/components/checkmark-mobile/Component.tsx +18 -0
  293. package/src/components/checkmark-mobile/index.module.css +28 -0
  294. package/src/components/checkmark-mobile/index.ts +1 -0
  295. package/src/components/field/Component.tsx +110 -0
  296. package/src/components/field/index.module.css +60 -0
  297. package/src/components/field/index.ts +1 -0
  298. package/src/components/index.ts +8 -0
  299. package/src/components/native-select/Component.tsx +60 -0
  300. package/src/components/native-select/index.ts +1 -0
  301. package/src/components/optgroup/Component.tsx +15 -0
  302. package/src/components/optgroup/index.module.css +30 -0
  303. package/src/components/optgroup/index.ts +1 -0
  304. package/src/components/option/Component.tsx +65 -0
  305. package/src/components/option/index.module.css +108 -0
  306. package/src/components/option/index.ts +1 -0
  307. package/src/components/options-list/Component.tsx +140 -0
  308. package/src/components/options-list/index.module.css +40 -0
  309. package/src/components/options-list/index.ts +1 -0
  310. package/src/components/virtual-options-list/Component.tsx +217 -0
  311. package/src/components/virtual-options-list/index.module.css +76 -0
  312. package/src/components/virtual-options-list/index.ts +1 -0
  313. package/src/consts.ts +1 -0
  314. package/src/desktop.ts +1 -0
  315. package/src/index.ts +4 -0
  316. package/src/mobile.ts +5 -0
  317. package/src/presets/index.ts +3 -0
  318. package/src/presets/useLazyLoading/hook.tsx +309 -0
  319. package/src/presets/useSelectWithApply/hook.tsx +154 -0
  320. package/src/presets/useSelectWithApply/options-list-with-apply/Component.tsx +106 -0
  321. package/src/presets/useSelectWithApply/options-list-with-apply/footer/Component.tsx +37 -0
  322. package/src/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css +11 -0
  323. package/src/presets/useSelectWithApply/options-list-with-apply/header/Component.tsx +26 -0
  324. package/src/presets/useSelectWithApply/options-list-with-apply/header/index.module.css +9 -0
  325. package/src/presets/useSelectWithApply/options-list-with-apply/index.ts +1 -0
  326. package/src/presets/useSelectWithLoading/hook.tsx +40 -0
  327. package/src/shared.ts +5 -0
  328. package/src/typings.ts +691 -0
  329. package/src/utils.ts +154 -0
  330. package/src/vars.css +57 -0
  331. package/typings-9211a437.d.ts +95 -0
  332. package/typings-baf4875b.d.ts +52 -0
  333. package/Component-1e06de61.d.ts +0 -108
  334. package/Component-1e06de61.js +0 -165
  335. package/Component-3885b0d7.d.ts +0 -169
  336. package/Component.d.ts +0 -104
  337. package/Component.mobile-b2c0420d.d.ts +0 -93
  338. package/components/select-mobile/Component.d.ts +0 -0
  339. package/components/select-mobile/Component.js +0 -49
  340. package/components/select-mobile/index.d.ts +0 -1
  341. package/components/select-mobile/index.js +0 -49
  342. package/components/select-modal-mobile/Component.d.ts +0 -0
  343. package/components/select-modal-mobile/Component.js +0 -49
  344. package/components/select-modal-mobile/index.d.ts +0 -1
  345. package/components/select-modal-mobile/index.js +0 -49
  346. package/cssm/Component-3885b0d7.d.ts +0 -169
  347. package/cssm/Component-4727d474.d.ts +0 -108
  348. package/cssm/Component-4727d474.js +0 -175
  349. package/cssm/Component.d.ts +0 -104
  350. package/cssm/Component.mobile-b2c0420d.d.ts +0 -93
  351. package/cssm/components/select-mobile/Component.d.ts +0 -0
  352. package/cssm/components/select-mobile/Component.js +0 -66
  353. package/cssm/components/select-mobile/index.d.ts +0 -1
  354. package/cssm/components/select-mobile/index.js +0 -66
  355. package/cssm/components/select-modal-mobile/Component.d.ts +0 -0
  356. package/cssm/components/select-modal-mobile/Component.js +0 -66
  357. package/cssm/components/select-modal-mobile/index.d.ts +0 -1
  358. package/cssm/components/select-modal-mobile/index.js +0 -66
  359. package/cssm/getDataTestId-5c876d98.d.ts +0 -2
  360. package/cssm/getDataTestId-5c876d98.js +0 -8
  361. package/cssm/index-3885b0d7.d.ts +0 -3
  362. package/cssm/intersection-observer-9ec5cf59.d.ts +0 -1
  363. package/cssm/intersection-observer-9ec5cf59.js +0 -893
  364. package/cssm/responsive.d.ts +0 -2
  365. package/cssm/responsive.js +0 -67
  366. package/cssm/types-ebda875c.d.ts +0 -113
  367. package/esm/Component-16af9d1e.d.ts +0 -108
  368. package/esm/Component-16af9d1e.js +0 -155
  369. package/esm/Component-3885b0d7.d.ts +0 -169
  370. package/esm/Component.d.ts +0 -104
  371. package/esm/Component.mobile-b2c0420d.d.ts +0 -93
  372. package/esm/components/select-mobile/Component.d.ts +0 -0
  373. package/esm/components/select-mobile/Component.js +0 -41
  374. package/esm/components/select-mobile/index.d.ts +0 -1
  375. package/esm/components/select-mobile/index.js +0 -41
  376. package/esm/components/select-modal-mobile/Component.d.ts +0 -0
  377. package/esm/components/select-modal-mobile/Component.js +0 -41
  378. package/esm/components/select-modal-mobile/index.d.ts +0 -1
  379. package/esm/components/select-modal-mobile/index.js +0 -41
  380. package/esm/getDataTestId-1a678b16.d.ts +0 -2
  381. package/esm/getDataTestId-1a678b16.js +0 -6
  382. package/esm/index-3885b0d7.d.ts +0 -3
  383. package/esm/intersection-observer-4e5bb99c.d.ts +0 -1
  384. package/esm/intersection-observer-4e5bb99c.js +0 -891
  385. package/esm/presets/useLazyLoading/index.css +0 -8
  386. package/esm/responsive.d.ts +0 -2
  387. package/esm/types-ebda875c.d.ts +0 -113
  388. package/getDataTestId-3f974970.d.ts +0 -2
  389. package/getDataTestId-3f974970.js +0 -8
  390. package/index-3885b0d7.d.ts +0 -3
  391. package/intersection-observer-411362a8.d.ts +0 -1
  392. package/intersection-observer-411362a8.js +0 -893
  393. package/modern/Component-3885b0d7.d.ts +0 -169
  394. package/modern/Component-5c16a908.d.ts +0 -108
  395. package/modern/Component.d.ts +0 -104
  396. package/modern/Component.mobile-b2c0420d.d.ts +0 -93
  397. package/modern/components/select-mobile/Component.d.ts +0 -0
  398. package/modern/components/select-mobile/Component.js +0 -40
  399. package/modern/components/select-mobile/index.d.ts +0 -1
  400. package/modern/components/select-mobile/index.js +0 -40
  401. package/modern/components/select-modal-mobile/Component.d.ts +0 -0
  402. package/modern/components/select-modal-mobile/Component.js +0 -40
  403. package/modern/components/select-modal-mobile/index.d.ts +0 -1
  404. package/modern/components/select-modal-mobile/index.js +0 -40
  405. package/modern/getDataTestId-c17bfb0c.d.ts +0 -2
  406. package/modern/getDataTestId-c17bfb0c.js +0 -6
  407. package/modern/index-3885b0d7.d.ts +0 -3
  408. package/modern/intersection-observer-4e5bb99c.d.ts +0 -1
  409. package/modern/intersection-observer-4e5bb99c.js +0 -891
  410. package/modern/presets/useLazyLoading/index.css +0 -8
  411. package/modern/responsive.d.ts +0 -2
  412. package/modern/types-ebda875c.d.ts +0 -113
  413. package/presets/useLazyLoading/index.css +0 -8
  414. package/responsive.d.ts +0 -2
  415. package/types-ebda875c.d.ts +0 -113
  416. /package/{cssm/presets/useLazyLoading → src/presets/useSelectWithLoading}/index.module.css +0 -0
@@ -0,0 +1,140 @@
1
+ import React, { forwardRef, useRef } from 'react';
2
+ import mergeRefs from 'react-merge-refs';
3
+ import cn from 'classnames';
4
+
5
+ import { Scrollbar } from '@alfalab/core-components-scrollbar';
6
+ import { useMedia } from '@alfalab/hooks';
7
+
8
+ import { DEFAULT_VISIBLE_OPTIONS } from '../../consts';
9
+ import { GroupShape, OptionShape, OptionsListProps } from '../../typings';
10
+ import { isGroup, useVisibleOptions } from '../../utils';
11
+ import { Optgroup as DefaultOptgroup } from '../optgroup';
12
+
13
+ import styles from './index.module.css';
14
+
15
+ const createCounter = () => {
16
+ let count = 0;
17
+
18
+ // eslint-disable-next-line no-plusplus
19
+ return () => count++;
20
+ };
21
+
22
+ export const OptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
23
+ (
24
+ {
25
+ size = 's',
26
+ className,
27
+ optionGroupClassName,
28
+ Option,
29
+ getOptionProps,
30
+ options = [],
31
+ Optgroup = DefaultOptgroup,
32
+ dataTestId,
33
+ emptyPlaceholder,
34
+ visibleOptions = DEFAULT_VISIBLE_OPTIONS,
35
+ onScroll,
36
+ open,
37
+ header,
38
+ footer,
39
+ showFooter = true,
40
+ optionsListWidth,
41
+ nativeScrollbar: nativeScrollbarProp,
42
+ flatOptions = [],
43
+ },
44
+ ref,
45
+ ) => {
46
+ let [nativeScrollbar] = useMedia<boolean>([[true, '(max-width: 1023px)']], false);
47
+
48
+ nativeScrollbar = Boolean(nativeScrollbarProp ?? nativeScrollbar);
49
+
50
+ const renderOption = (option: OptionShape, index: number) => (
51
+ <Option key={option.key} {...getOptionProps(option, index)} />
52
+ );
53
+
54
+ const listRef = useRef<HTMLDivElement>(null);
55
+ const scrollbarRef = useRef<HTMLDivElement>(null);
56
+ const counter = createCounter();
57
+ const renderGroup = (group: GroupShape) => (
58
+ <Optgroup
59
+ className={optionGroupClassName}
60
+ label={group.label}
61
+ key={group.label}
62
+ size={size}
63
+ >
64
+ {group.options.map((option) => renderOption(option, counter()))}
65
+ </Optgroup>
66
+ );
67
+
68
+ useVisibleOptions({
69
+ ...(!nativeScrollbar && { styleTargetRef: scrollbarRef }),
70
+ visibleOptions,
71
+ listRef,
72
+ open,
73
+ invalidate: options,
74
+ });
75
+
76
+ if (options.length === 0 && !emptyPlaceholder) {
77
+ return null;
78
+ }
79
+
80
+ const renderListItems = () => (
81
+ <React.Fragment>
82
+ {options.map((option) =>
83
+ isGroup(option) ? renderGroup(option) : renderOption(option, counter()),
84
+ )}
85
+
86
+ {emptyPlaceholder && options.length === 0 && (
87
+ <div className={styles.emptyPlaceholder}>{emptyPlaceholder}</div>
88
+ )}
89
+ </React.Fragment>
90
+ );
91
+
92
+ const renderWithCustomScrollbar = () => {
93
+ const scrollableNodeProps = {
94
+ onScroll,
95
+ 'data-test-id': dataTestId,
96
+ ref: ref as React.RefObject<HTMLDivElement>,
97
+ };
98
+
99
+ return (
100
+ <Scrollbar
101
+ className={styles.scrollable}
102
+ ref={scrollbarRef}
103
+ horizontalAutoStretch={optionsListWidth === 'content'}
104
+ scrollableNodeProps={scrollableNodeProps}
105
+ contentNodeProps={{ ref: listRef }}
106
+ >
107
+ {renderListItems()}
108
+ </Scrollbar>
109
+ );
110
+ };
111
+
112
+ const renderWithNativeScrollbar = () => (
113
+ <div className={styles.scrollable} ref={mergeRefs([listRef, ref])} onScroll={onScroll}>
114
+ {renderListItems()}
115
+ </div>
116
+ );
117
+
118
+ return (
119
+ <div
120
+ {...(nativeScrollbar && { 'data-test-id': dataTestId })}
121
+ className={cn(styles.optionsList, styles[size], className)}
122
+ >
123
+ {header && <div className={styles.optionsListHeader}>{header}</div>}
124
+
125
+ {nativeScrollbar ? renderWithNativeScrollbar() : renderWithCustomScrollbar()}
126
+
127
+ {showFooter && footer && (
128
+ <div
129
+ className={cn(styles.optionsListFooter, {
130
+ [styles.withBorder]:
131
+ visibleOptions && flatOptions.length > visibleOptions,
132
+ })}
133
+ >
134
+ {footer}
135
+ </div>
136
+ )}
137
+ </div>
138
+ );
139
+ },
140
+ );
@@ -0,0 +1,40 @@
1
+ @import '@alfalab/core-components-themes/src/default.css';
2
+ @import '../../vars.css';
3
+
4
+ .optionsList {
5
+ width: 100%;
6
+ outline: none;
7
+ box-sizing: border-box;
8
+ position: relative;
9
+ }
10
+
11
+ .optionsListHeader {
12
+ box-sizing: border-box;
13
+ border-bottom: 1px solid var(--color-light-border-secondary);
14
+ }
15
+
16
+ .optionsListFooter {
17
+ position: sticky;
18
+ bottom: 0;
19
+ box-sizing: border-box;
20
+ border-top: 1px solid transparent;
21
+
22
+ &.withBorder {
23
+ border-top: 1px solid var(--color-light-border-secondary);
24
+ }
25
+ }
26
+
27
+ .scrollable {
28
+ overflow: auto;
29
+ width: 100%;
30
+ }
31
+
32
+ .emptyPlaceholder {
33
+ padding: var(--gap-m) var(--gap-s);
34
+ color: var(--select-options-list-empty-placeholder-color);
35
+ }
36
+
37
+ .l .emptyPlaceholder,
38
+ .xl .emptyPlaceholder {
39
+ padding: var(--gap-xl) var(--gap-m);
40
+ }
@@ -0,0 +1 @@
1
+ export * from './Component';
@@ -0,0 +1,217 @@
1
+ import React, { forwardRef, useEffect, useMemo, useRef, useState } from 'react';
2
+ import mergeRefs from 'react-merge-refs';
3
+ import { useVirtual } from 'react-virtual';
4
+ import cn from 'classnames';
5
+
6
+ import { Scrollbar } from '@alfalab/core-components-scrollbar';
7
+ import { useMedia } from '@alfalab/hooks';
8
+
9
+ import { DEFAULT_VISIBLE_OPTIONS } from '../../consts';
10
+ import { GroupShape, OptionShape, OptionsListProps } from '../../typings';
11
+ import { isGroup, lastIndexOf, usePrevious, useVisibleOptions } from '../../utils';
12
+ import { Optgroup as DefaultOptgroup } from '../optgroup';
13
+
14
+ import styles from './index.module.css';
15
+
16
+ export const VirtualOptionsList = forwardRef<HTMLDivElement, OptionsListProps>(
17
+ (
18
+ {
19
+ size = 's',
20
+ flatOptions = [],
21
+ highlightedIndex = -1,
22
+ className,
23
+ getOptionProps,
24
+ Option,
25
+ open,
26
+ options = [],
27
+ Optgroup = DefaultOptgroup,
28
+ dataTestId,
29
+ emptyPlaceholder,
30
+ visibleOptions = DEFAULT_VISIBLE_OPTIONS,
31
+ header,
32
+ footer,
33
+ showFooter = true,
34
+ optionsListWidth,
35
+ onScroll,
36
+ nativeScrollbar: nativeScrollbarProp,
37
+ },
38
+ ref,
39
+ ) => {
40
+ const listRef = useRef<HTMLDivElement>(null);
41
+ const parentRef = useRef<HTMLDivElement>(null);
42
+ const scrollbarRef = useRef<HTMLDivElement>(null);
43
+ const [visibleOptionsInvalidateKey, setVisibleOptionsInvalidateKey] = useState(0);
44
+ const prevHighlightedIndex = usePrevious(highlightedIndex) || -1;
45
+
46
+ let [nativeScrollbar] = useMedia<boolean>([[true, '(max-width: 1023px)']], false);
47
+
48
+ const rowVirtualizer = useVirtual({
49
+ size: flatOptions.length,
50
+ parentRef: (ref || parentRef) as React.RefObject<HTMLDivElement>,
51
+ overscan: 15,
52
+ });
53
+
54
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
55
+ nativeScrollbar = Boolean(nativeScrollbarProp ?? nativeScrollbar);
56
+
57
+ // Сколл к выбранному пункту при открытии меню
58
+ useEffect(() => {
59
+ if (open) {
60
+ rowVirtualizer.scrollToIndex(highlightedIndex, { align: 'end' });
61
+ }
62
+ // eslint-disable-next-line react-hooks/exhaustive-deps
63
+ }, [open]);
64
+
65
+ // Скролл к пункту, которого нет на экране
66
+ useEffect(() => {
67
+ if (highlightedIndex === -1) return;
68
+
69
+ if (!rowVirtualizer.virtualItems.some((option) => option.index === highlightedIndex)) {
70
+ rowVirtualizer.scrollToIndex(highlightedIndex, { align: 'end' });
71
+ }
72
+ // eslint-disable-next-line react-hooks/exhaustive-deps
73
+ }, [highlightedIndex]);
74
+
75
+ // Циклическая навигация
76
+ useEffect(() => {
77
+ const notDisabled = (option: OptionShape) => !option.disabled;
78
+ const firstNonDisabled = flatOptions.findIndex(notDisabled);
79
+ const lastNonDisabled = lastIndexOf(flatOptions, notDisabled);
80
+
81
+ if (
82
+ prevHighlightedIndex <= firstNonDisabled &&
83
+ highlightedIndex === flatOptions.length - 1
84
+ ) {
85
+ rowVirtualizer.scrollToIndex(lastNonDisabled);
86
+ }
87
+
88
+ if (prevHighlightedIndex >= lastNonDisabled && highlightedIndex === 0) {
89
+ rowVirtualizer.scrollToIndex(0);
90
+ }
91
+ // eslint-disable-next-line react-hooks/exhaustive-deps
92
+ }, [prevHighlightedIndex, highlightedIndex]);
93
+
94
+ useEffect(() => {
95
+ setVisibleOptionsInvalidateKey(
96
+ /**
97
+ * react-virtual может несколько раз отрендерить список с одним элементом,
98
+ * поэтому нужно еще раз пересчитать высоту, когда список ВИДИМЫХ пунктов будет отрендерен полностью
99
+ * Также, высоту нужно пересчитывать при изменении ОБЩЕГО кол-ва пунктов меню
100
+ */
101
+ rowVirtualizer.virtualItems.length > 1 ? flatOptions.length : 1,
102
+ );
103
+ }, [rowVirtualizer.virtualItems.length, flatOptions.length]);
104
+
105
+ useVisibleOptions({
106
+ visibleOptions,
107
+ invalidate: visibleOptionsInvalidateKey,
108
+ listRef,
109
+ styleTargetRef: nativeScrollbar ? parentRef : scrollbarRef,
110
+ open,
111
+ });
112
+
113
+ // Т.к. рендерится плоский список, необходимо знать индекс, когда начинается новая группа
114
+ const groupStartIndexes = useMemo(() => {
115
+ let currentIndex = 0;
116
+
117
+ return options.reduce((acc: { [key: number]: number }, option, index) => {
118
+ if (isGroup(option)) {
119
+ acc[currentIndex] = index;
120
+ currentIndex += option.options.length;
121
+ } else {
122
+ currentIndex += 1;
123
+ }
124
+
125
+ return acc;
126
+ }, {});
127
+ }, [options]);
128
+
129
+ const renderList = () =>
130
+ rowVirtualizer.virtualItems.map((virtualRow) => {
131
+ const option = flatOptions[virtualRow.index];
132
+ const group = options[groupStartIndexes[virtualRow.index]] as GroupShape;
133
+
134
+ return (
135
+ <div
136
+ key={virtualRow.index}
137
+ ref={virtualRow.measureRef}
138
+ className={cn(styles.virtualRow, {
139
+ [styles.highlighted]: highlightedIndex === virtualRow.index,
140
+ })}
141
+ style={{
142
+ transform: `translateY(${virtualRow.start}px)`,
143
+ }}
144
+ >
145
+ {group && <Optgroup label={group.label} />}
146
+ {!isGroup(option) && (
147
+ <Option {...getOptionProps(option, virtualRow.index)} />
148
+ )}
149
+ </div>
150
+ );
151
+ });
152
+
153
+ const contentNodeProps = {
154
+ className: styles.inner,
155
+ style: { height: `${rowVirtualizer.totalSize}px` },
156
+ ref: listRef,
157
+ };
158
+
159
+ const renderWithCustomScrollbar = () => (
160
+ <Scrollbar
161
+ className={styles.scrollable}
162
+ ref={scrollbarRef}
163
+ horizontalAutoStretch={optionsListWidth === 'content'}
164
+ scrollableNodeProps={{ onScroll, ref: parentRef }}
165
+ contentNodeProps={contentNodeProps}
166
+ >
167
+ {renderList()}
168
+ </Scrollbar>
169
+ );
170
+
171
+ const renderWithNativeScrollbar = () => {
172
+ if (visibleOptions) {
173
+ return (
174
+ <div
175
+ className={styles.scrollable}
176
+ ref={mergeRefs([parentRef, ref])}
177
+ onScroll={onScroll}
178
+ >
179
+ <div {...contentNodeProps}>{renderList()}</div>
180
+ </div>
181
+ );
182
+ }
183
+
184
+ return <div {...contentNodeProps}>{renderList()}</div>;
185
+ };
186
+
187
+ if (options.length === 0 && !emptyPlaceholder) {
188
+ return null;
189
+ }
190
+
191
+ return (
192
+ <div
193
+ className={cn(styles.virtualOptionsList, styles[size], className)}
194
+ data-test-id={dataTestId}
195
+ >
196
+ {header && <div className={styles.virtualOptionsListHeader}>{header}</div>}
197
+
198
+ {nativeScrollbar ? renderWithNativeScrollbar() : renderWithCustomScrollbar()}
199
+
200
+ {emptyPlaceholder && options.length === 0 && (
201
+ <div className={styles.emptyPlaceholder}>{emptyPlaceholder}</div>
202
+ )}
203
+
204
+ {showFooter && footer && (
205
+ <div
206
+ className={cn(styles.virtualOptionsListFooter, {
207
+ [styles.withBorder]:
208
+ visibleOptions && flatOptions.length > visibleOptions,
209
+ })}
210
+ >
211
+ {footer}
212
+ </div>
213
+ )}
214
+ </div>
215
+ );
216
+ },
217
+ );
@@ -0,0 +1,76 @@
1
+ @import '@alfalab/core-components-themes/src/default.css';
2
+ @import '../../vars.css';
3
+
4
+ .virtualOptionsList {
5
+ width: 100%;
6
+ outline: none;
7
+ box-sizing: border-box;
8
+ position: sticky;
9
+ }
10
+
11
+ .virtualOptionsListHeader {
12
+ box-sizing: border-box;
13
+ border-bottom: 1px solid var(--color-light-border-secondary);
14
+ }
15
+
16
+ .virtualOptionsListFooter {
17
+ position: sticky;
18
+ bottom: 0;
19
+ box-sizing: border-box;
20
+ border-top: 1px solid transparent;
21
+
22
+ &.withBorder {
23
+ border-top: 1px solid var(--color-light-border-secondary);
24
+ }
25
+ }
26
+
27
+ .scrollable {
28
+ position: relative;
29
+ overflow: auto;
30
+ width: 100%;
31
+ }
32
+
33
+ .inner {
34
+ position: relative;
35
+ width: 100%;
36
+ }
37
+
38
+ .virtualRow {
39
+ position: absolute;
40
+ top: 0;
41
+ left: 0;
42
+ width: 100%;
43
+
44
+ &:before {
45
+ content: '';
46
+ position: absolute;
47
+ z-index: 1;
48
+ left: var(--select-option-left-padding);
49
+ right: var(--select-option-right-padding);
50
+ top: 0;
51
+ height: 1px;
52
+ background: var(--select-option-divider-background);
53
+ display: var(--select-option-divider-display);
54
+ }
55
+
56
+ &:first-child:before {
57
+ display: none;
58
+ }
59
+ }
60
+
61
+ .highlighted {
62
+ &:before,
63
+ & + .virtualRow:before {
64
+ display: none;
65
+ }
66
+ }
67
+
68
+ .emptyPlaceholder {
69
+ padding: var(--gap-m) var(--gap-s);
70
+ color: var(--select-options-list-empty-placeholder-color);
71
+ }
72
+
73
+ .l .emptyPlaceholder,
74
+ .xl .emptyPlaceholder {
75
+ padding: var(--gap-xl) var(--gap-m);
76
+ }
@@ -0,0 +1 @@
1
+ export * from './Component';
package/src/consts.ts ADDED
@@ -0,0 +1 @@
1
+ export const DEFAULT_VISIBLE_OPTIONS = 5;
package/src/desktop.ts ADDED
@@ -0,0 +1 @@
1
+ export { SelectDesktop, SelectDesktopProps } from './Component.desktop';
package/src/index.ts ADDED
@@ -0,0 +1,4 @@
1
+ export {
2
+ SelectResponsive as Select,
3
+ SelectResponsiveProps as SelectProps,
4
+ } from './Component.responsive';
package/src/mobile.ts ADDED
@@ -0,0 +1,5 @@
1
+ export { SelectMobile } from './Component.mobile';
2
+ export { SelectModalMobile } from './Component.modal.mobile';
3
+
4
+ export type { SelectMobileProps } from './Component.mobile';
5
+ export type { SelectModalMobileProps } from './Component.modal.mobile';
@@ -0,0 +1,3 @@
1
+ export * from './useSelectWithLoading/hook';
2
+ export * from './useLazyLoading/hook';
3
+ export * from './useSelectWithApply/hook';