@alfalab/core-components-select 17.10.1 → 17.11.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 (314) hide show
  1. package/components/arrow/Component.js +1 -1
  2. package/components/arrow/index.css +3 -3
  3. package/components/base-checkmark/Component.js +1 -1
  4. package/components/base-checkmark/index.css +6 -6
  5. package/components/base-option/Component.js +1 -1
  6. package/components/base-option/index.css +15 -15
  7. package/components/base-select/Component.js +2 -2
  8. package/components/base-select/components/list-desktop/list-popover-desktop.js +1 -1
  9. package/components/base-select/components/list-mobile/list-bottom-sheet-mobile.js +1 -1
  10. package/components/base-select/components/list-mobile/list-modal-mobile.js +1 -1
  11. package/components/base-select/index.css +11 -11
  12. package/components/base-select/mobile.css +12 -12
  13. package/components/checkmark/Component.js +1 -1
  14. package/components/checkmark/index.css +10 -10
  15. package/components/checkmark-mobile/Component.js +1 -1
  16. package/components/checkmark-mobile/index.css +6 -6
  17. package/components/clear-button/Component.js +1 -1
  18. package/components/clear-button/index.css +6 -6
  19. package/components/field/Component.js +1 -1
  20. package/components/field/index.css +12 -12
  21. package/components/footer/Component.js +1 -1
  22. package/components/footer/index.css +5 -5
  23. package/components/optgroup/Component.js +1 -1
  24. package/components/optgroup/index.css +6 -6
  25. package/components/option/Component.js +1 -1
  26. package/components/option/index.css +19 -19
  27. package/components/options-list/Component.js +1 -1
  28. package/components/options-list/index.css +10 -10
  29. package/components/search/Component.js +1 -1
  30. package/components/search/index.css +2 -2
  31. package/components/virtual-options-list/Component.js +1 -1
  32. package/components/virtual-options-list/index.css +15 -15
  33. package/esm/components/arrow/Component.js +1 -1
  34. package/esm/components/arrow/index.css +3 -3
  35. package/esm/components/base-checkmark/Component.js +1 -1
  36. package/esm/components/base-checkmark/index.css +6 -6
  37. package/esm/components/base-option/Component.js +1 -1
  38. package/esm/components/base-option/index.css +15 -15
  39. package/esm/components/base-select/Component.js +2 -2
  40. package/esm/components/base-select/components/list-desktop/list-popover-desktop.js +1 -1
  41. package/esm/components/base-select/components/list-mobile/list-bottom-sheet-mobile.js +1 -1
  42. package/esm/components/base-select/components/list-mobile/list-modal-mobile.js +1 -1
  43. package/esm/components/base-select/index.css +11 -11
  44. package/esm/components/base-select/mobile.css +12 -12
  45. package/esm/components/checkmark/Component.js +1 -1
  46. package/esm/components/checkmark/index.css +10 -10
  47. package/esm/components/checkmark-mobile/Component.js +1 -1
  48. package/esm/components/checkmark-mobile/index.css +6 -6
  49. package/esm/components/clear-button/Component.js +1 -1
  50. package/esm/components/clear-button/index.css +6 -6
  51. package/esm/components/field/Component.js +1 -1
  52. package/esm/components/field/index.css +12 -12
  53. package/esm/components/footer/Component.js +1 -1
  54. package/esm/components/footer/index.css +5 -5
  55. package/esm/components/optgroup/Component.js +1 -1
  56. package/esm/components/optgroup/index.css +6 -6
  57. package/esm/components/option/Component.js +1 -1
  58. package/esm/components/option/index.css +19 -19
  59. package/esm/components/options-list/Component.js +1 -1
  60. package/esm/components/options-list/index.css +10 -10
  61. package/esm/components/search/Component.js +1 -1
  62. package/esm/components/search/index.css +2 -2
  63. package/esm/components/virtual-options-list/Component.js +1 -1
  64. package/esm/components/virtual-options-list/index.css +15 -15
  65. package/esm/{list-popover-desktop-446b6d5f.js → list-popover-desktop-3b5200e4.js} +1 -1
  66. package/esm/mobile/Component.mobile.js +1 -1
  67. package/esm/mobile.module-841dbab1.js +4 -0
  68. package/esm/presets/index.js +1 -1
  69. package/esm/presets/useSelectWithApply/hook.js +1 -1
  70. package/esm/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  71. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  72. package/esm/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  73. package/esm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  74. package/esm/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  75. package/esm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  76. package/esm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  77. package/esm/presets/useSelectWithLoading/hook.js +1 -1
  78. package/esm/presets/useSelectWithLoading/index.css +2 -2
  79. package/esm/shared/index.js +1 -1
  80. package/{list-popover-desktop-6bae9b47.js → list-popover-desktop-3e8f155e.js} +1 -1
  81. package/mobile/Component.mobile.js +1 -1
  82. package/mobile.module-6a431abb.js +6 -0
  83. package/modern/components/arrow/Component.js +1 -1
  84. package/modern/components/arrow/index.css +3 -3
  85. package/modern/components/base-checkmark/Component.js +1 -1
  86. package/modern/components/base-checkmark/index.css +6 -6
  87. package/modern/components/base-option/Component.js +1 -1
  88. package/modern/components/base-option/index.css +15 -15
  89. package/modern/components/base-select/Component.js +2 -2
  90. package/modern/components/base-select/components/list-desktop/list-popover-desktop.js +1 -1
  91. package/modern/components/base-select/components/list-mobile/list-bottom-sheet-mobile.js +1 -1
  92. package/modern/components/base-select/components/list-mobile/list-modal-mobile.js +1 -1
  93. package/modern/components/base-select/index.css +11 -11
  94. package/modern/components/base-select/mobile.css +12 -12
  95. package/modern/components/checkmark/Component.js +1 -1
  96. package/modern/components/checkmark/index.css +10 -10
  97. package/modern/components/checkmark-mobile/Component.js +1 -1
  98. package/modern/components/checkmark-mobile/index.css +6 -6
  99. package/modern/components/clear-button/Component.js +1 -1
  100. package/modern/components/clear-button/index.css +6 -6
  101. package/modern/components/field/Component.js +1 -1
  102. package/modern/components/field/index.css +12 -12
  103. package/modern/components/footer/Component.js +1 -1
  104. package/modern/components/footer/index.css +5 -5
  105. package/modern/components/optgroup/Component.js +1 -1
  106. package/modern/components/optgroup/index.css +6 -6
  107. package/modern/components/option/Component.js +1 -1
  108. package/modern/components/option/index.css +19 -19
  109. package/modern/components/options-list/Component.js +1 -1
  110. package/modern/components/options-list/index.css +10 -10
  111. package/modern/components/search/Component.js +1 -1
  112. package/modern/components/search/index.css +2 -2
  113. package/modern/components/virtual-options-list/Component.js +1 -1
  114. package/modern/components/virtual-options-list/index.css +15 -15
  115. package/modern/{list-popover-desktop-46e08681.js → list-popover-desktop-387dae64.js} +1 -1
  116. package/modern/mobile/Component.mobile.js +1 -1
  117. package/modern/mobile.module-5583797d.js +4 -0
  118. package/modern/presets/index.js +1 -1
  119. package/modern/presets/useSelectWithApply/hook.js +1 -1
  120. package/modern/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  121. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  122. package/modern/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  123. package/modern/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  124. package/modern/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  125. package/modern/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  126. package/modern/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  127. package/modern/presets/useSelectWithLoading/hook.js +1 -1
  128. package/modern/presets/useSelectWithLoading/index.css +2 -2
  129. package/modern/shared/index.js +1 -1
  130. package/moderncssm/Component.responsive.d.ts +7 -0
  131. package/moderncssm/Component.responsive.js +21 -0
  132. package/moderncssm/components/arrow/Component.d.ts +5 -0
  133. package/moderncssm/components/arrow/Component.js +8 -0
  134. package/moderncssm/components/arrow/index.d.ts +1 -0
  135. package/moderncssm/components/arrow/index.js +1 -0
  136. package/moderncssm/components/arrow/index.module.css +23 -0
  137. package/moderncssm/components/base-checkmark/Component.d.ts +5 -0
  138. package/moderncssm/components/base-checkmark/Component.js +15 -0
  139. package/moderncssm/components/base-checkmark/index.d.ts +1 -0
  140. package/moderncssm/components/base-checkmark/index.js +1 -0
  141. package/moderncssm/components/base-checkmark/index.module.css +30 -0
  142. package/moderncssm/components/base-option/Component.d.ts +4 -0
  143. package/moderncssm/components/base-option/Component.js +33 -0
  144. package/moderncssm/components/base-option/index.d.ts +1 -0
  145. package/moderncssm/components/base-option/index.js +1 -0
  146. package/moderncssm/components/base-option/index.module.css +81 -0
  147. package/moderncssm/components/base-select/Component.d.ts +14 -0
  148. package/moderncssm/components/base-select/Component.js +408 -0
  149. package/moderncssm/components/base-select/components/list-desktop/helpers/get-list-popover-desktop-props.d.ts +12 -0
  150. package/moderncssm/components/base-select/components/list-desktop/helpers/get-list-popover-desktop-props.js +15 -0
  151. package/moderncssm/components/base-select/components/list-desktop/list-popover-desktop.d.ts +9 -0
  152. package/moderncssm/components/base-select/components/list-desktop/list-popover-desktop.js +13 -0
  153. package/moderncssm/components/base-select/components/list-desktop/types/types.d.ts +3 -0
  154. package/moderncssm/components/base-select/components/list-desktop/types/types.js +1 -0
  155. package/moderncssm/components/base-select/components/list-mobile/helpers/get-list-bottom-sheet-mobile-props.d.ts +16 -0
  156. package/moderncssm/components/base-select/components/list-mobile/helpers/get-list-bottom-sheet-mobile-props.js +19 -0
  157. package/moderncssm/components/base-select/components/list-mobile/helpers/get-list-modal-mobile-props.d.ts +28 -0
  158. package/moderncssm/components/base-select/components/list-mobile/helpers/get-list-modal-mobile-props.js +18 -0
  159. package/moderncssm/components/base-select/components/list-mobile/helpers/index.d.ts +2 -0
  160. package/moderncssm/components/base-select/components/list-mobile/helpers/index.js +2 -0
  161. package/moderncssm/components/base-select/components/list-mobile/list-bottom-sheet-mobile.d.ts +15 -0
  162. package/moderncssm/components/base-select/components/list-mobile/list-bottom-sheet-mobile.js +24 -0
  163. package/moderncssm/components/base-select/components/list-mobile/list-mobile.d.ts +16 -0
  164. package/moderncssm/components/base-select/components/list-mobile/list-mobile.js +17 -0
  165. package/moderncssm/components/base-select/components/list-mobile/list-modal-mobile.d.ts +15 -0
  166. package/moderncssm/components/base-select/components/list-mobile/list-modal-mobile.js +32 -0
  167. package/moderncssm/components/base-select/components/list-mobile/types/types.d.ts +4 -0
  168. package/moderncssm/components/base-select/components/list-mobile/types/types.js +1 -0
  169. package/moderncssm/components/base-select/index.d.ts +1 -0
  170. package/moderncssm/components/base-select/index.js +1 -0
  171. package/moderncssm/components/base-select/index.module.css +81 -0
  172. package/moderncssm/components/base-select/mobile.module.css +48 -0
  173. package/moderncssm/components/base-select/types/component-types.d.ts +50 -0
  174. package/moderncssm/components/base-select/types/component-types.js +1 -0
  175. package/moderncssm/components/checkmark/Component.d.ts +5 -0
  176. package/moderncssm/components/checkmark/Component.js +20 -0
  177. package/moderncssm/components/checkmark/index.d.ts +1 -0
  178. package/moderncssm/components/checkmark/index.js +1 -0
  179. package/moderncssm/components/checkmark/index.module.css +59 -0
  180. package/moderncssm/components/checkmark-mobile/Component.d.ts +5 -0
  181. package/moderncssm/components/checkmark-mobile/Component.js +11 -0
  182. package/moderncssm/components/checkmark-mobile/index.d.ts +1 -0
  183. package/moderncssm/components/checkmark-mobile/index.js +1 -0
  184. package/moderncssm/components/checkmark-mobile/index.module.css +34 -0
  185. package/moderncssm/components/clear-button/Component.d.ts +5 -0
  186. package/moderncssm/components/clear-button/Component.js +9 -0
  187. package/moderncssm/components/clear-button/index.d.ts +1 -0
  188. package/moderncssm/components/clear-button/index.js +1 -0
  189. package/moderncssm/components/clear-button/index.module.css +47 -0
  190. package/moderncssm/components/field/Component.d.ts +13 -0
  191. package/moderncssm/components/field/Component.js +35 -0
  192. package/moderncssm/components/field/index.d.ts +1 -0
  193. package/moderncssm/components/field/index.js +1 -0
  194. package/moderncssm/components/field/index.module.css +74 -0
  195. package/moderncssm/components/footer/Component.d.ts +12 -0
  196. package/moderncssm/components/footer/Component.js +22 -0
  197. package/moderncssm/components/footer/index.d.ts +1 -0
  198. package/moderncssm/components/footer/index.js +1 -0
  199. package/moderncssm/components/footer/index.module.css +28 -0
  200. package/moderncssm/components/index.d.ts +9 -0
  201. package/moderncssm/components/index.js +9 -0
  202. package/moderncssm/components/native-select/Component.d.ts +25 -0
  203. package/moderncssm/components/native-select/Component.js +13 -0
  204. package/moderncssm/components/native-select/index.d.ts +1 -0
  205. package/moderncssm/components/native-select/index.js +1 -0
  206. package/moderncssm/components/optgroup/Component.d.ts +5 -0
  207. package/moderncssm/components/optgroup/Component.js +11 -0
  208. package/moderncssm/components/optgroup/index.d.ts +1 -0
  209. package/moderncssm/components/optgroup/index.js +1 -0
  210. package/moderncssm/components/optgroup/index.module.css +46 -0
  211. package/moderncssm/components/option/Component.d.ts +4 -0
  212. package/moderncssm/components/option/Component.js +23 -0
  213. package/moderncssm/components/option/index.d.ts +1 -0
  214. package/moderncssm/components/option/index.js +1 -0
  215. package/moderncssm/components/option/index.module.css +111 -0
  216. package/moderncssm/components/options-list/Component.d.ts +5 -0
  217. package/moderncssm/components/options-list/Component.js +88 -0
  218. package/moderncssm/components/options-list/index.d.ts +1 -0
  219. package/moderncssm/components/options-list/index.js +1 -0
  220. package/moderncssm/components/options-list/index.module.css +48 -0
  221. package/moderncssm/components/search/Component.d.ts +5 -0
  222. package/moderncssm/components/search/Component.js +9 -0
  223. package/moderncssm/components/search/index.d.ts +1 -0
  224. package/moderncssm/components/search/index.js +1 -0
  225. package/moderncssm/components/search/index.module.css +14 -0
  226. package/moderncssm/components/virtual-options-list/Component.d.ts +5 -0
  227. package/moderncssm/components/virtual-options-list/Component.js +138 -0
  228. package/moderncssm/components/virtual-options-list/index.d.ts +1 -0
  229. package/moderncssm/components/virtual-options-list/index.js +1 -0
  230. package/moderncssm/components/virtual-options-list/index.module.css +79 -0
  231. package/moderncssm/consts.d.ts +12 -0
  232. package/moderncssm/consts.js +13 -0
  233. package/moderncssm/desktop/Component.desktop.d.ts +6 -0
  234. package/moderncssm/desktop/Component.desktop.js +17 -0
  235. package/moderncssm/desktop/index.d.ts +2 -0
  236. package/moderncssm/desktop/index.js +1 -0
  237. package/moderncssm/hook-8c561f14.d.ts +115 -0
  238. package/moderncssm/hook-a8bc7fe8.d.ts +17 -0
  239. package/moderncssm/hook-a8bc7fe8.js +169 -0
  240. package/moderncssm/index.d.ts +2 -0
  241. package/moderncssm/index.js +1 -0
  242. package/moderncssm/mobile/Component.mobile.d.ts +5 -0
  243. package/moderncssm/mobile/Component.mobile.js +54 -0
  244. package/moderncssm/mobile/Component.modal.mobile.d.ts +4 -0
  245. package/moderncssm/mobile/Component.modal.mobile.js +6 -0
  246. package/moderncssm/mobile/index.d.ts +3 -0
  247. package/moderncssm/mobile/index.js +2 -0
  248. package/moderncssm/presets/index.d.ts +3 -0
  249. package/moderncssm/presets/index.js +3 -0
  250. package/moderncssm/presets/useLazyLoading/hook.d.ts +48 -0
  251. package/moderncssm/presets/useLazyLoading/hook.js +215 -0
  252. package/moderncssm/presets/useSelectWithApply/hook.d.ts +0 -0
  253. package/moderncssm/presets/useSelectWithApply/hook.js +4 -0
  254. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/Component.d.ts +0 -0
  255. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/Component.js +6 -0
  256. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/footer/Component.d.ts +12 -0
  257. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +12 -0
  258. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css +11 -0
  259. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/Component.d.ts +11 -0
  260. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/Component.js +9 -0
  261. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/header/index.module.css +9 -0
  262. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -0
  263. package/moderncssm/presets/useSelectWithApply/options-list-with-apply/index.js +1 -0
  264. package/moderncssm/presets/useSelectWithLoading/hook.d.ts +13 -0
  265. package/moderncssm/presets/useSelectWithLoading/hook.js +23 -0
  266. package/moderncssm/presets/useSelectWithLoading/index.module.css +7 -0
  267. package/moderncssm/shared/index.d.ts +13 -0
  268. package/moderncssm/shared/index.js +14 -0
  269. package/moderncssm/typings.d.ts +744 -0
  270. package/moderncssm/typings.js +1 -0
  271. package/moderncssm/utils.d.ts +81 -0
  272. package/moderncssm/utils.js +173 -0
  273. package/moderncssm/vars.css +10 -0
  274. package/package.json +14 -14
  275. package/presets/index.js +1 -1
  276. package/presets/useSelectWithApply/hook.js +1 -1
  277. package/presets/useSelectWithApply/options-list-with-apply/Component.js +1 -1
  278. package/presets/useSelectWithApply/options-list-with-apply/footer/Component.js +1 -1
  279. package/presets/useSelectWithApply/options-list-with-apply/footer/index.css +3 -3
  280. package/presets/useSelectWithApply/options-list-with-apply/header/Component.js +1 -1
  281. package/presets/useSelectWithApply/options-list-with-apply/header/index.css +3 -3
  282. package/presets/useSelectWithApply/options-list-with-apply/index.d.ts +1 -1
  283. package/presets/useSelectWithApply/options-list-with-apply/index.js +1 -1
  284. package/presets/useSelectWithLoading/hook.js +1 -1
  285. package/presets/useSelectWithLoading/index.css +2 -2
  286. package/shared/index.js +1 -1
  287. package/src/components/arrow/index.module.css +1 -1
  288. package/src/components/base-checkmark/index.module.css +1 -1
  289. package/src/components/base-option/index.module.css +1 -1
  290. package/src/components/base-select/index.module.css +1 -1
  291. package/src/components/base-select/mobile.module.css +1 -1
  292. package/src/components/checkmark/index.module.css +1 -1
  293. package/src/components/checkmark-mobile/index.module.css +1 -1
  294. package/src/components/field/index.module.css +1 -1
  295. package/src/components/footer/index.module.css +1 -1
  296. package/src/components/optgroup/index.module.css +1 -1
  297. package/src/components/option/index.module.css +1 -1
  298. package/src/components/options-list/index.module.css +1 -1
  299. package/src/components/search/index.module.css +1 -1
  300. package/src/components/virtual-options-list/index.module.css +1 -1
  301. package/src/presets/useSelectWithApply/options-list-with-apply/footer/index.module.css +1 -1
  302. package/src/presets/useSelectWithApply/options-list-with-apply/header/index.module.css +1 -1
  303. package/esm/mobile.module-eaf56278.js +0 -4
  304. package/mobile.module-8d14caac.js +0 -6
  305. package/modern/mobile.module-2f7796c1.js +0 -4
  306. /package/esm/{hook-570b8ac7.d.ts → hook-4a4a5429.d.ts} +0 -0
  307. /package/esm/{hook-570b8ac7.js → hook-4a4a5429.js} +0 -0
  308. /package/esm/{list-popover-desktop-446b6d5f.d.ts → list-popover-desktop-3b5200e4.d.ts} +0 -0
  309. /package/{hook-a71861cb.d.ts → hook-06aedfaf.d.ts} +0 -0
  310. /package/{hook-a71861cb.js → hook-06aedfaf.js} +0 -0
  311. /package/{list-popover-desktop-6bae9b47.d.ts → list-popover-desktop-3e8f155e.d.ts} +0 -0
  312. /package/modern/{hook-0b565ee2.d.ts → hook-07ac3ee1.d.ts} +0 -0
  313. /package/modern/{hook-0b565ee2.js → hook-07ac3ee1.js} +0 -0
  314. /package/modern/{list-popover-desktop-46e08681.d.ts → list-popover-desktop-387dae64.d.ts} +0 -0
@@ -0,0 +1 @@
1
+ export * from "./Component";
@@ -0,0 +1 @@
1
+ export { VirtualOptionsList } from './Component.js';
@@ -0,0 +1,79 @@
1
+ /* */
2
+ :root {
3
+
4
+ /* options list */
5
+ --select-options-list-empty-placeholder-color: var(--color-light-text-secondary);
6
+ --select-option-divider-display: none;
7
+ --select-option-divider-background: var(--color-light-neutral-400);
8
+
9
+ /* option */
10
+
11
+ --select-option-left-padding: var(--gap-12);
12
+ --select-option-right-padding: var(--gap-12);
13
+
14
+ /* checkmark */
15
+
16
+ /* optgroup */
17
+ }
18
+ .virtualOptionsList {
19
+ width: 100%;
20
+ outline: none;
21
+ box-sizing: border-box;
22
+ position: sticky;
23
+ justify-content: space-between;
24
+ }
25
+ .virtualOptionsListHeader {
26
+ box-sizing: border-box;
27
+ border-bottom: 1px solid var(--color-light-neutral-300);
28
+ }
29
+ .virtualOptionsListFooter {
30
+ position: sticky;
31
+ bottom: 0;
32
+ box-sizing: border-box;
33
+ border-top: 1px solid transparent
34
+ }
35
+ .virtualOptionsListFooter.withBorder {
36
+ border-top: 1px solid var(--color-light-neutral-300);
37
+ }
38
+ .scrollable {
39
+ position: relative;
40
+ overflow: auto;
41
+ width: 100%;
42
+ }
43
+ .inner {
44
+ position: relative;
45
+ width: 100%;
46
+ }
47
+ .virtualRow {
48
+ position: absolute;
49
+ top: 0;
50
+ left: 0;
51
+ width: 100%
52
+ }
53
+ .virtualRow:before {
54
+ content: '';
55
+ position: absolute;
56
+ z-index: 1;
57
+ left: var(--select-option-left-padding);
58
+ right: var(--select-option-right-padding);
59
+ top: 0;
60
+ height: 1px;
61
+ background: var(--select-option-divider-background);
62
+ display: var(--select-option-divider-display);
63
+ }
64
+ .virtualRow:first-child:before {
65
+ display: none;
66
+ }
67
+ .highlighted:before,
68
+ .highlighted + .virtualRow:before {
69
+ display: none;
70
+ }
71
+ .emptyPlaceholder {
72
+ padding: var(--gap-16) var(--gap-12);
73
+ color: var(--select-options-list-empty-placeholder-color);
74
+ flex: 1;
75
+ }
76
+ .size-64 .emptyPlaceholder,
77
+ .size-72 .emptyPlaceholder {
78
+ padding: var(--gap-24) var(--gap-16);
79
+ }
@@ -0,0 +1,12 @@
1
+ declare const DEFAULT_VISIBLE_OPTIONS = 5;
2
+ declare const SIZE_TO_CLASSNAME_MAP: {
3
+ s: string;
4
+ m: string;
5
+ l: string;
6
+ xl: string;
7
+ 48: string;
8
+ 56: string;
9
+ 64: string;
10
+ 72: string;
11
+ };
12
+ export { DEFAULT_VISIBLE_OPTIONS, SIZE_TO_CLASSNAME_MAP };
@@ -0,0 +1,13 @@
1
+ const DEFAULT_VISIBLE_OPTIONS = 5;
2
+ const SIZE_TO_CLASSNAME_MAP = {
3
+ s: 'size-48',
4
+ m: 'size-56',
5
+ l: 'size-64',
6
+ xl: 'size-72',
7
+ 48: 'size-48',
8
+ 56: 'size-56',
9
+ 64: 'size-64',
10
+ 72: 'size-72',
11
+ };
12
+
13
+ export { DEFAULT_VISIBLE_OPTIONS, SIZE_TO_CLASSNAME_MAP };
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ import React from 'react';
3
+ declare const SelectDesktop: React.ForwardRefExoticComponent<Omit<import("../typings").BaseSelectProps, "fieldProps"> & {
4
+ fieldProps?: import("../typings").SelectFieldProps | undefined;
5
+ } & React.RefAttributes<HTMLDivElement>>;
6
+ export { SelectDesktop };
@@ -0,0 +1,17 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { FormControlDesktop } from '@alfalab/core-components-form-control/moderncssm/desktop';
3
+ import { Popover } from '@alfalab/core-components-popover/moderncssm';
4
+ import { Arrow } from '../components/arrow/Component.js';
5
+ import { BaseSelect } from '../components/base-select/Component.js';
6
+ import { Field } from '../components/field/Component.js';
7
+ import { Optgroup } from '../components/optgroup/Component.js';
8
+ import { Option } from '../components/option/Component.js';
9
+ import { OptionsList } from '../components/options-list/Component.js';
10
+ import { Search } from '../components/search/Component.js';
11
+
12
+ const SelectDesktop = forwardRef(({ Arrow: Arrow$1 = Arrow, Field: Field$1 = Field, OptionsList: OptionsList$1 = OptionsList, Optgroup: Optgroup$1 = Optgroup, Option: Option$1 = Option, Search: Search$1 = Search, fieldProps = {}, ...restProps }, ref) => (React.createElement(BaseSelect, { ref: ref, view: 'desktop', Option: Option$1, Field: Field$1, fieldProps: {
13
+ FormControlComponent: FormControlDesktop,
14
+ ...fieldProps,
15
+ }, Search: Search$1, Optgroup: Optgroup$1, OptionsList: OptionsList$1, Arrow: Arrow$1, Popover: Popover, ...restProps })));
16
+
17
+ export { SelectDesktop };
@@ -0,0 +1,2 @@
1
+ export { SelectDesktop } from "./Component.desktop";
2
+ export type { SelectDesktopProps } from "../typings";
@@ -0,0 +1 @@
1
+ export { SelectDesktop } from './Component.desktop.js';
@@ -0,0 +1,115 @@
1
+ /// <reference types="react" />
2
+ import { BaseSelectProps, OptionShape } from "./typings";
3
+ type UseSelectWithApplyProps = {
4
+ /**
5
+ * Список выбранных пунктов
6
+ */
7
+ selected: BaseSelectProps['selected'];
8
+ /**
9
+ * Список вариантов выбора
10
+ */
11
+ options: BaseSelectProps['options'];
12
+ /**
13
+ * Обработчик выбора
14
+ */
15
+ onChange: BaseSelectProps['onChange'];
16
+ /**
17
+ * Компонент выпадающего меню
18
+ */
19
+ OptionsList?: BaseSelectProps['OptionsList'];
20
+ /**
21
+ * Пропсы, которые будут прокинуты в компонент списка
22
+ */
23
+ optionsListProps?: BaseSelectProps['optionsListProps'];
24
+ /**
25
+ * Включает отображение поиска
26
+ */
27
+ showSearch?: BaseSelectProps['showSearch'];
28
+ /**
29
+ * Настройки поиска
30
+ */
31
+ searchProps?: BaseSelectProps['searchProps'];
32
+ /**
33
+ * Показывать кнопку очистки
34
+ */
35
+ showClear?: boolean;
36
+ /**
37
+ * Показывать пункт "Выбрать все"
38
+ */
39
+ showSelectAll?: boolean;
40
+ /**
41
+ * Показывать пункт "Выбрать все" в заголовке списка
42
+ */
43
+ showHeaderWithSelectAll?: boolean;
44
+ };
45
+ declare const SELECT_ALL_KEY = "select_all";
46
+ declare function useSelectWithApply({ options, selected, onChange, OptionsList, optionsListProps, showClear, showSelectAll, showHeaderWithSelectAll, showSearch, searchProps, }: UseSelectWithApplyProps): {
47
+ OptionsList: import("react").ForwardRefExoticComponent<import("./typings").OptionsListProps & {
48
+ showClear?: boolean | undefined;
49
+ onClose?: (() => void) | undefined;
50
+ /**
51
+ * Обработчик выбора
52
+ */
53
+ selectedDraft?: OptionShape[] | undefined;
54
+ OptionsList?: import("react").FC<import("./typings").OptionsListProps & import("react").RefAttributes<HTMLDivElement>> | undefined;
55
+ Footer?: import("react").FC<import("./presets/useSelectWithApply/options-list-with-apply/footer/Component").FooterProps> | undefined;
56
+ Header?: import("react").FC<import("./presets/useSelectWithApply/options-list-with-apply/header/Component").HeaderProps> | undefined;
57
+ headerProps?: import("./presets/useSelectWithApply/options-list-with-apply/header/Component").HeaderProps | undefined;
58
+ showHeaderWithSelectAll?: boolean | undefined;
59
+ setSelectedDraft?: ((selectedDraft: OptionShape[]) => void) | undefined;
60
+ } & import("react").RefAttributes<HTMLDivElement>>;
61
+ optionsListProps: {
62
+ OptionsList: import("react").ComponentType<import("./typings").OptionsListProps & import("react").RefAttributes<HTMLDivElement>> | undefined;
63
+ showClear: boolean;
64
+ onClear: () => void;
65
+ onApply: () => void;
66
+ onClose: () => void;
67
+ selectedDraft: OptionShape[];
68
+ setSelectedDraft: import("react").Dispatch<import("react").SetStateAction<OptionShape[]>>;
69
+ showHeaderWithSelectAll: boolean;
70
+ headerProps: {
71
+ indeterminate: boolean;
72
+ checked: boolean;
73
+ onChange: () => void;
74
+ };
75
+ };
76
+ allowUnselect: boolean;
77
+ multiple: boolean;
78
+ options: (OptionShape | import("./typings").GroupShape | {
79
+ key: string;
80
+ content: string;
81
+ })[];
82
+ onChange: (payload: import("./typings").BaseSelectChangePayload) => void;
83
+ selected: string | OptionShape | (string | OptionShape)[] | null | undefined;
84
+ showSearch: boolean;
85
+ searchProps: {
86
+ value: string;
87
+ onChange: ((value: string) => void) | undefined;
88
+ componentProps?: import("./typings").SearchProps | undefined;
89
+ accessor?: ((option: OptionShape) => string) | undefined;
90
+ filterFn?: ((optionText: string, search: string) => boolean) | undefined;
91
+ filterGroup?: boolean | undefined;
92
+ groupAccessor?: ((group: import("./typings").GroupShape) => string | undefined) | undefined;
93
+ } | undefined;
94
+ originalProps: {
95
+ options: (OptionShape | import("./typings").GroupShape)[];
96
+ selected: string | OptionShape | (string | OptionShape)[] | null | undefined;
97
+ onChange: (payload: import("./typings").BaseSelectChangePayload) => void;
98
+ OptionsList: import("react").ComponentType<import("./typings").OptionsListProps & import("react").RefAttributes<HTMLDivElement>> | undefined;
99
+ optionsListProps: unknown;
100
+ showClear: boolean;
101
+ showSelectAll: boolean;
102
+ showHeaderWithSelectAll: boolean;
103
+ showSearch: boolean;
104
+ searchProps: {
105
+ componentProps?: import("./typings").SearchProps | undefined;
106
+ accessor?: ((option: OptionShape) => string) | undefined;
107
+ filterFn?: ((optionText: string, search: string) => boolean) | undefined;
108
+ value?: string | undefined;
109
+ onChange?: ((value: string) => void) | undefined;
110
+ filterGroup?: boolean | undefined;
111
+ groupAccessor?: ((group: import("./typings").GroupShape) => string | undefined) | undefined;
112
+ };
113
+ };
114
+ };
115
+ export { UseSelectWithApplyProps, SELECT_ALL_KEY, useSelectWithApply };
@@ -0,0 +1,17 @@
1
+ /// <reference types="react" />
2
+ import React from 'react';
3
+ import { OptionShape, OptionsListProps } from "./typings";
4
+ import { FooterProps } from "./presets/useSelectWithApply/options-list-with-apply/footer/Component";
5
+ import { HeaderProps } from "./presets/useSelectWithApply/options-list-with-apply/header/Component";
6
+ declare const OptionsListWithApply: React.ForwardRefExoticComponent<OptionsListProps & {
7
+ showClear?: boolean | undefined;
8
+ onClose?: (() => void) | undefined;
9
+ selectedDraft?: OptionShape[] | undefined;
10
+ OptionsList?: React.FC<OptionsListProps & React.RefAttributes<HTMLDivElement>> | undefined;
11
+ Footer?: React.FC<FooterProps> | undefined;
12
+ Header?: React.FC<HeaderProps> | undefined;
13
+ headerProps?: HeaderProps | undefined;
14
+ showHeaderWithSelectAll?: boolean | undefined;
15
+ setSelectedDraft?: ((selectedDraft: OptionShape[]) => void) | undefined;
16
+ } & React.RefAttributes<HTMLDivElement>>;
17
+ export { OptionsListWithApply };
@@ -0,0 +1,169 @@
1
+ import React, { forwardRef, useCallback, useEffect, useState, useMemo, useRef } from 'react';
2
+ import deepEqual from 'deep-equal';
3
+ import { defaultAccessor, defaultFilterFn, defaultGroupAccessor, processOptions, isGroup } from './utils.js';
4
+ import { OptionsList } from './components/options-list/Component.js';
5
+ import { DEFAULT_VISIBLE_OPTIONS } from './consts.js';
6
+ import { Footer } from './presets/useSelectWithApply/options-list-with-apply/footer/Component.js';
7
+ import { Header } from './presets/useSelectWithApply/options-list-with-apply/header/Component.js';
8
+
9
+ const OptionsListWithApply = forwardRef(({ toggleMenu, getOptionProps: defaultGetOptionProps, showClear = true, showHeaderWithSelectAll, selectedDraft = [], flatOptions = [], OptionsList: OptionsList$1 = OptionsList, onApply = () => null, onClear = () => null, onClose = () => null, visibleOptions = DEFAULT_VISIBLE_OPTIONS, Footer: Footer$1 = Footer, Header: Header$1 = Header, header, headerProps, setSelectedDraft, ...restProps }, ref) => {
10
+ const getOptionProps = useCallback((option, index) => {
11
+ const optionProps = defaultGetOptionProps(option, index);
12
+ const selected = option.key === SELECT_ALL_KEY
13
+ ? selectedDraft.length === flatOptions.length - 1
14
+ : selectedDraft.some(({ key }) => key === option.key);
15
+ return {
16
+ ...optionProps,
17
+ selected,
18
+ };
19
+ }, [defaultGetOptionProps, flatOptions.length, selectedDraft]);
20
+ const handleApply = useCallback(() => {
21
+ onApply();
22
+ toggleMenu();
23
+ }, [onApply, toggleMenu]);
24
+ const handleClear = useCallback(() => {
25
+ onClear();
26
+ toggleMenu();
27
+ }, [onClear, toggleMenu]);
28
+ const handleSelectedItems = useCallback((items) => {
29
+ setSelectedDraft?.(items);
30
+ }, [setSelectedDraft]);
31
+ useEffect(() => {
32
+ const activeElement = document.activeElement;
33
+ return () => {
34
+ onClose();
35
+ if (activeElement) {
36
+ activeElement.focus();
37
+ }
38
+ };
39
+ // eslint-disable-next-line react-hooks/exhaustive-deps
40
+ }, []);
41
+ const renderHeader = () => {
42
+ if (!showHeaderWithSelectAll && !header)
43
+ return undefined;
44
+ return (React.createElement(React.Fragment, null,
45
+ header,
46
+ showHeaderWithSelectAll && flatOptions.length > 0 && (React.createElement(Header$1, { ...headerProps }))));
47
+ };
48
+ return (React.createElement(OptionsList$1, { ...restProps, ref: ref, visibleOptions: visibleOptions, toggleMenu: toggleMenu, flatOptions: flatOptions, getOptionProps: getOptionProps, onApply: handleApply, onClear: handleClear, header: renderHeader(), selectedItems: selectedDraft, setSelectedItems: handleSelectedItems, footer: React.createElement(Footer$1, { handleApply: handleApply, handleClear: handleClear, showClear: showClear, selectedDraft: selectedDraft, dataTestId: restProps?.dataTestId }) }));
49
+ });
50
+
51
+ const SELECT_ALL_KEY = 'select_all';
52
+ const selectAllOption = { key: SELECT_ALL_KEY, content: 'Выбрать все' };
53
+ function useSelectWithApply({ options, selected, onChange = () => null, OptionsList, optionsListProps = {}, showClear = true, showSelectAll = false, showHeaderWithSelectAll = false, showSearch = false, searchProps = {}, }) {
54
+ const [searchState, setSearchState] = useState('');
55
+ const [search, setSearch] = typeof searchProps?.value === 'string'
56
+ ? [searchProps.value, searchProps.onChange]
57
+ : [searchState, setSearchState];
58
+ const accessor = searchProps.accessor || defaultAccessor;
59
+ const filterFn = searchProps.filterFn || defaultFilterFn;
60
+ const groupAccessor = searchProps.groupAccessor ?? defaultGroupAccessor;
61
+ const filterGroup = searchProps.filterGroup ?? false;
62
+ const { flatOptions, filteredOptions, selectedOptions } = useMemo(() => processOptions(options, selected, showSearch
63
+ ? (option) => {
64
+ if (isGroup(option)) {
65
+ const groupAccessorValue = groupAccessor(option);
66
+ return (typeof groupAccessorValue === 'string' &&
67
+ filterFn(groupAccessorValue, search));
68
+ }
69
+ return filterFn(accessor(option), search);
70
+ }
71
+ : undefined, filterGroup), [options, selected, showSearch, filterGroup, filterFn, accessor, search, groupAccessor]);
72
+ const [selectedDraft, setSelectedDraft] = useState(selectedOptions);
73
+ const selectedOptionsRef = useRef(selectedOptions);
74
+ const handleApply = () => {
75
+ onChange({
76
+ selected: selectedDraft[0],
77
+ selectedMultiple: selectedDraft,
78
+ initiator: null,
79
+ });
80
+ };
81
+ const handleClear = () => {
82
+ setSelectedDraft([]);
83
+ onChange({
84
+ selected: null,
85
+ selectedMultiple: [],
86
+ initiator: null,
87
+ });
88
+ };
89
+ const handleToggleAll = () => {
90
+ setSelectedDraft(flatOptions.length === selectedDraft.length ? [] : flatOptions);
91
+ };
92
+ const handleChange = ({ initiator, ...restArgs }) => {
93
+ if (!initiator) {
94
+ onChange({
95
+ initiator: null,
96
+ ...restArgs,
97
+ });
98
+ return;
99
+ }
100
+ const initiatorSelected = selectedDraft.includes(initiator) ||
101
+ (initiator.key === SELECT_ALL_KEY && selectedDraft.length === flatOptions.length);
102
+ if (initiator.key === SELECT_ALL_KEY) {
103
+ setSelectedDraft(initiatorSelected ? [] : flatOptions);
104
+ }
105
+ else {
106
+ setSelectedDraft(initiatorSelected
107
+ ? selectedDraft.filter((o) => o !== initiator)
108
+ : selectedDraft.concat(initiator));
109
+ }
110
+ };
111
+ const handleClose = () => setSelectedDraft(selectedOptionsRef.current);
112
+ useEffect(() => {
113
+ // устанавливать selectedDraft если selectedOptions изменились
114
+ if (!deepEqual(selectedOptionsRef.current, selectedOptions)) {
115
+ setSelectedDraft(selectedOptions);
116
+ }
117
+ selectedOptionsRef.current = selectedOptions;
118
+ }, [selectedOptions]);
119
+ const memoizedOptions = useMemo(() => filteredOptions.length && showSelectAll
120
+ ? [selectAllOption, ...filteredOptions]
121
+ : filteredOptions, [filteredOptions, showSelectAll]);
122
+ return {
123
+ OptionsList: OptionsListWithApply,
124
+ optionsListProps: {
125
+ ...optionsListProps,
126
+ OptionsList,
127
+ showClear,
128
+ onClear: handleClear,
129
+ onApply: handleApply,
130
+ onClose: handleClose,
131
+ selectedDraft,
132
+ setSelectedDraft,
133
+ showHeaderWithSelectAll,
134
+ headerProps: {
135
+ indeterminate: !!selectedDraft.length && selectedDraft.length < flatOptions.length,
136
+ checked: selectedDraft.length === flatOptions.length,
137
+ onChange: handleToggleAll,
138
+ },
139
+ },
140
+ allowUnselect: true,
141
+ multiple: true,
142
+ options: memoizedOptions,
143
+ onChange: handleChange,
144
+ selected,
145
+ showSearch,
146
+ searchProps: showSearch
147
+ ? {
148
+ ...searchProps,
149
+ value: search,
150
+ onChange: setSearch,
151
+ }
152
+ : undefined,
153
+ /* Костыль для респонсив селекта. В мобильную версию хук уже зашит, и это единственный передать в мобилку оригинальные пропсы */
154
+ originalProps: {
155
+ options,
156
+ selected,
157
+ onChange,
158
+ OptionsList,
159
+ optionsListProps,
160
+ showClear,
161
+ showSelectAll,
162
+ showHeaderWithSelectAll,
163
+ showSearch,
164
+ searchProps,
165
+ },
166
+ };
167
+ }
168
+
169
+ export { OptionsListWithApply as O, SELECT_ALL_KEY as S, useSelectWithApply as u };
@@ -0,0 +1,2 @@
1
+ export { SelectResponsive as Select } from "./Component.responsive";
2
+ export type { SelectProps } from "./typings";
@@ -0,0 +1 @@
1
+ export { SelectResponsive as Select } from './Component.responsive.js';
@@ -0,0 +1,5 @@
1
+ /// <reference types="react" />
2
+ import React from 'react';
3
+ import { SelectMobileProps } from "../typings";
4
+ declare const SelectMobile: React.ForwardRefExoticComponent<SelectMobileProps & React.RefAttributes<unknown>>;
5
+ export { SelectMobile };
@@ -0,0 +1,54 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { BottomSheet } from '@alfalab/core-components-bottom-sheet/moderncssm';
3
+ import { FormControlMobile } from '@alfalab/core-components-form-control/moderncssm/mobile';
4
+ import { ModalMobile } from '@alfalab/core-components-modal/moderncssm/mobile';
5
+ import { Arrow } from '../components/arrow/Component.js';
6
+ import { BaseSelect } from '../components/base-select/Component.js';
7
+ import { Field } from '../components/field/Component.js';
8
+ import { Footer } from '../components/footer/Component.js';
9
+ import { Optgroup } from '../components/optgroup/Component.js';
10
+ import { Option } from '../components/option/Component.js';
11
+ import { OptionsList } from '../components/options-list/Component.js';
12
+ import { Search } from '../components/search/Component.js';
13
+ import { VirtualOptionsList } from '../components/virtual-options-list/Component.js';
14
+ import { u as useSelectWithApply } from '../hook-a8bc7fe8.js';
15
+ import { Header } from '../presets/useSelectWithApply/options-list-with-apply/header/Component.js';
16
+
17
+ const VIRTUAL_OPTIONS_LIST_THRESHOLD = 30;
18
+ const SelectMobile = forwardRef(({ autocomplete = false, multiple = false, allowUnselect = false, disabled = false, closeOnSelect = !multiple, circularNavigation = false, defaultOpen = false, open: openProp, size = 56, optionsSize = 56, fieldProps = {}, optionProps = {}, optionsListProps = {}, Arrow: Arrow$1 = Arrow, Field: Field$1 = Field, Optgroup: Optgroup$1 = Optgroup, Option: Option$1 = Option, Search: Search$1 = Search, selected, options, OptionsList: OptionsList$1 = options.length > VIRTUAL_OPTIONS_LIST_THRESHOLD
19
+ ? VirtualOptionsList
20
+ : OptionsList, onChange, showClear = true, showSelectAll, showHeaderWithSelectAll, useWithApplyHook = multiple, showSearch, searchProps, ...restProps }, ref) => {
21
+ const applyProps = useSelectWithApply({
22
+ optionsListProps: {
23
+ ...optionsListProps,
24
+ Footer,
25
+ },
26
+ OptionsList: OptionsList$1,
27
+ showSearch,
28
+ searchProps,
29
+ selected,
30
+ options,
31
+ onChange,
32
+ showClear,
33
+ showSelectAll,
34
+ });
35
+ const bottomAddons = useWithApplyHook && showHeaderWithSelectAll && (React.createElement(Header, { ...applyProps.optionsListProps.headerProps, mobile: true }));
36
+ return (React.createElement(BaseSelect, { ref: ref, view: 'mobile', autocomplete: autocomplete, multiple: multiple, allowUnselect: allowUnselect, disabled: disabled, closeOnSelect: closeOnSelect, circularNavigation: circularNavigation, defaultOpen: defaultOpen, open: openProp, size: size, optionsSize: optionsSize, fieldProps: {
37
+ FormControlComponent: FormControlMobile,
38
+ ...fieldProps,
39
+ }, optionProps: optionProps, Arrow: Arrow$1, Field: Field$1, Optgroup: Optgroup$1, Option: Option$1, Search: Search$1, options: options, selected: selected, onChange: onChange, OptionsList: OptionsList$1, showSearch: showSearch, searchProps: searchProps, BottomSheet: BottomSheet, ModalMobile: ModalMobile, optionsListProps: optionsListProps, ...restProps, ...(restProps.isBottomSheet === false
40
+ ? {
41
+ modalHeaderProps: {
42
+ bottomAddons,
43
+ ...restProps.modalHeaderProps,
44
+ },
45
+ }
46
+ : {
47
+ bottomSheetProps: {
48
+ bottomAddons,
49
+ ...restProps.bottomSheetProps,
50
+ },
51
+ }), ...(useWithApplyHook && applyProps) }));
52
+ });
53
+
54
+ export { SelectMobile };
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import React from 'react';
3
+ declare const SelectModalMobile: React.ForwardRefExoticComponent<Omit<import("../typings").BaseSelectProps, "Checkmark"> & import("../typings").AdditionalMobileProps & import("../typings").ModalSelectMobileProps & React.RefAttributes<unknown>>;
4
+ export { SelectModalMobile };
@@ -0,0 +1,6 @@
1
+ import React, { forwardRef } from 'react';
2
+ import { SelectMobile } from './Component.mobile.js';
3
+
4
+ const SelectModalMobile = forwardRef((props, ref) => (React.createElement(SelectMobile, { ...props, isBottomSheet: false, ref: ref })));
5
+
6
+ export { SelectModalMobile };
@@ -0,0 +1,3 @@
1
+ export { SelectMobile } from "./Component.mobile";
2
+ export { SelectModalMobile } from "./Component.modal.mobile";
3
+ export type { SelectMobileProps, SelectModalMobileProps } from "../typings";
@@ -0,0 +1,2 @@
1
+ export { SelectMobile } from './Component.mobile.js';
2
+ export { SelectModalMobile } from './Component.modal.mobile.js';
@@ -0,0 +1,3 @@
1
+ export * from "./useSelectWithLoading/hook";
2
+ export * from "./useLazyLoading/hook";
3
+ export * from "../hook-8c561f14";
@@ -0,0 +1,3 @@
1
+ export { useSelectWithLoading } from './useSelectWithLoading/hook.js';
2
+ export { useLazyLoading } from './useLazyLoading/hook.js';
3
+ export { S as SELECT_ALL_KEY, u as useSelectWithApply } from '../hook-a8bc7fe8.js';
@@ -0,0 +1,48 @@
1
+ /// <reference types="react" />
2
+ import React from 'react';
3
+ import { OptionProps, OptionShape } from "../../typings";
4
+ type OptionsFetcherResponse = {
5
+ options: OptionShape[];
6
+ hasMore: boolean;
7
+ };
8
+ type useLazyLoadingProps = {
9
+ /** Количество элементов на "странице" */
10
+ limit?: number;
11
+ /** Начальный номер "страницы" */
12
+ initialOffset?: number;
13
+ /** Скелетон загружаемых элементов */
14
+ skeleton?: React.ReactNode;
15
+ /** Компонент пункта меню */
16
+ Option?: React.FC<OptionProps>;
17
+ /**
18
+ * Функция-загрузчик опций.
19
+ * @param offset - текущая страница
20
+ * @param limit - количество элементов на странице
21
+ * @param queryString - строчные данные, пробрасываемые для поиска из кастомного инпута, расположенного в заголовке OptionsList
22
+ * @returns Promise<{
23
+ * options - список опций следующей "страницы". Они аппендятся к предыдущим
24
+ * hasMore - указывает, есть ли еще незагруженные элементы (в случае false перестает загружать "следующую страницу")
25
+ * }>
26
+ */
27
+ optionsFetcher(offset: number, limit: number, queryString?: string): Promise<OptionsFetcherResponse>;
28
+ };
29
+ declare function useLazyLoading({ limit, initialOffset, optionsFetcher, skeleton, Option, }: useLazyLoadingProps): {
30
+ optionsProps: {
31
+ Option: (props: OptionProps) => React.JSX.Element;
32
+ options: OptionShape[];
33
+ optionsListProps: {
34
+ ref: React.RefObject<HTMLDivElement>;
35
+ inputProps: {
36
+ onChange: (event: React.ChangeEvent<HTMLInputElement>, payload: {
37
+ value: string;
38
+ }) => void;
39
+ value: string;
40
+ };
41
+ };
42
+ onOpen: (payload: {
43
+ open?: boolean;
44
+ }) => void;
45
+ };
46
+ reset: () => void;
47
+ };
48
+ export { useLazyLoading };