@jenesei-software/jenesei-kit-react 1.0.0 → 1.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 (272) hide show
  1. package/README.md +0 -1
  2. package/build/{area-DfCAwCiZ.js → area-3gVEQsJq.js} +20 -22
  3. package/build/area-3gVEQsJq.js.map +1 -0
  4. package/build/area-C8w6fMSn.cjs +38 -0
  5. package/build/area-C8w6fMSn.cjs.map +1 -0
  6. package/build/{area-9NUxwBGc.cjs → area-E4w7aKuZ.cjs} +2 -2
  7. package/build/{area-9NUxwBGc.cjs.map → area-E4w7aKuZ.cjs.map} +1 -1
  8. package/build/{area-BnAddPtl.js → area-EcUYP2tl.js} +2 -2
  9. package/build/{area-BnAddPtl.js.map → area-EcUYP2tl.js.map} +1 -1
  10. package/build/area-preview.cjs.js +1 -1
  11. package/build/area-preview.es.js +1 -1
  12. package/build/area-skeleton.cjs.js +1 -1
  13. package/build/area-skeleton.es.js +1 -1
  14. package/build/build-info.txt +3 -3
  15. package/build/{component-C2JFFh-k.js → component--cOriuv7.js} +103 -27
  16. package/build/component--cOriuv7.js.map +1 -0
  17. package/build/{component-CFMlaYj1.js → component-9m1Ib3fS.js} +2 -2
  18. package/build/{component-CFMlaYj1.js.map → component-9m1Ib3fS.js.map} +1 -1
  19. package/build/{component-CuiUpH8H.js → component-B1IQ5CfM.js} +10 -10
  20. package/build/component-B1IQ5CfM.js.map +1 -0
  21. package/build/{component-C52VCES6.cjs → component-BnYw0FvH.cjs} +21 -17
  22. package/build/component-BnYw0FvH.cjs.map +1 -0
  23. package/build/{component-nFn_uOy_.cjs → component-Bovatz78.cjs} +2 -2
  24. package/build/{component-nFn_uOy_.cjs.map → component-Bovatz78.cjs.map} +1 -1
  25. package/build/{component-UW1VzyvB.cjs → component-C0atFCun.cjs} +2 -2
  26. package/build/{component-UW1VzyvB.cjs.map → component-C0atFCun.cjs.map} +1 -1
  27. package/build/{component-DZxbW_Jz.js → component-CbPhVNw5.js} +30 -28
  28. package/build/component-CbPhVNw5.js.map +1 -0
  29. package/build/component-CbnBTIR5.cjs +2 -0
  30. package/build/component-CbnBTIR5.cjs.map +1 -0
  31. package/build/{component-xnEaYd4a.cjs → component-D7A-4DNQ.cjs} +2 -2
  32. package/build/{component-xnEaYd4a.cjs.map → component-D7A-4DNQ.cjs.map} +1 -1
  33. package/build/{component-CBshLNEf.js → component-DURhph1i.js} +3 -3
  34. package/build/{component-CBshLNEf.js.map → component-DURhph1i.js.map} +1 -1
  35. package/build/component-X4e7zEKk.cjs +90 -0
  36. package/build/component-X4e7zEKk.cjs.map +1 -0
  37. package/build/component-accordion.cjs.js +1 -1
  38. package/build/component-accordion.es.js +1 -1
  39. package/build/component-button-group.cjs.js +1 -1
  40. package/build/component-button-group.d.ts +5 -1
  41. package/build/component-button-group.es.js +1 -1
  42. package/build/component-button.cjs.js +1 -1
  43. package/build/component-button.d.ts +6 -2
  44. package/build/component-button.es.js +1 -1
  45. package/build/component-checkbox-group.cjs.js +1 -1
  46. package/build/component-checkbox-group.d.ts +2 -1
  47. package/build/component-checkbox-group.es.js +1 -1
  48. package/build/component-checkbox.cjs.js +1 -1
  49. package/build/component-checkbox.d.ts +2 -1
  50. package/build/component-checkbox.es.js +1 -1
  51. package/build/component-date-picker.cjs.js +1 -1
  52. package/build/component-date-picker.d.ts +93 -70
  53. package/build/component-date-picker.es.js +1 -1
  54. package/build/component-icon.cjs.js +1 -1
  55. package/build/component-icon.es.js +1 -1
  56. package/build/component-image-button.cjs.js +1 -1
  57. package/build/component-image-button.d.ts +5 -1
  58. package/build/component-image-button.es.js +1 -1
  59. package/build/component-image-select.cjs.js +1 -1
  60. package/build/component-image-select.d.ts +5 -1
  61. package/build/component-image-select.es.js +1 -1
  62. package/build/component-image-slider.cjs.js +1 -1
  63. package/build/component-image-slider.es.js +1 -1
  64. package/build/component-image.cjs.js +1 -1
  65. package/build/component-image.es.js +1 -1
  66. package/build/component-input-otp.cjs.js +1 -1
  67. package/build/component-input-otp.d.ts +31 -19
  68. package/build/component-input-otp.es.js +1 -1
  69. package/build/component-input.cjs.js +1 -1
  70. package/build/component-input.d.ts +48 -38
  71. package/build/component-input.es.js +4 -4
  72. package/build/component-map.cjs.js +1 -1
  73. package/build/component-map.es.js +1 -1
  74. package/build/component-pagination.cjs.js +1 -1
  75. package/build/component-pagination.d.ts +5 -1
  76. package/build/component-pagination.es.js +1 -1
  77. package/build/component-range.cjs.js +1 -1
  78. package/build/component-range.d.ts +28 -18
  79. package/build/component-range.es.js +1 -1
  80. package/build/component-ripple.cjs.js +1 -1
  81. package/build/component-ripple.es.js +1 -1
  82. package/build/component-select.cjs.js +1 -1
  83. package/build/component-select.d.ts +125 -230
  84. package/build/component-select.es.js +16 -20
  85. package/build/component-separator.cjs.js +1 -1
  86. package/build/component-separator.d.ts +3 -2
  87. package/build/component-separator.es.js +1 -1
  88. package/build/component-textarea.cjs.js +1 -1
  89. package/build/component-textarea.d.ts +74 -53
  90. package/build/component-textarea.es.js +4 -8
  91. package/build/component-toggle.cjs.js +1 -1
  92. package/build/component-toggle.es.js +1 -1
  93. package/build/component-tooltip.cjs.js +1 -1
  94. package/build/component-tooltip.d.ts +9 -2
  95. package/build/component-tooltip.es.js +1 -1
  96. package/build/component-typography.cjs.js +1 -1
  97. package/build/component-typography.d.ts +8 -2
  98. package/build/component-typography.es.js +1 -1
  99. package/build/{component-ByY_9Ryc.js → component-vpCWcIhC.js} +2 -2
  100. package/build/{component-ByY_9Ryc.js.map → component-vpCWcIhC.js.map} +1 -1
  101. package/build/{component.components-CaR5gfQW.cjs → component.components-1kRDD3KO.cjs} +2 -2
  102. package/build/{component.components-CaR5gfQW.cjs.map → component.components-1kRDD3KO.cjs.map} +1 -1
  103. package/build/{component.components-BAAT5GTH.js → component.components-CQ3LLnFl.js} +5 -5
  104. package/build/{component.components-BAAT5GTH.js.map → component.components-CQ3LLnFl.js.map} +1 -1
  105. package/build/{component.constants-DRvp5Bez.js → component.constants-B1rq1PLe.js} +2 -2
  106. package/build/{component.constants-DRvp5Bez.js.map → component.constants-B1rq1PLe.js.map} +1 -1
  107. package/build/{component.constants-DbNhxh0k.js → component.constants-B95xyW0s.js} +211 -207
  108. package/build/component.constants-B95xyW0s.js.map +1 -0
  109. package/build/{component.constants-BeWW8Ijx.cjs → component.constants-BLHg7rcI.cjs} +2 -2
  110. package/build/{component.constants-BeWW8Ijx.cjs.map → component.constants-BLHg7rcI.cjs.map} +1 -1
  111. package/build/component.constants-Gz2mf7IF.cjs +22 -0
  112. package/build/component.constants-Gz2mf7IF.cjs.map +1 -0
  113. package/build/{component.styles-BfvB83xM.cjs → component.styles-B-ZAk_1C.cjs} +7 -7
  114. package/build/component.styles-B-ZAk_1C.cjs.map +1 -0
  115. package/build/{component.styles-Do1NYZEO.js → component.styles-BI4OuDrG.js} +32 -20
  116. package/build/component.styles-BI4OuDrG.js.map +1 -0
  117. package/build/component.styles-BLh29xwF.cjs +10 -0
  118. package/build/component.styles-BLh29xwF.cjs.map +1 -0
  119. package/build/component.styles-BnJjm_ES.js +37 -0
  120. package/build/component.styles-BnJjm_ES.js.map +1 -0
  121. package/build/{component.styles-RkQwTlwG.js → component.styles-BoBaG6sX.js} +13 -5
  122. package/build/component.styles-BoBaG6sX.js.map +1 -0
  123. package/build/component.styles-BrGPrrEb.cjs +39 -0
  124. package/build/component.styles-BrGPrrEb.cjs.map +1 -0
  125. package/build/{component.styles-ZtwHuL4x.cjs → component.styles-Bz2vyHqK.cjs} +5 -7
  126. package/build/component.styles-Bz2vyHqK.cjs.map +1 -0
  127. package/build/{component.styles-CVBpx4fw.js → component.styles-BzNkEurr.js} +13 -13
  128. package/build/component.styles-BzNkEurr.js.map +1 -0
  129. package/build/component.styles-CLn52hJD.cjs +14 -0
  130. package/build/component.styles-CLn52hJD.cjs.map +1 -0
  131. package/build/{component.styles-DOPCUXcr.js → component.styles-CRWn1pVi.js} +11 -13
  132. package/build/component.styles-CRWn1pVi.js.map +1 -0
  133. package/build/{component.styles-CmEFZfA5.js → component.styles-CccZrbSA.js} +53 -42
  134. package/build/component.styles-CccZrbSA.js.map +1 -0
  135. package/build/component.styles-CdtZm7bl.cjs +165 -0
  136. package/build/component.styles-CdtZm7bl.cjs.map +1 -0
  137. package/build/{component.styles-BapdQNhL.js → component.styles-CiGPOpxk.js} +5 -5
  138. package/build/component.styles-CiGPOpxk.js.map +1 -0
  139. package/build/component.styles-CvJK1eif.cjs +230 -0
  140. package/build/component.styles-CvJK1eif.cjs.map +1 -0
  141. package/build/component.styles-D6KuudL3.js +1372 -0
  142. package/build/component.styles-D6KuudL3.js.map +1 -0
  143. package/build/{component.styles-DyGfo9t0.cjs → component.styles-DDUGBJle.cjs} +2 -2
  144. package/build/{component.styles-DyGfo9t0.cjs.map → component.styles-DDUGBJle.cjs.map} +1 -1
  145. package/build/{component.styles-CTo5NC52.js → component.styles-DMBvhmz6.js} +4 -4
  146. package/build/{component.styles-CTo5NC52.js.map → component.styles-DMBvhmz6.js.map} +1 -1
  147. package/build/component.styles-DWoybqna.cjs +137 -0
  148. package/build/component.styles-DWoybqna.cjs.map +1 -0
  149. package/build/component.styles-DhI3n-dL.js +213 -0
  150. package/build/component.styles-DhI3n-dL.js.map +1 -0
  151. package/build/{component.styles-DxeG9Opm.cjs → component.styles-DjLSmx3e.cjs} +2 -2
  152. package/build/{component.styles-DxeG9Opm.cjs.map → component.styles-DjLSmx3e.cjs.map} +1 -1
  153. package/build/component.styles-DqTkSP8L.js +1023 -0
  154. package/build/component.styles-DqTkSP8L.js.map +1 -0
  155. package/build/{component.styles-Dok17vPl.js → component.styles-DuIrUV9k.js} +2 -2
  156. package/build/{component.styles-Dok17vPl.js.map → component.styles-DuIrUV9k.js.map} +1 -1
  157. package/build/component.styles-DwdN7mQq.cjs +99 -0
  158. package/build/component.styles-DwdN7mQq.cjs.map +1 -0
  159. package/build/{component.styles-CV7jTFCg.js → component.styles-iWM1hPGZ.js} +62 -31
  160. package/build/component.styles-iWM1hPGZ.js.map +1 -0
  161. package/build/{component.styles-CZu2m0O4.cjs → component.styles-q4ne6jV1.cjs} +2 -2
  162. package/build/{component.styles-CZu2m0O4.cjs.map → component.styles-q4ne6jV1.cjs.map} +1 -1
  163. package/build/{component.styles-C6LohBfF.js → component.styles-uPfiNBIy.js} +3 -3
  164. package/build/{component.styles-C6LohBfF.js.map → component.styles-uPfiNBIy.js.map} +1 -1
  165. package/build/component.styles-vcNQJK0U.cjs +65 -0
  166. package/build/component.styles-vcNQJK0U.cjs.map +1 -0
  167. package/build/component.styles-w3iWQMCq.cjs +13 -0
  168. package/build/component.styles-w3iWQMCq.cjs.map +1 -0
  169. package/build/consts.cjs.js.map +1 -1
  170. package/build/consts.es.js.map +1 -1
  171. package/build/context-app.cjs.js +1 -1
  172. package/build/context-app.es.js +1 -1
  173. package/build/context-dialog.cjs.js +1 -1
  174. package/build/context-dialog.es.js +1 -1
  175. package/build/context-sonner.cjs.js +1 -1
  176. package/build/context-sonner.es.js +1 -1
  177. package/build/{context.constants-DqYjo5m4.js → context.constants-BAz35AJw.js} +5 -5
  178. package/build/{context.constants-DqYjo5m4.js.map → context.constants-BAz35AJw.js.map} +1 -1
  179. package/build/{context.constants-B29-_8v3.cjs → context.constants-BJPyze-d.cjs} +2 -2
  180. package/build/{context.constants-B29-_8v3.cjs.map → context.constants-BJPyze-d.cjs.map} +1 -1
  181. package/build/{context.constants-CsZRZ7gH.js → context.constants-COR-ReeN.js} +2 -2
  182. package/build/{context.constants-CsZRZ7gH.js.map → context.constants-COR-ReeN.js.map} +1 -1
  183. package/build/{context.constants-BaD7xj_m.cjs → context.constants-fwK8ogSf.cjs} +2 -2
  184. package/build/{context.constants-BaD7xj_m.cjs.map → context.constants-fwK8ogSf.cjs.map} +1 -1
  185. package/build/{context.hooks-gyzZSaVi.js → context.hooks-Bs1dD25S.js} +4 -4
  186. package/build/{context.hooks-gyzZSaVi.js.map → context.hooks-Bs1dD25S.js.map} +1 -1
  187. package/build/{context.hooks-CTi-CVKx.cjs → context.hooks-KAyS_7Pj.cjs} +3 -3
  188. package/build/{context.hooks-CTi-CVKx.cjs.map → context.hooks-KAyS_7Pj.cjs.map} +1 -1
  189. package/build/functions.cjs.js.map +1 -1
  190. package/build/functions.es.js +7 -4
  191. package/build/functions.es.js.map +1 -1
  192. package/build/hooks-use-deep-compare-memoize.d.ts +1 -1
  193. package/build/index.cjs.js +1 -1
  194. package/build/index.d.ts +289 -227
  195. package/build/index.es.js +133 -139
  196. package/build/{style-CEGJOjRW.js → style-Bvt_Melk.js} +32 -12
  197. package/build/style-Bvt_Melk.js.map +1 -0
  198. package/build/{style-DeAgDHyI.js → style-DjCgiI7l.js} +3 -3
  199. package/build/{style-DeAgDHyI.js.map → style-DjCgiI7l.js.map} +1 -1
  200. package/build/style-add.cjs.js +1 -1
  201. package/build/style-add.d.ts +11 -1
  202. package/build/style-add.es.js +6 -4
  203. package/build/{style-CtGd1JVB.cjs → style-eIuUYu9x.cjs} +2 -2
  204. package/build/{style-CtGd1JVB.cjs.map → style-eIuUYu9x.cjs.map} +1 -1
  205. package/build/style-error.cjs.js +1 -1
  206. package/build/style-error.es.js +1 -1
  207. package/build/{style-Dm74EPGE.cjs → style-f3_KtJIt.cjs} +30 -14
  208. package/build/style-f3_KtJIt.cjs.map +1 -0
  209. package/build/style-theme.cjs.js +1 -1
  210. package/build/style-theme.es.js +1 -1
  211. package/build/{theme.global-bN9HlSWE.js → theme.global-B46v_8eu.js} +2 -1
  212. package/build/{theme.global-bN9HlSWE.js.map → theme.global-B46v_8eu.js.map} +1 -1
  213. package/build/{theme.global-D6XU05Et.cjs → theme.global-BdZkriPJ.cjs} +2 -1
  214. package/build/{theme.global-D6XU05Et.cjs.map → theme.global-BdZkriPJ.cjs.map} +1 -1
  215. package/build/{use-BVj4dgbW.js → use-B6rT81uF.js} +6 -6
  216. package/build/{use-BVj4dgbW.js.map → use-B6rT81uF.js.map} +1 -1
  217. package/build/{use-BhofoOgk.cjs → use-BnaBipTR.cjs} +2 -2
  218. package/build/{use-BhofoOgk.cjs.map → use-BnaBipTR.cjs.map} +1 -1
  219. package/build/use-C1l0O0Qo.cjs.map +1 -1
  220. package/build/use-DT0XgvJT.js.map +1 -1
  221. package/package.json +2 -12
  222. package/build/area-ClrrGVJG.cjs +0 -40
  223. package/build/area-ClrrGVJG.cjs.map +0 -1
  224. package/build/area-DfCAwCiZ.js.map +0 -1
  225. package/build/component-BnI7BIp-.cjs +0 -2
  226. package/build/component-BnI7BIp-.cjs.map +0 -1
  227. package/build/component-C2JFFh-k.js.map +0 -1
  228. package/build/component-C52VCES6.cjs.map +0 -1
  229. package/build/component-CuiUpH8H.js.map +0 -1
  230. package/build/component-D1NPhRuV.cjs +0 -90
  231. package/build/component-D1NPhRuV.cjs.map +0 -1
  232. package/build/component-DZxbW_Jz.js.map +0 -1
  233. package/build/component.constants-D9wVZ3zy.cjs +0 -22
  234. package/build/component.constants-D9wVZ3zy.cjs.map +0 -1
  235. package/build/component.constants-DbNhxh0k.js.map +0 -1
  236. package/build/component.styles-B1DIataj.cjs +0 -10
  237. package/build/component.styles-B1DIataj.cjs.map +0 -1
  238. package/build/component.styles-BFwkFWkd.cjs +0 -39
  239. package/build/component.styles-BFwkFWkd.cjs.map +0 -1
  240. package/build/component.styles-BSEA2Dqn.cjs +0 -8
  241. package/build/component.styles-BSEA2Dqn.cjs.map +0 -1
  242. package/build/component.styles-BapdQNhL.js.map +0 -1
  243. package/build/component.styles-BfvB83xM.cjs.map +0 -1
  244. package/build/component.styles-Bn6ylF83.js +0 -859
  245. package/build/component.styles-Bn6ylF83.js.map +0 -1
  246. package/build/component.styles-BsZIuwWJ.cjs +0 -140
  247. package/build/component.styles-BsZIuwWJ.cjs.map +0 -1
  248. package/build/component.styles-CEBh8X5q.js +0 -20
  249. package/build/component.styles-CEBh8X5q.js.map +0 -1
  250. package/build/component.styles-CPsxMKVK.cjs +0 -73
  251. package/build/component.styles-CPsxMKVK.cjs.map +0 -1
  252. package/build/component.styles-CV7jTFCg.js.map +0 -1
  253. package/build/component.styles-CVBpx4fw.js.map +0 -1
  254. package/build/component.styles-CmBcHREH.cjs +0 -13
  255. package/build/component.styles-CmBcHREH.cjs.map +0 -1
  256. package/build/component.styles-CmEFZfA5.js.map +0 -1
  257. package/build/component.styles-DHIw8p8e.cjs +0 -158
  258. package/build/component.styles-DHIw8p8e.cjs.map +0 -1
  259. package/build/component.styles-DOPCUXcr.js.map +0 -1
  260. package/build/component.styles-Dj3h7jd9.cjs +0 -165
  261. package/build/component.styles-Dj3h7jd9.cjs.map +0 -1
  262. package/build/component.styles-Do1NYZEO.js.map +0 -1
  263. package/build/component.styles-DpkFoWEh.cjs +0 -81
  264. package/build/component.styles-DpkFoWEh.cjs.map +0 -1
  265. package/build/component.styles-DqsBDAEo.js +0 -202
  266. package/build/component.styles-DqsBDAEo.js.map +0 -1
  267. package/build/component.styles-Du2y0R4W.js +0 -177
  268. package/build/component.styles-Du2y0R4W.js.map +0 -1
  269. package/build/component.styles-RkQwTlwG.js.map +0 -1
  270. package/build/component.styles-ZtwHuL4x.cjs.map +0 -1
  271. package/build/style-CEGJOjRW.js.map +0 -1
  272. package/build/style-Dm74EPGE.cjs.map +0 -1
@@ -0,0 +1,1023 @@
1
+ import { j as jsxRuntimeExports } from "./jsx-runtime-BrDlu8eK.js";
2
+ import { ListLanguage, MapThemeList } from "./consts.es.js";
3
+ import { b as ErrorMessage, a as addError } from "./style-DjCgiI7l.js";
4
+ import { K as KEY_SIZE_DATA } from "./theme.global-B46v_8eu.js";
5
+ import { j as Typography, u as usePopover, m as useMergeRefs, P as Popover, g as getFontSizeStyles } from "./component--cOriuv7.js";
6
+ import { useVirtualizer } from "@tanstack/react-virtual";
7
+ import moment from "moment";
8
+ import { memo, useMemo, useRef, useState, useCallback, useEffect } from "react";
9
+ import { c as Button } from "./component-CbPhVNw5.js";
10
+ import { I as Icon } from "./component.styles-CiGPOpxk.js";
11
+ import styled, { css } from "styled-components";
12
+ import { i as addRemoveOutline } from "./style-Bvt_Melk.js";
13
+ import { a as addSX } from "./style-plT9Ah7t.js";
14
+ import { motion } from "framer-motion";
15
+ import { T as TextArea } from "./component.styles-DhI3n-dL.js";
16
+ const DEFAULT_LABEL_SELECT_ALL = "Select all option";
17
+ const DEFAULT_LABEL_PLACEHOLDER = "Select an option";
18
+ const DEFAULT_LABEL_EMPTY_OPTION = "No options available";
19
+ const DEFAULT_LABEL_AND_MORE = (count) => `+${count} more`;
20
+ const DEFAULT_LABEL_ADD_OPTION = (value) => `Add "${value}" option`;
21
+ const DEFAULT_MAX_VIEW_SELECT = 2;
22
+ const DEFAULT_MAX_VIEW_DROPDOWN = 5;
23
+ const DEFAULT_MIN_VIEW_DROPDOWN = 1;
24
+ const DEFAULT_OVERSCAN = 1;
25
+ const Select = (props) => {
26
+ const sizeHeight = useMemo(() => KEY_SIZE_DATA[props.size].height, [props.size]);
27
+ const sizePadding = useMemo(() => KEY_SIZE_DATA[props.size].padding, [props.size]);
28
+ const sizeRadius = useMemo(() => KEY_SIZE_DATA[props.size].radius, [props.size]);
29
+ const {
30
+ isOpen,
31
+ close,
32
+ open,
33
+ refReference: refReferencePopover,
34
+ refFloating: refFloatingPopover,
35
+ floatingStyles,
36
+ toggle
37
+ } = usePopover({
38
+ placement: "bottom-start",
39
+ offset: sizePadding,
40
+ mode: "independence",
41
+ isClickOutside: true,
42
+ isWidthAsContent: true,
43
+ isDisabled: props == null ? void 0 : props.isDisabled,
44
+ onBlur: props.onBlur,
45
+ onFocus: props.onFocus
46
+ });
47
+ const refTextArea = useRef(null);
48
+ const refDropdownList = useRef(null);
49
+ const refReference = useMergeRefs([props.refReference, refReferencePopover]);
50
+ const refFloating = useMergeRefs([props.refFloating, refFloatingPopover]);
51
+ const labelSelectAll = useMemo(() => props.labelSelectAll ?? DEFAULT_LABEL_SELECT_ALL, [props.labelSelectAll]);
52
+ const labelPlaceholder = useMemo(() => props.labelPlaceholder ?? DEFAULT_LABEL_PLACEHOLDER, [props.labelPlaceholder]);
53
+ const labelEmptyOption = useMemo(
54
+ () => props.labelEmptyOption ?? DEFAULT_LABEL_EMPTY_OPTION,
55
+ [props.labelEmptyOption]
56
+ );
57
+ const labelAndMore = useMemo(() => props.labelAndMore ?? DEFAULT_LABEL_AND_MORE, [props.labelAndMore]);
58
+ const labelAddOption = useMemo(() => props.labelAddOption ?? DEFAULT_LABEL_ADD_OPTION, [props.labelAddOption]);
59
+ const maxViewSelect = useMemo(() => props.maxViewSelect ?? DEFAULT_MAX_VIEW_SELECT, [props.maxViewSelect]);
60
+ const maxViewDropdown = useMemo(() => props.maxViewDropdown ?? DEFAULT_MAX_VIEW_DROPDOWN, [props.maxViewDropdown]);
61
+ const minViewDropdown = useMemo(() => props.minViewDropdown ?? DEFAULT_MIN_VIEW_DROPDOWN, [props.minViewDropdown]);
62
+ const isAll = useMemo(
63
+ () => props.value.length === props.option.length || props.value.length === props.optionAllLength,
64
+ [props.option.length, props.optionAllLength, props.value.length]
65
+ );
66
+ const isHaveOption = useMemo(() => !!props.option.length, [props.option.length]);
67
+ const isHaveValue = useMemo(() => !!props.value.length, [props.value.length]);
68
+ const isShowAddOption = useMemo(
69
+ () => props.valueSearch && props.isShowAddOption,
70
+ [props.valueSearch, props.isShowAddOption]
71
+ );
72
+ const [isShowSearch, setIsShowSearch] = useState(false);
73
+ const optionsLength = useMemo(() => {
74
+ if (props.isNotShowDisabledOptions) {
75
+ return props.option.filter((option) => !option.isDisabled).length;
76
+ } else {
77
+ return props.option.length;
78
+ }
79
+ }, [props.option, props.isNotShowDisabledOptions]);
80
+ const heightDropdownList = useMemo(
81
+ () => sizeHeight * (optionsLength < maxViewDropdown ? optionsLength < minViewDropdown ? optionsLength : optionsLength : maxViewDropdown),
82
+ [sizeHeight, optionsLength, maxViewDropdown, minViewDropdown]
83
+ );
84
+ const heightPopover = useMemo(() => {
85
+ const selectAll = props.isShowSelectAll && isHaveOption ? sizeHeight : 0;
86
+ const selectNoOption = !isHaveOption ? sizeHeight : 0;
87
+ const selectList = isHaveOption ? heightDropdownList : 0;
88
+ const selectAdd = isShowAddOption ? sizeHeight : 0;
89
+ const sum = (selectAll !== 0 ? 1 : 0) + (selectNoOption !== 0 ? 1 : 0) + (selectList !== 0 ? 1 : 0) + (selectAdd !== 0 ? 1 : 0);
90
+ const padding = sum <= 1 ? 0 : (sum - 1) * (sizePadding / 2.8);
91
+ return selectAll + selectNoOption + selectList + selectAdd + padding;
92
+ }, [props.isShowSelectAll, sizeHeight, isHaveOption, sizePadding, heightDropdownList, isShowAddOption]);
93
+ const isValueMoreMaxViewSelect = useMemo(
94
+ () => props.value.length > maxViewSelect,
95
+ [maxViewSelect, props.value.length]
96
+ );
97
+ const isShowIconSearchClear = useMemo(
98
+ () => props.isShowIconSearchClear && props.valueSearch,
99
+ [props.isShowIconSearchClear, props.valueSearch]
100
+ );
101
+ const isShowButtonList = useMemo(
102
+ () => isShowIconSearchClear || props.isShowIconToggle || props.isShowIconFetching && props.isFetching,
103
+ [isShowIconSearchClear, props.isShowIconToggle, props.isShowIconFetching, props.isFetching]
104
+ );
105
+ const isShowScroll = useMemo(() => optionsLength > maxViewDropdown, [maxViewDropdown, optionsLength]);
106
+ const isSelectedItem = useCallback(
107
+ (option) => {
108
+ return isAll || props.value.some((val) => val.value === option.value);
109
+ },
110
+ [isAll, props.value]
111
+ );
112
+ const isShowDropdownSettingsList = useMemo(
113
+ () => isShowAddOption || props.isShowSelectAll && isHaveOption || !isHaveOption,
114
+ [isHaveOption, isShowAddOption, props.isShowSelectAll]
115
+ );
116
+ const listVirtualizer = useVirtualizer({
117
+ count: optionsLength,
118
+ estimateSize: props.getEstimateSize ? props.getEstimateSize : () => sizeHeight,
119
+ getScrollElement: () => refDropdownList.current,
120
+ overscan: DEFAULT_OVERSCAN,
121
+ paddingEnd: 0
122
+ });
123
+ const onChangeShowSearch = useCallback(
124
+ (show) => {
125
+ if (props.isSearch && !props.isDisabled) {
126
+ setIsShowSearch(show);
127
+ } else {
128
+ setIsShowSearch(false);
129
+ }
130
+ },
131
+ [props.isDisabled, props.isSearch]
132
+ );
133
+ const onClick = useCallback(
134
+ (option) => {
135
+ let newValues = [];
136
+ const optionValue = option.value;
137
+ const findIndex = (val) => val.value === optionValue;
138
+ const index = props.value.findIndex(findIndex);
139
+ const isFind = index !== -1;
140
+ if (props.isMulti) {
141
+ if (isFind) {
142
+ newValues = [...props.value.slice(0, index), ...props.value.slice(index + 1)];
143
+ } else {
144
+ newValues = [...props.value, option];
145
+ }
146
+ } else {
147
+ if (isFind && !props.isStayValueAfterSelect) {
148
+ newValues = [...props.value.slice(0, index), ...props.value.slice(index + 1)];
149
+ } else {
150
+ newValues = [option];
151
+ }
152
+ }
153
+ props.onChange(newValues);
154
+ onChangeShowSearch(!!props.isStaySearchAfterSelect);
155
+ if (props.isOnClickOptionClose) {
156
+ close();
157
+ }
158
+ },
159
+ [close, onChangeShowSearch, props]
160
+ );
161
+ const onClickAll = useCallback(() => {
162
+ var _a;
163
+ (_a = props.onChangeAll) == null ? void 0 : _a.call(props, isAll ? [] : props.option, !isAll);
164
+ onChangeShowSearch(!!props.isStaySearchAfterSelect);
165
+ if (props.isOnClickOptionClose) {
166
+ close();
167
+ }
168
+ }, [close, isAll, onChangeShowSearch, props]);
169
+ const onClearSearch = useCallback(() => {
170
+ var _a;
171
+ (_a = props.onChangeSearch) == null ? void 0 : _a.call(props, "");
172
+ }, [props]);
173
+ const onScroll = useCallback(
174
+ (containerRefElement) => {
175
+ if (containerRefElement) {
176
+ const { scrollHeight, scrollTop, clientHeight } = containerRefElement;
177
+ if (scrollHeight - scrollTop - clientHeight < heightDropdownList && !props.isFetching && props.fetchNextPage) {
178
+ props.fetchNextPage();
179
+ }
180
+ }
181
+ },
182
+ [heightDropdownList, props]
183
+ );
184
+ const onAddOption = useCallback(
185
+ (value) => {
186
+ var _a, _b;
187
+ (_a = props.onAddOption) == null ? void 0 : _a.call(props, value);
188
+ (_b = props.onChangeSearch) == null ? void 0 : _b.call(props, "");
189
+ },
190
+ [props]
191
+ );
192
+ useEffect(() => {
193
+ onChangeShowSearch(false);
194
+ }, [onChangeShowSearch, props.isDisabled]);
195
+ useEffect(() => {
196
+ if (!isHaveValue) {
197
+ onChangeShowSearch(true);
198
+ }
199
+ }, [isHaveValue, onChangeShowSearch]);
200
+ useEffect(() => {
201
+ if (!isOpen && isHaveValue) {
202
+ onChangeShowSearch(false);
203
+ }
204
+ }, [isHaveValue, isOpen, onChangeShowSearch]);
205
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(jsxRuntimeExports.Fragment, { children: [
206
+ /* @__PURE__ */ jsxRuntimeExports.jsxs(
207
+ SelectWrapper,
208
+ {
209
+ tabIndex: 0,
210
+ $error: props == null ? void 0 : props.error,
211
+ $isNotShowHoverStyle: props == null ? void 0 : props.isNotShowHoverStyle,
212
+ $size: props.size,
213
+ $genre: props.genre,
214
+ $isCenter: props.isCenter,
215
+ $sx: props.sx,
216
+ $isOpen: isOpen,
217
+ ref: refReference,
218
+ onClick: () => {
219
+ open();
220
+ onChangeShowSearch(true);
221
+ },
222
+ onFocus: () => {
223
+ open();
224
+ },
225
+ children: [
226
+ isShowSearch && /* @__PURE__ */ jsxRuntimeExports.jsx(
227
+ SelectTextArea,
228
+ {
229
+ ref: refTextArea,
230
+ genre: props.genre,
231
+ size: props.size,
232
+ minRows: 1,
233
+ maxRows: 5,
234
+ isAutoHeight: true,
235
+ onChange: (value) => {
236
+ var _a;
237
+ (_a = props == null ? void 0 : props.onChangeSearch) == null ? void 0 : _a.call(props, value);
238
+ },
239
+ value: props.valueSearch,
240
+ placeholder: labelPlaceholder
241
+ }
242
+ ),
243
+ isHaveValue && (props.isShowSelectAllLabel ? !isAll : true) ? /* @__PURE__ */ jsxRuntimeExports.jsx(
244
+ SelectList,
245
+ {
246
+ $size: props.size,
247
+ tabIndex: -1,
248
+ $isWrapSelectOption: props.isWrapSelectOption,
249
+ onMouseDown: (e) => {
250
+ e.preventDefault();
251
+ },
252
+ onClick: (e) => {
253
+ e.preventDefault();
254
+ },
255
+ children: props.value.map((value, index) => {
256
+ if (index >= maxViewSelect) return null;
257
+ const isChecked = isSelectedItem(value);
258
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
259
+ ContainerSelectListOption,
260
+ {
261
+ isChecked,
262
+ onClick: () => props.isClearWhenClickSelectListOption && onClick(value),
263
+ item: value,
264
+ genre: props.genre,
265
+ size: props.size,
266
+ isBold: props.isBold,
267
+ isOnlyColorInSelectListOption: props.isOnlyColorInSelectListOption,
268
+ isClearWhenClickSelectListOption: props.isClearWhenClickSelectListOption,
269
+ isWrapSelectOption: props.isWrapSelectOption,
270
+ isNotShowHoverStyle: props.isNotShowHoverStyle,
271
+ isCenter: props.isCenter
272
+ },
273
+ `${value.value}-${index}`
274
+ );
275
+ })
276
+ }
277
+ ) : null,
278
+ isHaveValue && (props.isShowSelectAllLabel ? isAll : false) ? /* @__PURE__ */ jsxRuntimeExports.jsx(
279
+ Typography,
280
+ {
281
+ sxStandard: {
282
+ default: { padding: `${sizePadding / 2.8}px 0px ${sizePadding / 2.8}px ${sizePadding / 2.8}px` }
283
+ },
284
+ sx: { default: { size: 16, line: 1, isNoUserSelect: true } },
285
+ children: labelSelectAll
286
+ }
287
+ ) : null,
288
+ !isHaveValue && !props.isSearch ? /* @__PURE__ */ jsxRuntimeExports.jsx(
289
+ Typography,
290
+ {
291
+ sxStandard: (theme) => ({
292
+ default: {
293
+ color: theme.colors.input[props.genre].color.placeholder,
294
+ padding: `${sizePadding / 2.8}px 0px ${sizePadding / 2.8}px ${sizePadding / 2.8}px`
295
+ }
296
+ }),
297
+ sx: { default: { size: 16, line: 1, isNoUserSelect: true } },
298
+ children: labelPlaceholder
299
+ }
300
+ ) : null,
301
+ isValueMoreMaxViewSelect && isHaveValue && (props.isShowSelectAllLabel ? !isAll : true) ? /* @__PURE__ */ jsxRuntimeExports.jsx(
302
+ Typography,
303
+ {
304
+ sxStandard: {
305
+ default: { padding: `${sizePadding / 2.8}px 0px ${sizePadding / 2.8}px ${sizePadding / 2.8}px` }
306
+ },
307
+ sx: { default: { size: 16, line: 1, isNoUserSelect: true } },
308
+ children: labelAndMore(props.value.length - maxViewSelect)
309
+ }
310
+ ) : null,
311
+ isShowButtonList ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
312
+ ButtonList,
313
+ {
314
+ $size: props.size,
315
+ onMouseDown: (e) => {
316
+ e.preventDefault();
317
+ },
318
+ children: [
319
+ isShowIconSearchClear && /* @__PURE__ */ jsxRuntimeExports.jsx(
320
+ Button,
321
+ {
322
+ genre: props.genre,
323
+ size: "small",
324
+ isWidthAsHeight: true,
325
+ isFullSize: true,
326
+ isRadius: true,
327
+ isOnlyIcon: true,
328
+ icons: [{ name: "Close", type: "id" }],
329
+ onClick: (e) => {
330
+ e.preventDefault();
331
+ e.stopPropagation();
332
+ onClearSearch();
333
+ }
334
+ }
335
+ ),
336
+ props.isShowIconToggle && /* @__PURE__ */ jsxRuntimeExports.jsx(
337
+ Button,
338
+ {
339
+ genre: props.genre,
340
+ size: "small",
341
+ isWidthAsHeight: true,
342
+ isFullSize: true,
343
+ isRadius: true,
344
+ isOnlyIcon: true,
345
+ icons: [{ name: "Select", type: "id" }],
346
+ onClick: (e) => {
347
+ e.preventDefault();
348
+ e.stopPropagation();
349
+ toggle();
350
+ }
351
+ }
352
+ ),
353
+ props.isShowIconFetching && props.isFetching && /* @__PURE__ */ jsxRuntimeExports.jsx(
354
+ Button,
355
+ {
356
+ tabIndex: -1,
357
+ genre: props.genre,
358
+ size: "small",
359
+ isWidthAsHeight: true,
360
+ isFullSize: true,
361
+ isRadius: true,
362
+ isHiddenBorder: true,
363
+ isDisabledRipple: true,
364
+ isNotHoverEffect: true,
365
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Icon, { type: "loading", name: "Circle", size: props.size })
366
+ }
367
+ )
368
+ ]
369
+ }
370
+ ) : null
371
+ ]
372
+ }
373
+ ),
374
+ /* @__PURE__ */ jsxRuntimeExports.jsx(
375
+ Popover,
376
+ {
377
+ sx: (theme) => ({
378
+ default: {
379
+ background: theme.colors.input[props.genre].background.rest,
380
+ borderRadius: `${sizeRadius}px`,
381
+ padding: "0px",
382
+ maxHeight: `${heightPopover}px`
383
+ }
384
+ }),
385
+ isShowAlwaysOutline: true,
386
+ size: props.size,
387
+ genre: props.genre,
388
+ floatingStyles,
389
+ ref: refFloating,
390
+ isOpen,
391
+ children: /* @__PURE__ */ jsxRuntimeExports.jsxs(
392
+ DropdownListParent,
393
+ {
394
+ tabIndex: -1,
395
+ ref: refDropdownList,
396
+ $size: props.size,
397
+ onScroll: (e) => onScroll(e.target),
398
+ children: [
399
+ isShowDropdownSettingsList && /* @__PURE__ */ jsxRuntimeExports.jsxs(DropdownList, { style: { position: "sticky", top: 0, zIndex: 1 }, children: [
400
+ isShowAddOption ? /* @__PURE__ */ jsxRuntimeExports.jsx(
401
+ DropdownListOption,
402
+ {
403
+ tabIndex: 0,
404
+ onClick: () => props.valueSearch && onAddOption(props.valueSearch),
405
+ onKeyDown: (e) => {
406
+ if (e.key === "Enter" && props.valueSearch) onAddOption(props.valueSearch);
407
+ },
408
+ $isCenter: props.isCenter,
409
+ $isNotShowHoverStyle: props.isNotShowHoverStyle,
410
+ $genre: props.genre,
411
+ $size: props.size,
412
+ $isBold: props.isBold,
413
+ $isChecked: isAll,
414
+ style: { position: "relative", minHeight: `${sizeHeight}px` },
415
+ children: props.valueSearch && labelAddOption(props.valueSearch)
416
+ }
417
+ ) : null,
418
+ props.isShowSelectAll && isHaveOption ? /* @__PURE__ */ jsxRuntimeExports.jsxs(
419
+ DropdownListOption,
420
+ {
421
+ tabIndex: 0,
422
+ onClick: () => onClickAll(),
423
+ onKeyDown: (e) => {
424
+ if (e.key === "Enter") onClickAll();
425
+ },
426
+ $isCenter: props.isCenter,
427
+ $isNotShowHoverStyle: props.isNotShowHoverStyle,
428
+ $genre: props.genre,
429
+ $size: props.size,
430
+ $isBold: props.isBold,
431
+ $isChecked: isAll,
432
+ $isShowScroll: isShowScroll,
433
+ style: { position: "relative", minHeight: `${sizeHeight}px` },
434
+ children: [
435
+ labelSelectAll,
436
+ props.isShowDropdownOptionIcon && /* @__PURE__ */ jsxRuntimeExports.jsx(
437
+ DropdownListOptionIcon,
438
+ {
439
+ tabIndex: -1,
440
+ size: props.size,
441
+ type: "checkbox",
442
+ name: "Arrow",
443
+ $genre: props.genre,
444
+ $checked: isAll,
445
+ $size: props.size
446
+ }
447
+ )
448
+ ]
449
+ }
450
+ ) : null,
451
+ !isHaveOption ? /* @__PURE__ */ jsxRuntimeExports.jsx(
452
+ DropdownListOption,
453
+ {
454
+ tabIndex: -1,
455
+ $isCenter: props.isCenter,
456
+ $isNotShowHoverStyle: props.isNotShowHoverStyle,
457
+ $genre: props.genre,
458
+ $size: props.size,
459
+ $isBold: props.isBold,
460
+ $isChecked: isAll,
461
+ $isShowScroll: isShowScroll,
462
+ style: { position: "relative", minHeight: `${sizeHeight}px` },
463
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { sx: { default: { size: 16, line: 1 } }, children: labelEmptyOption })
464
+ }
465
+ ) : null
466
+ ] }),
467
+ isHaveOption ? /* @__PURE__ */ jsxRuntimeExports.jsx(
468
+ DropdownList,
469
+ {
470
+ tabIndex: -1,
471
+ style: { height: `${listVirtualizer.getTotalSize()}px`, minHeight: `${heightDropdownList}px` },
472
+ children: listVirtualizer.getVirtualItems().map((virtualRow) => {
473
+ const item = props.option[virtualRow.index];
474
+ const isChecked = isSelectedItem(item);
475
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
476
+ ContainerDropdownListOption,
477
+ {
478
+ virtualRowSize: virtualRow.size,
479
+ virtualRowStart: virtualRow.start,
480
+ isChecked,
481
+ onClick: () => onClick(item),
482
+ item,
483
+ genre: props.genre,
484
+ size: props.size,
485
+ isBold: props.isBold,
486
+ isNotShowHoverStyle: props.isNotShowHoverStyle,
487
+ isCenter: props.isCenter,
488
+ isShowScroll,
489
+ isShowDropdownOptionIcon: props.isShowDropdownOptionIcon
490
+ },
491
+ virtualRow.index
492
+ );
493
+ })
494
+ }
495
+ ) : null
496
+ ]
497
+ }
498
+ )
499
+ }
500
+ ),
501
+ (props == null ? void 0 : props.error) ? /* @__PURE__ */ jsxRuntimeExports.jsx(ErrorMessage, { ...props.error, size: (props == null ? void 0 : props.error.size) ?? props.size }) : null
502
+ ] });
503
+ };
504
+ const ContainerDropdownListOptionComponent = (props) => {
505
+ const handleKeyDown = (event) => {
506
+ if (props.item.isDisabled) return;
507
+ if (event.key === "Enter") {
508
+ props.onClick();
509
+ }
510
+ };
511
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs(
512
+ DropdownListOption,
513
+ {
514
+ tabIndex: 0,
515
+ onClick: () => {
516
+ !props.item.isDisabled && props.onClick();
517
+ },
518
+ onKeyDown: handleKeyDown,
519
+ style: {
520
+ position: "absolute",
521
+ height: `${props.virtualRowSize}px`,
522
+ transform: `translateY(${props.virtualRowStart}px)`
523
+ },
524
+ $isCenter: props.isCenter,
525
+ $isNotShowHoverStyle: props.isNotShowHoverStyle,
526
+ $item: props.item,
527
+ $genre: props.genre,
528
+ $size: props.size,
529
+ $isBold: props.isBold,
530
+ $isChecked: props.isChecked,
531
+ $isShowScroll: props.isShowScroll,
532
+ children: [
533
+ props.item.label,
534
+ props.isShowDropdownOptionIcon && /* @__PURE__ */ jsxRuntimeExports.jsx(
535
+ DropdownListOptionIcon,
536
+ {
537
+ tabIndex: -1,
538
+ size: props.size,
539
+ type: "checkbox",
540
+ name: "Arrow",
541
+ $genre: props.genre,
542
+ $checked: props.isChecked,
543
+ $size: props.size
544
+ }
545
+ )
546
+ ]
547
+ }
548
+ );
549
+ };
550
+ const ContainerSelectListOptionComponent = (props) => {
551
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
552
+ SelectListOption,
553
+ {
554
+ tabIndex: -1,
555
+ onClick: props.onClick,
556
+ $isOnlyColorInSelectListOption: props.isOnlyColorInSelectListOption,
557
+ $isClearWhenClickSelectListOption: props.isClearWhenClickSelectListOption,
558
+ $isWrapSelectOption: props.isWrapSelectOption,
559
+ $isCenter: props.isCenter,
560
+ $isNotShowHoverStyle: props.isNotShowHoverStyle,
561
+ $item: props.item,
562
+ $genre: props.genre,
563
+ $size: props.size,
564
+ $isBold: props.isBold,
565
+ $isChecked: props.isChecked,
566
+ children: /* @__PURE__ */ jsxRuntimeExports.jsx(Typography, { sx: { default: { size: 16, line: 1 } }, children: props.item.label })
567
+ }
568
+ );
569
+ };
570
+ const ContainerDropdownListOption = memo(ContainerDropdownListOptionComponent);
571
+ const ContainerSelectListOption = memo(ContainerSelectListOptionComponent);
572
+ const SelectLanguage = (props) => {
573
+ const { value, onChange } = props;
574
+ const option = ListLanguage;
575
+ const [viewOption] = useState(option);
576
+ const handleSelectChange = (value2) => {
577
+ if (value2.length === 0) onChange(null);
578
+ onChange(value2[0].value.toString());
579
+ };
580
+ const valueLocal = useMemo(() => {
581
+ const findOption = option.find((e) => e.value === value);
582
+ if (!findOption) return [];
583
+ return [findOption];
584
+ }, [option, value]);
585
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Select, { ...props, option: viewOption, value: valueLocal, onChange: handleSelectChange });
586
+ };
587
+ const SelectMonth = (props) => {
588
+ const { value, onChange, startDate, endDate, monthsLocale, isShortLabel } = props;
589
+ const year = moment(value).utc().year();
590
+ const option = useMemo(() => {
591
+ return monthsLocale.map((monthItem) => {
592
+ const monthIndex = moment().month(monthItem.value).month();
593
+ const monthMoment = moment.utc().year(year).month(monthIndex).startOf("month");
594
+ const isDisabled = startDate && monthMoment.isBefore(moment.utc(startDate), "month") || endDate && monthMoment.isAfter(moment.utc(endDate), "month");
595
+ return {
596
+ value: monthMoment.valueOf(),
597
+ label: isShortLabel ? monthItem.localeShort : monthItem.localeLong,
598
+ placeholder: isShortLabel ? monthItem.localeShort : monthItem.localeLong,
599
+ search: `${monthItem.localeLong.toLowerCase()}, ${monthIndex + 1}`,
600
+ isDisabled: !!isDisabled,
601
+ monthValue: monthItem.value
602
+ };
603
+ });
604
+ }, [monthsLocale, year, startDate, endDate, isShortLabel]);
605
+ const handleSelectChange = (value2) => {
606
+ if (value2.length === 0) onChange(null);
607
+ onChange(+value2[0].value);
608
+ };
609
+ const valueLocal = useMemo(() => {
610
+ const findOption = option.find((e) => e.value === value);
611
+ if (!findOption) return [];
612
+ return [findOption];
613
+ }, [value, option]);
614
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Select, { ...props, option, value: valueLocal, onChange: handleSelectChange });
615
+ };
616
+ const SelectMonths = (props) => {
617
+ const { value, onChange, startDate, endDate, monthsLocale, isShortLabel } = props;
618
+ const year = moment(value).utc().year();
619
+ const option = useMemo(() => {
620
+ return monthsLocale.map((monthItem) => {
621
+ const monthIndex = moment().month(monthItem.value).month();
622
+ const monthMoment = moment.utc().year(year).month(monthIndex).startOf("month");
623
+ const isDisabled = startDate && monthMoment.isBefore(moment.utc(startDate), "month") || endDate && monthMoment.isAfter(moment.utc(endDate), "month");
624
+ return {
625
+ value: monthMoment.valueOf(),
626
+ label: isShortLabel ? monthItem.localeShort : monthItem.localeLong,
627
+ placeholder: isShortLabel ? monthItem.localeShort : monthItem.localeLong,
628
+ search: `${monthItem.localeLong.toLowerCase()}, ${monthIndex + 1}`,
629
+ isDisabled: !!isDisabled,
630
+ monthValue: monthItem.value
631
+ };
632
+ });
633
+ }, [monthsLocale, year, startDate, endDate, isShortLabel]);
634
+ const [viewOption, setViewOption] = useState(option);
635
+ useEffect(() => {
636
+ setViewOption(option);
637
+ }, [option]);
638
+ const handleSelectChange = (value2) => {
639
+ if (value2.length === 0) onChange([]);
640
+ onChange(value2.map((e) => +e.value));
641
+ };
642
+ const valueLocal = useMemo(() => {
643
+ if (!value || value.length === 0) return [];
644
+ return value.map((val) => option.find((opt) => opt.value === val)).filter(Boolean);
645
+ }, [value, option]);
646
+ const [search, setSearch] = useState("");
647
+ const handleSearchChange = useCallback(
648
+ (value2) => {
649
+ setSearch(value2);
650
+ if (value2 === "") {
651
+ setViewOption(option);
652
+ } else {
653
+ const filteredOptions = option.filter(
654
+ (option2) => Object.values(option2).some((field) => field == null ? void 0 : field.toString().toLowerCase().includes(value2.toLowerCase()))
655
+ );
656
+ setViewOption(filteredOptions);
657
+ }
658
+ },
659
+ [option]
660
+ );
661
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
662
+ Select,
663
+ {
664
+ ...props,
665
+ valueSearch: search,
666
+ onChangeSearch: handleSearchChange,
667
+ optionAllLength: option.length,
668
+ option: viewOption,
669
+ minViewDropdown: 1,
670
+ isMulti: true,
671
+ value: valueLocal,
672
+ onChange: handleSelectChange,
673
+ onChangeAll: (_value, isAll) => {
674
+ if (isAll) {
675
+ onChange(viewOption.map((e) => +e.value));
676
+ } else {
677
+ onChange([]);
678
+ }
679
+ }
680
+ }
681
+ );
682
+ };
683
+ const SelectYear = (props) => {
684
+ const { value, onChange, startDate, endDate, sortOrder = "desc" } = props;
685
+ const startYear = moment(startDate).utc().year();
686
+ const endYear = moment(endDate).utc().year();
687
+ const option = useMemo(() => {
688
+ const yearArray = Array.from({ length: endYear - startYear + 1 }, (_, index) => {
689
+ const year = startYear + index;
690
+ return {
691
+ value: moment().year(year).utc().startOf("year").valueOf(),
692
+ label: moment().year(year).utc().format("YYYY"),
693
+ placeholder: moment().year(year).utc().format("YYYY"),
694
+ search: `${moment().year(year).utc().format("YYYY").toLowerCase()}`
695
+ };
696
+ });
697
+ return sortOrder === "asc" ? yearArray.sort((a, b) => a.value - b.value) : yearArray.sort((a, b) => b.value - a.value);
698
+ }, [endYear, startYear, sortOrder]);
699
+ const handleSelectChange = (value2) => {
700
+ if (value2.length === 0) onChange(null);
701
+ onChange(+value2[0].value);
702
+ };
703
+ const valueLocal = useMemo(() => {
704
+ const findOption = option.find((e) => e.value === value);
705
+ if (!findOption) return [];
706
+ return [findOption];
707
+ }, [value, option]);
708
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(Select, { ...props, option, value: valueLocal, onChange: handleSelectChange });
709
+ };
710
+ const SelectMapTheme = (props) => {
711
+ const { value, onChange } = props;
712
+ const option = useMemo(() => MapThemeList.map((e) => ({ label: e.name, value: e.name, placeholder: e.name })), []);
713
+ const [viewOption, setViewOption] = useState(option);
714
+ useEffect(() => {
715
+ setViewOption(option);
716
+ }, [option]);
717
+ const handleSelectChange = (value2) => {
718
+ if (value2.length === 0) onChange(null);
719
+ const findOption = MapThemeList.find((e) => e.name === value2[0].value);
720
+ onChange(findOption ?? null);
721
+ };
722
+ const valueLocal = useMemo(() => {
723
+ const findOption = option.find((e) => e.value === value.name);
724
+ if (!findOption) return [];
725
+ return [findOption];
726
+ }, [value, option]);
727
+ const [search, setSearch] = useState("");
728
+ const handleSearchChange = useCallback(
729
+ (value2) => {
730
+ setSearch(value2);
731
+ if (value2 === "") {
732
+ setViewOption(option);
733
+ } else {
734
+ const filteredOptions = option.filter(
735
+ (option2) => Object.values(option2).some((field) => field == null ? void 0 : field.toString().toLowerCase().includes(value2.toLowerCase()))
736
+ );
737
+ setViewOption(filteredOptions);
738
+ }
739
+ },
740
+ [option]
741
+ );
742
+ return /* @__PURE__ */ jsxRuntimeExports.jsx(
743
+ Select,
744
+ {
745
+ ...props,
746
+ option: viewOption,
747
+ value: valueLocal,
748
+ onChange: handleSelectChange,
749
+ valueSearch: search,
750
+ onChangeSearch: handleSearchChange
751
+ }
752
+ );
753
+ };
754
+ const addSelectWrapperGenre = css`
755
+ ${(props) => css`
756
+ background: ${props.theme.colors.input[props.$genre].background.rest};
757
+ border-color: ${props.theme.colors.input[props.$genre].border.rest};
758
+ color: ${props.theme.colors.input[props.$genre].color.rest};
759
+ &:active {
760
+ background: ${props.theme.colors.input[props.$genre].background.rest};
761
+ border-color: ${props.theme.colors.input[props.$genre].border.rest};
762
+ color: ${props.theme.colors.input[props.$genre].color.rest};
763
+ }
764
+ ${!props.$isNotShowHoverStyle && css`
765
+ &:hover {
766
+ background: ${props.theme.colors.input[props.$genre].background.hover};
767
+ border-color: ${props.theme.colors.input[props.$genre].border.hover};
768
+ color: ${props.theme.colors.input[props.$genre].color.hover};
769
+ }
770
+ `}
771
+ &:focus-visible {
772
+ background: ${props.theme.colors.input[props.$genre].background.rest};
773
+ border-color: ${props.theme.colors.input[props.$genre].border.rest};
774
+ color: ${props.theme.colors.input[props.$genre].color.rest};
775
+ }
776
+ `};
777
+ `;
778
+ const addSelectWrapperSize = css`
779
+ border: 1px solid;
780
+ width: 100%;
781
+ padding: ${(props) => KEY_SIZE_DATA[props.$size].padding / 4}px
782
+ ${(props) => KEY_SIZE_DATA[props.$size].padding - KEY_SIZE_DATA[props.$size].padding / 2.8}px;
783
+ gap: ${(props) => KEY_SIZE_DATA[props.$size].padding / 2.8}px;
784
+ height: fit-content;
785
+ min-height: ${(props) => KEY_SIZE_DATA[props.$size].height}px;
786
+ border-radius: ${(props) => KEY_SIZE_DATA[props.$size].radius}px;
787
+ justify-content: ${(props) => props.$isCenter ? "center" : "flex-start"};
788
+ ${(props) => props.$isOpen && css`
789
+ outline: 2px ${(props2) => props2.theme.states.focus} solid;
790
+ outline-offset: 1px;
791
+ `}
792
+ `;
793
+ const SelectWrapper = styled(motion.div)`
794
+ position: relative;
795
+ display: flex;
796
+ flex-direction: row;
797
+ flex-wrap: wrap;
798
+ align-items: center;
799
+ align-content: center;
800
+ flex-wrap: wrap;
801
+ ${addSelectWrapperGenre};
802
+ ${addSelectWrapperSize};
803
+ ${addError};
804
+ ${addSX};
805
+ `;
806
+ const addDropdownListParentSize = css`
807
+ gap: ${(props) => KEY_SIZE_DATA[props.$size].padding / 2.8}px;
808
+ `;
809
+ const DropdownListParent = styled(motion.div)`
810
+ height: 100%;
811
+ width: 100%;
812
+ overflow: hidden;
813
+ overflow-y: auto;
814
+ margin: 0;
815
+ padding: 0;
816
+ display: flex;
817
+ flex-direction: column;
818
+ ${addDropdownListParentSize};
819
+ `;
820
+ const DropdownList = styled.ul`
821
+ list-style: none;
822
+ position: relative;
823
+ display: flex;
824
+ flex-direction: column;
825
+ width: 100%;
826
+ transform: translateZ(0);
827
+ flex-shrink: 0;
828
+ `;
829
+ const addDropdownListOptionGenre = css`
830
+ ${(props) => css`
831
+ background: ${props.theme.colors.select[props.$genre].background.rest};
832
+ border-color: ${props.theme.colors.select[props.$genre].border.rest};
833
+ color: ${props.theme.colors.select[props.$genre].color.rest};
834
+ &:active {
835
+ background: ${props.theme.colors.select[props.$genre].background.rest};
836
+ border-color: ${props.theme.colors.select[props.$genre].border.rest};
837
+ color: ${props.theme.colors.select[props.$genre].color.rest};
838
+ }
839
+ ${!props.$isNotShowHoverStyle && css`
840
+ &:hover {
841
+ background: ${props.theme.colors.select[props.$genre].background.hover};
842
+ border-color: ${props.theme.colors.select[props.$genre].border.hover};
843
+ color: ${props.theme.colors.select[props.$genre].color.hover};
844
+ }
845
+ `}
846
+ &:focus-visible {
847
+ background: ${props.theme.colors.select[props.$genre].background.rest};
848
+ border-color: ${props.theme.colors.select[props.$genre].border.rest};
849
+ color: ${props.theme.colors.select[props.$genre].color.rest};
850
+ }
851
+ `};
852
+ `;
853
+ const addDropdownListOptionSize = css`
854
+ padding: 0px ${(props) => KEY_SIZE_DATA[props.$size].padding}px;
855
+ width: 100%;
856
+ border: 1px solid;
857
+ border-radius: 0;
858
+ justify-content: ${(props) => props.$isCenter ? "center" : "flex-start"};
859
+ &:first-child {
860
+ ${(props) => props.$isShowScroll ? css`
861
+ border-radius: ${KEY_SIZE_DATA[props.$size].radius}px 0px 0px 0px;
862
+ ` : css`
863
+ border-radius: ${KEY_SIZE_DATA[props.$size].radius}px ${KEY_SIZE_DATA[props.$size].radius}px 0px 0px;
864
+ `}
865
+ }
866
+ &:last-child {
867
+ ${(props) => props.$isShowScroll ? css`
868
+ border-radius: 0px 0px 0px ${KEY_SIZE_DATA[props.$size].radius}px;
869
+ ` : css`
870
+ border-radius: 0px 0px ${KEY_SIZE_DATA[props.$size].radius}px ${KEY_SIZE_DATA[props.$size].radius}px;
871
+ `}
872
+ }
873
+ &:not(:first-child):not(:last-child) {
874
+ border-radius: 0px;
875
+ }
876
+ &:first-child:last-child {
877
+ ${(props) => props.$isShowScroll ? css`
878
+ border-radius: ${KEY_SIZE_DATA[props.$size].radius}px 0px 0px ${KEY_SIZE_DATA[props.$size].radius}px;
879
+ ` : css`
880
+ border-radius: ${KEY_SIZE_DATA[props.$size].radius}px;
881
+ `}
882
+ }
883
+ `;
884
+ const DropdownListOption = styled.li`
885
+ ${(props) => getFontSizeStyles(16, props.$isBold ? 500 : 400, props.theme.font.family, props.theme.font.lineHeight)};
886
+ display: flex;
887
+ align-items: center;
888
+ cursor: pointer;
889
+ top: 0;
890
+ left: 0;
891
+ user-select: none;
892
+ flex-shrink: 0;
893
+ opacity: ${(props) => {
894
+ var _a;
895
+ return ((_a = props.$item) == null ? void 0 : _a.isDisabled) ? 0.5 : 1;
896
+ }};
897
+ ${addDropdownListOptionGenre};
898
+ ${addDropdownListOptionSize};
899
+ ${addRemoveOutline};
900
+ `;
901
+ const addDropdownOptionIconSize = css`
902
+ right: ${(props) => KEY_SIZE_DATA[props.$size].padding - 6}px;
903
+ height: ${(props) => KEY_SIZE_DATA[props.$size].height}px;
904
+ `;
905
+ const DropdownListOptionIcon = styled(Icon)`
906
+ position: absolute;
907
+ right: 0;
908
+ height: 100%;
909
+ align-items: center;
910
+ ${addDropdownOptionIconSize};
911
+ ${addRemoveOutline};
912
+ color: ${(props) => props.$checked ? props.theme.colors.select[props.$genre].border.select : props.theme.colors.input[props.$genre].border.rest};
913
+ `;
914
+ const addSelectListSize = css`
915
+ display: flex;
916
+ flex-direction: row;
917
+ flex-wrap: ${(props) => props.$isWrapSelectOption ? "wrap" : "nowrap"};
918
+ gap: ${(props) => KEY_SIZE_DATA[props.$size].padding / 2.8}px;
919
+ `;
920
+ const SelectList = styled.ul`
921
+ list-style: none;
922
+ position: relative;
923
+ overflow: hidden;
924
+ ${addSelectListSize};
925
+ `;
926
+ const addButtonListSize = css`
927
+ display: flex;
928
+ flex-direction: row;
929
+ gap: ${(props) => KEY_SIZE_DATA[props.$size].padding / 2.8}px;
930
+ padding: ${(props) => KEY_SIZE_DATA[props.$size].padding / 2.8}px ${(props) => KEY_SIZE_DATA[props.$size].padding}px;
931
+ `;
932
+ const ButtonList = styled.div`
933
+ position: absolute;
934
+ right: 0;
935
+ ${addButtonListSize};
936
+ `;
937
+ const addSelectListOptionGenre = css`
938
+ ${(props) => props.$isOnlyColorInSelectListOption ? css`
939
+ border: 0px solid;
940
+ border-color: transparent;
941
+ background-color: transparent;
942
+ color: ${props.theme.colors.select[props.$genre].color.rest};
943
+ &:active {
944
+ color: ${props.theme.colors.select[props.$genre].color.rest};
945
+ }
946
+ ${!props.$isNotShowHoverStyle && css`
947
+ &:hover {
948
+ color: ${props.theme.colors.select[props.$genre].color.hover};
949
+ }
950
+ `}
951
+ &:focus-visible {
952
+ color: ${props.theme.colors.select[props.$genre].color.rest};
953
+ }
954
+ ` : css`
955
+ border: 1px solid;
956
+ background: ${props.theme.colors.select[props.$genre].background.rest};
957
+ border-color: ${props.theme.colors.select[props.$genre].border.rest};
958
+ color: ${props.theme.colors.select[props.$genre].color.rest};
959
+ &:active {
960
+ background: ${props.theme.colors.select[props.$genre].background.rest};
961
+ border-color: ${props.theme.colors.select[props.$genre].border.rest};
962
+ color: ${props.theme.colors.select[props.$genre].color.rest};
963
+ }
964
+ ${!props.$isNotShowHoverStyle && css`
965
+ &:hover {
966
+ background: ${props.theme.colors.select[props.$genre].background.hover};
967
+ border-color: ${props.theme.colors.select[props.$genre].border.hover};
968
+ color: ${props.theme.colors.select[props.$genre].color.hover};
969
+ }
970
+ `}
971
+ &:focus-visible {
972
+ background: ${props.theme.colors.select[props.$genre].background.rest};
973
+ border-color: ${props.theme.colors.select[props.$genre].border.rest};
974
+ color: ${props.theme.colors.select[props.$genre].color.rest};
975
+ }
976
+ `}
977
+ `;
978
+ const addSelectListOptionSize = css`
979
+ padding: ${(props) => KEY_SIZE_DATA[props.$size].padding / 2.8}px;
980
+ border-radius: ${(props) => KEY_SIZE_DATA[props.$size].radius}px;
981
+ `;
982
+ const SelectListOption = styled(motion.li)`
983
+ display: flex;
984
+ align-items: center;
985
+ opacity: 1;
986
+ cursor: ${(props) => props.$isClearWhenClickSelectListOption ? "pointer" : "default"};
987
+ flex-shrink: 0;
988
+ overflow: hidden;
989
+ width: fit-content;
990
+ ${addSelectListOptionGenre};
991
+ ${addSelectListOptionSize};
992
+ ${addRemoveOutline};
993
+ `;
994
+ const SelectTextArea = styled(TextArea)`
995
+ border: 0 !important;
996
+ background-color: transparent !important;
997
+ min-height: initial !important;
998
+ width: 100%;
999
+ max-width: 100%;
1000
+ flex-grow: 1;
1001
+ padding: ${(props) => KEY_SIZE_DATA[props.size].padding / 2.8}px 0px ${(props) => KEY_SIZE_DATA[props.size].padding / 2.8}px ${(props) => KEY_SIZE_DATA[props.size].padding / 2.8}px;
1002
+ ${addRemoveOutline};
1003
+ `;
1004
+ export {
1005
+ ButtonList as B,
1006
+ ContainerDropdownListOption as C,
1007
+ DropdownListParent as D,
1008
+ Select as S,
1009
+ ContainerSelectListOption as a,
1010
+ SelectLanguage as b,
1011
+ SelectMonth as c,
1012
+ SelectMonths as d,
1013
+ SelectYear as e,
1014
+ SelectMapTheme as f,
1015
+ SelectWrapper as g,
1016
+ DropdownList as h,
1017
+ DropdownListOption as i,
1018
+ DropdownListOptionIcon as j,
1019
+ SelectList as k,
1020
+ SelectListOption as l,
1021
+ SelectTextArea as m
1022
+ };
1023
+ //# sourceMappingURL=component.styles-DqTkSP8L.js.map