@bodynarf/react.components 1.12.6 → 1.13.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 (375) hide show
  1. package/changelog.md +55 -0
  2. package/components/accordion/component/index.d.ts +6 -6
  3. package/components/accordion/component/index.d.ts.map +1 -1
  4. package/components/accordion/component/index.js +33 -35
  5. package/components/accordion/index.d.ts +2 -2
  6. package/components/accordion/index.js +2 -2
  7. package/components/accordion/types.d.ts +16 -17
  8. package/components/accordion/types.d.ts.map +1 -1
  9. package/components/accordion/types.js +1 -1
  10. package/components/anchor/component/index.d.ts +7 -5
  11. package/components/anchor/component/index.d.ts.map +1 -1
  12. package/components/anchor/component/index.js +23 -20
  13. package/components/anchor/components/anchorWithIcon/index.d.ts +10 -10
  14. package/components/anchor/components/anchorWithIcon/index.d.ts.map +1 -1
  15. package/components/anchor/components/anchorWithIcon/index.js +24 -24
  16. package/components/anchor/components/simpleAnchor/index.d.ts +4 -5
  17. package/components/anchor/components/simpleAnchor/index.d.ts.map +1 -1
  18. package/components/anchor/components/simpleAnchor/index.js +11 -11
  19. package/components/anchor/index.d.ts +2 -2
  20. package/components/anchor/index.js +2 -2
  21. package/components/anchor/types.d.ts +19 -16
  22. package/components/anchor/types.d.ts.map +1 -1
  23. package/components/anchor/types.js +1 -1
  24. package/components/breadcrumbs/component/index.d.ts +8 -8
  25. package/components/breadcrumbs/component/index.d.ts.map +1 -1
  26. package/components/breadcrumbs/component/index.js +38 -37
  27. package/components/breadcrumbs/index.d.ts +2 -2
  28. package/components/breadcrumbs/index.js +2 -2
  29. package/components/breadcrumbs/types.d.ts +54 -46
  30. package/components/breadcrumbs/types.d.ts.map +1 -1
  31. package/components/breadcrumbs/types.js +1 -1
  32. package/components/button/component/index.d.ts +9 -8
  33. package/components/button/component/index.d.ts.map +1 -1
  34. package/components/button/component/index.js +35 -33
  35. package/components/button/components/buttonWithIcon/index.d.ts +5 -4
  36. package/components/button/components/buttonWithIcon/index.d.ts.map +1 -1
  37. package/components/button/components/buttonWithIcon/index.js +27 -27
  38. package/components/button/components/simpleButton/index.d.ts +5 -5
  39. package/components/button/components/simpleButton/index.d.ts.map +1 -1
  40. package/components/button/components/simpleButton/index.js +11 -11
  41. package/components/button/index.d.ts +2 -2
  42. package/components/button/index.js +2 -2
  43. package/components/button/types.d.ts +71 -37
  44. package/components/button/types.d.ts.map +1 -1
  45. package/components/button/types.js +30 -1
  46. package/components/dropdown/component/index.d.ts +6 -6
  47. package/components/dropdown/component/index.d.ts.map +1 -1
  48. package/components/dropdown/component/index.js +12 -12
  49. package/components/dropdown/components/compact/index.d.ts +10 -10
  50. package/components/dropdown/components/compact/index.d.ts.map +1 -1
  51. package/components/dropdown/components/compact/index.js +80 -80
  52. package/components/dropdown/components/item/index.d.ts +14 -14
  53. package/components/dropdown/components/item/index.d.ts.map +1 -1
  54. package/components/dropdown/components/item/index.js +39 -38
  55. package/components/dropdown/components/label/component/index.d.ts +26 -26
  56. package/components/dropdown/components/label/component/index.d.ts.map +1 -1
  57. package/components/dropdown/components/label/component/index.js +16 -16
  58. package/components/dropdown/components/label/components/empty/index.d.ts +7 -7
  59. package/components/dropdown/components/label/components/empty/index.d.ts.map +1 -1
  60. package/components/dropdown/components/label/components/empty/index.js +16 -16
  61. package/components/dropdown/components/label/components/selected/index.d.ts +7 -7
  62. package/components/dropdown/components/label/components/selected/index.d.ts.map +1 -1
  63. package/components/dropdown/components/label/components/selected/index.js +20 -20
  64. package/components/dropdown/components/label/components/selectedWithIcon/index.d.ts +7 -7
  65. package/components/dropdown/components/label/components/selectedWithIcon/index.d.ts.map +1 -1
  66. package/components/dropdown/components/label/components/selectedWithIcon/index.js +28 -28
  67. package/components/dropdown/components/label/components/withSearch/index.d.ts +15 -15
  68. package/components/dropdown/components/label/components/withSearch/index.d.ts.map +1 -1
  69. package/components/dropdown/components/label/components/withSearch/index.js +33 -33
  70. package/components/dropdown/components/label/index.d.ts +1 -1
  71. package/components/dropdown/components/label/index.js +1 -1
  72. package/components/dropdown/components/withLabel/index.d.ts +5 -5
  73. package/components/dropdown/components/withLabel/index.js +11 -11
  74. package/components/dropdown/index.d.ts +2 -2
  75. package/components/dropdown/index.js +2 -2
  76. package/components/dropdown/types.d.ts +65 -64
  77. package/components/dropdown/types.d.ts.map +1 -1
  78. package/components/dropdown/types.js +1 -1
  79. package/components/file/component/index.d.ts +6 -6
  80. package/components/file/component/index.d.ts.map +1 -1
  81. package/components/file/component/index.js +51 -50
  82. package/components/file/component/styles.scss +13 -0
  83. package/components/file/index.d.ts +2 -2
  84. package/components/file/index.js +2 -2
  85. package/components/file/types.d.ts +31 -31
  86. package/components/file/types.d.ts.map +1 -1
  87. package/components/file/types.js +1 -1
  88. package/components/icon/component/index.d.ts +8 -8
  89. package/components/icon/component/index.d.ts.map +1 -1
  90. package/components/icon/component/index.js +23 -28
  91. package/components/icon/component/style.scss +3 -3
  92. package/components/icon/index.d.ts +2 -2
  93. package/components/icon/index.js +2 -2
  94. package/components/icon/types.d.ts +13 -15
  95. package/components/icon/types.d.ts.map +1 -1
  96. package/components/icon/types.js +1 -1
  97. package/components/index.d.ts +10 -10
  98. package/components/index.js +10 -10
  99. package/components/multiselect/component/index.d.ts +7 -7
  100. package/components/multiselect/component/index.js +13 -13
  101. package/components/multiselect/components/item/index.d.ts +24 -24
  102. package/components/multiselect/components/item/index.d.ts.map +1 -1
  103. package/components/multiselect/components/item/index.js +63 -62
  104. package/components/multiselect/components/label/component/index.d.ts +19 -19
  105. package/components/multiselect/components/label/component/index.d.ts.map +1 -1
  106. package/components/multiselect/components/label/component/index.js +12 -12
  107. package/components/multiselect/components/label/components/empty/index.d.ts +7 -7
  108. package/components/multiselect/components/label/components/empty/index.d.ts.map +1 -1
  109. package/components/multiselect/components/label/components/empty/index.js +16 -16
  110. package/components/multiselect/components/label/components/nonEmpty/index.d.ts +7 -7
  111. package/components/multiselect/components/label/components/nonEmpty/index.d.ts.map +1 -1
  112. package/components/multiselect/components/label/components/nonEmpty/index.js +16 -16
  113. package/components/multiselect/components/label/index.d.ts +1 -1
  114. package/components/multiselect/components/label/index.js +1 -1
  115. package/components/multiselect/components/withLabel/index.d.ts +5 -5
  116. package/components/multiselect/components/withLabel/index.js +11 -11
  117. package/components/multiselect/components/withoutLabel/index.d.ts +9 -9
  118. package/components/multiselect/components/withoutLabel/index.d.ts.map +1 -1
  119. package/components/multiselect/components/withoutLabel/index.js +85 -84
  120. package/components/multiselect/index.d.ts +2 -2
  121. package/components/multiselect/index.js +2 -2
  122. package/components/multiselect/types.d.ts +32 -40
  123. package/components/multiselect/types.d.ts.map +1 -1
  124. package/components/multiselect/types.js +1 -1
  125. package/components/paginator/component/index.d.ts +8 -8
  126. package/components/paginator/component/index.d.ts.map +1 -1
  127. package/components/paginator/component/index.js +65 -70
  128. package/components/paginator/index.d.ts +2 -2
  129. package/components/paginator/index.js +2 -2
  130. package/components/paginator/types.d.ts +54 -54
  131. package/components/paginator/types.d.ts.map +1 -1
  132. package/components/paginator/types.js +1 -1
  133. package/components/primitives/checkbox/component/index.d.ts +6 -6
  134. package/components/primitives/checkbox/component/index.d.ts.map +1 -1
  135. package/components/primitives/checkbox/component/index.js +43 -41
  136. package/components/primitives/checkbox/index.d.ts +2 -2
  137. package/components/primitives/checkbox/index.js +2 -2
  138. package/components/primitives/checkbox/types.d.ts +26 -24
  139. package/components/primitives/checkbox/types.d.ts.map +1 -1
  140. package/components/primitives/checkbox/types.js +1 -1
  141. package/components/primitives/color/component/index.d.ts +6 -6
  142. package/components/primitives/color/component/index.d.ts.map +1 -1
  143. package/components/primitives/color/component/index.js +10 -10
  144. package/components/primitives/color/components/picker/index.d.ts +19 -19
  145. package/components/primitives/color/components/picker/index.d.ts.map +1 -1
  146. package/components/primitives/color/components/picker/index.js +43 -42
  147. package/components/primitives/color/components/withLabel/index.d.ts +5 -5
  148. package/components/primitives/color/components/withLabel/index.d.ts.map +1 -1
  149. package/components/primitives/color/components/withLabel/index.js +25 -25
  150. package/components/primitives/color/components/withoutLabel/index.d.ts +5 -5
  151. package/components/primitives/color/components/withoutLabel/index.d.ts.map +1 -1
  152. package/components/primitives/color/components/withoutLabel/index.js +21 -21
  153. package/components/primitives/color/index.d.ts +2 -2
  154. package/components/primitives/color/index.js +2 -2
  155. package/components/primitives/color/types.d.ts +23 -23
  156. package/components/primitives/color/types.d.ts.map +1 -1
  157. package/components/primitives/color/types.js +1 -1
  158. package/components/primitives/date/component/index.d.ts +6 -6
  159. package/components/primitives/date/component/index.d.ts.map +1 -1
  160. package/components/primitives/date/component/index.js +31 -31
  161. package/components/primitives/date/index.d.ts +2 -2
  162. package/components/primitives/date/index.js +2 -2
  163. package/components/primitives/date/types.d.ts +3 -8
  164. package/components/primitives/date/types.d.ts.map +1 -1
  165. package/components/primitives/date/types.js +1 -1
  166. package/components/primitives/index.d.ts +7 -7
  167. package/components/primitives/index.js +7 -7
  168. package/components/primitives/internal/componentWithLabel/index.d.ts +16 -16
  169. package/components/primitives/internal/componentWithLabel/index.d.ts.map +1 -1
  170. package/components/primitives/internal/componentWithLabel/index.js +30 -30
  171. package/components/primitives/internal/hint/index.d.ts +8 -8
  172. package/components/primitives/internal/hint/index.d.ts.map +1 -1
  173. package/components/primitives/internal/hint/index.js +49 -48
  174. package/components/primitives/multiline/component/index.d.ts +5 -5
  175. package/components/primitives/multiline/component/index.d.ts.map +1 -1
  176. package/components/primitives/multiline/component/index.js +11 -11
  177. package/components/primitives/multiline/components/withLabel/index.d.ts +5 -5
  178. package/components/primitives/multiline/components/withLabel/index.d.ts.map +1 -1
  179. package/components/primitives/multiline/components/withLabel/index.js +27 -27
  180. package/components/primitives/multiline/components/withoutLabel/index.d.ts +5 -5
  181. package/components/primitives/multiline/components/withoutLabel/index.d.ts.map +1 -1
  182. package/components/primitives/multiline/components/withoutLabel/index.js +27 -27
  183. package/components/primitives/multiline/index.d.ts +2 -2
  184. package/components/primitives/multiline/index.js +2 -2
  185. package/components/primitives/multiline/types.d.ts +8 -10
  186. package/components/primitives/multiline/types.d.ts.map +1 -1
  187. package/components/primitives/multiline/types.js +1 -1
  188. package/components/primitives/number/component/index.d.ts +5 -5
  189. package/components/primitives/number/component/index.d.ts.map +1 -1
  190. package/components/primitives/number/component/index.js +11 -11
  191. package/components/primitives/number/components/withLabel/index.d.ts +5 -5
  192. package/components/primitives/number/components/withLabel/index.d.ts.map +1 -1
  193. package/components/primitives/number/components/withLabel/index.js +27 -27
  194. package/components/primitives/number/components/withoutLabel/index.d.ts +5 -5
  195. package/components/primitives/number/components/withoutLabel/index.d.ts.map +1 -1
  196. package/components/primitives/number/components/withoutLabel/index.js +27 -27
  197. package/components/primitives/number/index.d.ts +2 -2
  198. package/components/primitives/number/index.js +2 -2
  199. package/components/primitives/number/types.d.ts +10 -12
  200. package/components/primitives/number/types.d.ts.map +1 -1
  201. package/components/primitives/number/types.js +1 -1
  202. package/components/primitives/password/component/index.d.ts +6 -5
  203. package/components/primitives/password/component/index.d.ts.map +1 -1
  204. package/components/primitives/password/component/index.js +12 -12
  205. package/components/primitives/password/components/withLabel/index.d.ts +4 -3
  206. package/components/primitives/password/components/withLabel/index.d.ts.map +1 -1
  207. package/components/primitives/password/components/withLabel/index.js +34 -34
  208. package/components/primitives/password/components/withoutLabel/index.d.ts +4 -3
  209. package/components/primitives/password/components/withoutLabel/index.d.ts.map +1 -1
  210. package/components/primitives/password/components/withoutLabel/index.js +34 -34
  211. package/components/primitives/password/index.d.ts +2 -2
  212. package/components/primitives/password/index.js +2 -2
  213. package/components/primitives/password/types.d.ts +14 -14
  214. package/components/primitives/password/types.d.ts.map +1 -1
  215. package/components/primitives/password/types.js +1 -1
  216. package/components/primitives/text/component/index.d.ts +5 -5
  217. package/components/primitives/text/component/index.d.ts.map +1 -1
  218. package/components/primitives/text/component/index.js +11 -11
  219. package/components/primitives/text/components/withLabel/index.d.ts +5 -5
  220. package/components/primitives/text/components/withLabel/index.d.ts.map +1 -1
  221. package/components/primitives/text/components/withLabel/index.js +27 -27
  222. package/components/primitives/text/components/withoutLabel/index.d.ts +5 -5
  223. package/components/primitives/text/components/withoutLabel/index.d.ts.map +1 -1
  224. package/components/primitives/text/components/withoutLabel/index.js +27 -27
  225. package/components/primitives/text/index.d.ts +2 -2
  226. package/components/primitives/text/index.js +2 -2
  227. package/components/primitives/text/types.d.ts +3 -6
  228. package/components/primitives/text/types.d.ts.map +1 -1
  229. package/components/primitives/text/types.js +1 -1
  230. package/components/search/component/index.d.ts +6 -5
  231. package/components/search/component/index.d.ts.map +1 -1
  232. package/components/search/component/index.js +41 -40
  233. package/components/search/index.d.ts +2 -2
  234. package/components/search/index.js +2 -2
  235. package/components/search/types.d.ts +41 -41
  236. package/components/search/types.d.ts.map +1 -1
  237. package/components/search/types.js +1 -1
  238. package/components/table/component/index.d.ts +8 -9
  239. package/components/table/component/index.d.ts.map +1 -1
  240. package/components/table/component/index.js +28 -29
  241. package/components/table/components/heading/index.d.ts +14 -12
  242. package/components/table/components/heading/index.d.ts.map +1 -1
  243. package/components/table/components/heading/index.js +21 -21
  244. package/components/table/index.d.ts +2 -2
  245. package/components/table/index.js +2 -2
  246. package/components/table/types.d.ts +52 -52
  247. package/components/table/types.d.ts.map +1 -1
  248. package/components/table/types.js +1 -1
  249. package/components/tabs/component/index.d.ts +9 -9
  250. package/components/tabs/component/index.d.ts.map +1 -1
  251. package/components/tabs/component/index.js +68 -74
  252. package/components/tabs/components/item/index.d.ts +12 -12
  253. package/components/tabs/components/item/index.d.ts.map +1 -1
  254. package/components/tabs/components/item/index.js +29 -28
  255. package/components/tabs/index.d.ts +2 -2
  256. package/components/tabs/index.js +2 -2
  257. package/components/tabs/types.d.ts +54 -54
  258. package/components/tabs/types.js +22 -22
  259. package/components/tag/component/index.d.ts +6 -6
  260. package/components/tag/component/index.d.ts.map +1 -1
  261. package/components/tag/component/index.js +32 -32
  262. package/components/tag/index.d.ts +2 -2
  263. package/components/tag/index.js +2 -2
  264. package/components/tag/types.d.ts +24 -26
  265. package/components/tag/types.d.ts.map +1 -1
  266. package/components/tag/types.js +1 -1
  267. package/hooks/index.d.ts +11 -5
  268. package/hooks/index.d.ts.map +1 -1
  269. package/hooks/index.js +11 -5
  270. package/hooks/useComponentOutsideClick.d.ts +11 -11
  271. package/hooks/useComponentOutsideClick.d.ts.map +1 -1
  272. package/hooks/useComponentOutsideClick.js +31 -31
  273. package/hooks/useDebounceHandler.d.ts +17 -17
  274. package/hooks/useDebounceHandler.d.ts.map +1 -1
  275. package/hooks/useDebounceHandler.js +30 -30
  276. package/hooks/useEventListener.d.ts +13 -0
  277. package/hooks/useEventListener.d.ts.map +1 -0
  278. package/hooks/useEventListener.js +23 -0
  279. package/hooks/useInterval.d.ts +12 -0
  280. package/hooks/useInterval.d.ts.map +1 -0
  281. package/hooks/useInterval.js +23 -0
  282. package/hooks/useLocalStorage.d.ts +13 -0
  283. package/hooks/useLocalStorage.d.ts.map +1 -0
  284. package/hooks/useLocalStorage.js +23 -0
  285. package/hooks/useMount.d.ts +11 -11
  286. package/hooks/useMount.d.ts.map +1 -1
  287. package/hooks/useMount.js +16 -16
  288. package/hooks/usePagination.d.ts +19 -19
  289. package/hooks/usePagination.d.ts.map +1 -1
  290. package/hooks/usePagination.js +37 -37
  291. package/hooks/usePrevious.d.ts +12 -0
  292. package/hooks/usePrevious.d.ts.map +1 -0
  293. package/hooks/usePrevious.js +18 -0
  294. package/hooks/useTimeout.d.ts +12 -0
  295. package/hooks/useTimeout.d.ts.map +1 -0
  296. package/hooks/useTimeout.js +23 -0
  297. package/hooks/useUnmount.d.ts +8 -8
  298. package/hooks/useUnmount.d.ts.map +1 -1
  299. package/hooks/useUnmount.js +22 -22
  300. package/hooks/useUpdateEffect.d.ts +16 -0
  301. package/hooks/useUpdateEffect.d.ts.map +1 -0
  302. package/hooks/useUpdateEffect.js +25 -0
  303. package/index.d.ts +4 -4
  304. package/index.js +4 -4
  305. package/package.json +12 -10
  306. package/tsconfig.tsbuildinfo +1 -1
  307. package/types/{baseElementProps.d.ts → base/baseElementProps.d.ts} +10 -10
  308. package/types/base/baseElementProps.d.ts.map +1 -0
  309. package/types/{baseElementProps.js → base/baseElementProps.js} +1 -1
  310. package/types/{baseInputElementProps.d.ts → base/baseInputElementProps.d.ts} +49 -41
  311. package/types/base/baseInputElementProps.d.ts.map +1 -0
  312. package/types/{baseInputElementProps.js → base/baseInputElementProps.js} +1 -1
  313. package/types/base/blurableElement.d.ts +9 -0
  314. package/types/base/blurableElement.d.ts.map +1 -0
  315. package/types/base/blurableElement.js +1 -0
  316. package/types/base/clickableElement.d.ts +7 -0
  317. package/types/base/clickableElement.d.ts.map +1 -0
  318. package/types/base/clickableElement.js +1 -0
  319. package/types/base/index.d.ts +5 -0
  320. package/types/base/index.d.ts.map +1 -0
  321. package/types/base/index.js +4 -0
  322. package/types/dataAttributes.d.ts +8 -8
  323. package/types/dataAttributes.d.ts.map +1 -1
  324. package/types/dataAttributes.js +1 -1
  325. package/types/elementIcon.d.ts +21 -21
  326. package/types/elementIcon.d.ts.map +1 -1
  327. package/types/elementIcon.js +1 -1
  328. package/types/{elementColor.d.ts → enums/elementColor.d.ts} +17 -17
  329. package/types/enums/elementColor.d.ts.map +1 -0
  330. package/types/{elementColor.js → enums/elementColor.js} +18 -18
  331. package/types/{elementPosition.d.ts → enums/elementPosition.d.ts} +11 -11
  332. package/types/enums/elementPosition.d.ts.map +1 -0
  333. package/types/{elementPosition.js → enums/elementPosition.js} +10 -10
  334. package/types/{elementSize.d.ts → enums/elementSize.d.ts} +11 -11
  335. package/types/enums/elementSize.d.ts.map +1 -0
  336. package/types/{elementSize.js → enums/elementSize.js} +12 -12
  337. package/types/enums/index.d.ts +4 -0
  338. package/types/enums/index.d.ts.map +1 -0
  339. package/types/enums/index.js +3 -0
  340. package/types/hintConfiguration.d.ts +12 -12
  341. package/types/hintConfiguration.d.ts.map +1 -1
  342. package/types/hintConfiguration.js +1 -1
  343. package/types/index.d.ts +7 -10
  344. package/types/index.d.ts.map +1 -1
  345. package/types/index.js +7 -10
  346. package/types/labelConfiguration.d.ts +14 -14
  347. package/types/labelConfiguration.d.ts.map +1 -1
  348. package/types/labelConfiguration.js +1 -1
  349. package/types/validation/index.d.ts +2 -2
  350. package/types/validation/index.js +2 -2
  351. package/types/validation/state.d.ts +8 -8
  352. package/types/validation/state.d.ts.map +1 -1
  353. package/types/validation/state.js +1 -1
  354. package/types/validation/status.d.ts +9 -9
  355. package/types/validation/status.js +10 -10
  356. package/utils/dataAttributes.d.ts +7 -7
  357. package/utils/dataAttributes.d.ts.map +1 -1
  358. package/utils/dataAttributes.js +22 -21
  359. package/utils/index.d.ts +3 -2
  360. package/utils/index.d.ts.map +1 -1
  361. package/utils/index.js +3 -2
  362. package/utils/styles.d.ts +14 -0
  363. package/utils/styles.d.ts.map +1 -0
  364. package/utils/styles.js +33 -0
  365. package/utils/validation.d.ts +10 -10
  366. package/utils/validation.d.ts.map +1 -1
  367. package/utils/validation.js +20 -20
  368. package/bodynarf-react.components-1.12.2.tgz +0 -0
  369. package/bodynarf-react.components-1.12.3.tgz +0 -0
  370. package/bodynarf-react.components-1.12.4.tgz +0 -0
  371. package/types/baseElementProps.d.ts.map +0 -1
  372. package/types/baseInputElementProps.d.ts.map +0 -1
  373. package/types/elementColor.d.ts.map +0 -1
  374. package/types/elementPosition.d.ts.map +0 -1
  375. package/types/elementSize.d.ts.map +0 -1
@@ -1,84 +1,85 @@
1
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
- import { useCallback, useId, useState } from "react";
3
- import { getClassName, isNullOrEmpty, isNullOrUndefined } from "@bodynarf/utils";
4
- import { ElementSize } from "../../../../types";
5
- import { getStyleClassName, mapDataAttributes } from "../../../../utils";
6
- import { useComponentOutsideClick } from "../../../../hooks";
7
- import Search from "../../../search";
8
- import InternalHint from "../../../primitives/internal/hint";
9
- import MultiselectItem from "../item";
10
- import MultiselectLabel from "../label/component";
11
- const MultiselectWithoutLabel = ({ items, onChange, onClear, hideOnOuterClick, listMaxHeight, placeholder, noDataText = "No items found", selectionCaption = "{0} items selected", noDataByQuery = "No items found by specified search", compact = false, disabled = false, searchable = true, validationState, className, title, data, hint, id: propsId, checkboxConfig, }) => {
12
- const generatedId = useId();
13
- const id = propsId ?? generatedId;
14
- const [isListVisible, setListVisible] = useState(false);
15
- const [selectedItems, setSelectedItems] = useState(items
16
- .filter(({ selected }) => selected)
17
- .map(({ id }) => id)
18
- ??
19
- []);
20
- const onItemClick = useCallback((item) => {
21
- const isItemSelected = selectedItems.includes(item.id);
22
- setSelectedItems(x => isItemSelected
23
- ? x.filter(x => x !== item.id)
24
- : [...x, item.id]);
25
- item.selected = isItemSelected;
26
- onChange(item, isItemSelected);
27
- }, [onChange, selectedItems]);
28
- const onItemSelectChange = useCallback((item, selected) => {
29
- setSelectedItems(x => selected
30
- ? [...x, item.id]
31
- : x.filter(x => x !== item.id));
32
- item.selected = selected;
33
- onChange(item, selected);
34
- }, [onChange]);
35
- const onLabelClick = useCallback((event) => {
36
- if (disabled) {
37
- return;
38
- }
39
- const target = event.target;
40
- if (isNullOrUndefined(target)) {
41
- return;
42
- }
43
- if (target.classList.contains("bi-plus-lg")) {
44
- setSelectedItems([]);
45
- onClear?.();
46
- }
47
- else {
48
- setListVisible(state => !state);
49
- }
50
- }, [onClear, setListVisible, disabled]);
51
- useComponentOutsideClick(`[data-dropdown-id="${id}"]`, isListVisible, () => setListVisible(false), hideOnOuterClick);
52
- const classNames = getClassName([
53
- "bbr-multiselect",
54
- "bbr-dropdown",
55
- className,
56
- disabled ? "bbr-dropdown--disabled" : "",
57
- compact ? "bbr-dropdown--compact" : "",
58
- isListVisible ? "is-active" : "",
59
- isNullOrEmpty(listMaxHeight) ? "bbr-dropdown--height-default" : "",
60
- "dropdown",
61
- ]);
62
- const labelComponentClassName = getStyleClassName(undefined, validationState);
63
- const selectedItemsCount = selectedItems.length;
64
- const dataAttributes = isNullOrUndefined(data)
65
- ? undefined
66
- : mapDataAttributes(data);
67
- const deselectable = !isNullOrUndefined(onClear);
68
- return (_jsxs(_Fragment, { children: [_jsxs("div", { className: classNames, "data-dropdown-id": id, title: title, ...dataAttributes, children: [_jsx(MultiselectLabel, { caption: placeholder, onClick: onLabelClick, deselectable: deselectable, className: labelComponentClassName, selectionCaption: selectionCaption, selectedItemsCount: selectedItemsCount }), _jsx("div", { className: "dropdown-menu", children: _jsx(DropdownContent, { id: id, items: items, searchable: searchable, noDataText: noDataText, onItemClick: onItemClick, noDataByQuery: noDataByQuery, selectedItems: selectedItems, listMaxHeight: listMaxHeight, checkboxConfig: checkboxConfig, onItemSelectChange: onItemSelectChange }) })] }, id), _jsx(InternalHint, { hint: hint, validationState: validationState })] }));
69
- };
70
- export default MultiselectWithoutLabel;
71
- const DropdownContent = ({ noDataText, id, listMaxHeight, noDataByQuery, items, selectedItems, onItemClick, onItemSelectChange, searchable = true, checkboxConfig, }) => {
72
- const [search, setSearch] = useState("");
73
- if (items.length === 0) {
74
- return (_jsx("div", { className: "dropdown-content", children: _jsx("span", { className: "dropdown-item", children: noDataText }) }));
75
- }
76
- const filteredItems = isNullOrEmpty(search)
77
- ? items
78
- : items.filter(({ displayValue }) => displayValue.toLocaleLowerCase().includes(search.toLocaleLowerCase()));
79
- if (filteredItems.length === 0) {
80
- return (_jsxs("div", { className: "dropdown-content", style: { maxHeight: listMaxHeight }, children: [_jsx("div", { className: "mx-2 my-1", children: _jsx(Search, { caption: "search", onSearch: setSearch, searchType: "byTyping", size: ElementSize.Small }) }), _jsx("span", { className: "dropdown-item", children: noDataByQuery })] }));
81
- }
82
- return (_jsxs("div", { className: "dropdown-content", style: { maxHeight: listMaxHeight }, children: [searchable &&
83
- _jsx("div", { className: "mx-2 my-1", children: _jsx(Search, { caption: "search", onSearch: setSearch, searchType: "byTyping", size: ElementSize.Small }) }), _jsx("ul", { children: filteredItems.map(item => _jsx(MultiselectItem, { item: item, rootId: id, onItemClick: onItemClick, onChange: onItemSelectChange, checkboxConfig: checkboxConfig, selected: selectedItems.includes(item.id) }, item.id)) })] }));
84
- };
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useId, useState } from "react";
3
+ import { getClassName, isNullOrEmpty, isNullOrUndefined } from "@bodynarf/utils";
4
+ import { ElementSize } from "../../../../types";
5
+ import { getStyleClassName, mapDataAttributes } from "../../../../utils";
6
+ import { useComponentOutsideClick } from "../../../../hooks";
7
+ import Search from "../../../search";
8
+ import InternalHint from "../../../primitives/internal/hint";
9
+ import MultiselectItem from "../item";
10
+ import MultiselectLabel from "../label/component";
11
+ const MultiselectWithoutLabel = ({ items, onChange, onClear, hideOnOuterClick, listMaxHeight, placeholder = "", noDataText = "No items found", selectionCaption = "{0} items selected", noDataByQuery = "No items found by specified search", compact = false, disabled = false, searchable = true, validationState, className, title, data, hint, id: propsId, checkboxConfig, }) => {
12
+ const generatedId = useId();
13
+ const id = propsId ?? generatedId;
14
+ const [isListVisible, setListVisible] = useState(false);
15
+ const [selectedItems, setSelectedItems] = useState(items
16
+ .filter(({ selected }) => selected)
17
+ .map(({ id }) => id)
18
+ ??
19
+ []);
20
+ const onItemClick = useCallback((item) => {
21
+ const isItemSelected = selectedItems.includes(item.id);
22
+ setSelectedItems(x => isItemSelected
23
+ ? x.filter(x => x !== item.id)
24
+ : [...x, item.id]);
25
+ item.selected = isItemSelected;
26
+ onChange(item, isItemSelected);
27
+ }, [onChange, selectedItems]);
28
+ const onItemSelectChange = useCallback((item, selected) => {
29
+ setSelectedItems(x => selected
30
+ ? [...x, item.id]
31
+ : x.filter(x => x !== item.id));
32
+ item.selected = selected;
33
+ onChange(item, selected);
34
+ }, [onChange]);
35
+ const onLabelClick = useCallback((event) => {
36
+ if (disabled) {
37
+ return;
38
+ }
39
+ const target = event.target;
40
+ if (isNullOrUndefined(target)) {
41
+ return;
42
+ }
43
+ if (target.classList.contains("bi-plus-lg")) {
44
+ setSelectedItems([]);
45
+ onClear?.();
46
+ }
47
+ else {
48
+ setListVisible(state => !state);
49
+ }
50
+ }, [onClear, setListVisible, disabled]);
51
+ useComponentOutsideClick(`[data-dropdown-id="${id}"]`, isListVisible, () => setListVisible(false), hideOnOuterClick);
52
+ const classNames = getClassName([
53
+ "bbr-multiselect",
54
+ "bbr-dropdown",
55
+ className,
56
+ disabled ? "bbr-dropdown--disabled" : "",
57
+ compact ? "bbr-dropdown--compact" : "",
58
+ isListVisible ? "is-active" : "",
59
+ isNullOrEmpty(listMaxHeight) ? "bbr-dropdown--height-default" : "",
60
+ "dropdown",
61
+ ]);
62
+ const labelComponentClassName = getStyleClassName(undefined, validationState);
63
+ const selectedItemsCount = selectedItems.length;
64
+ const dataAttributes = isNullOrUndefined(data)
65
+ ? undefined
66
+ : mapDataAttributes(data);
67
+ const deselectable = !isNullOrUndefined(onClear);
68
+ return (_jsxs(_Fragment, { children: [_jsxs("div", { className: classNames, "data-dropdown-id": id, title: title, ...dataAttributes, children: [_jsx(MultiselectLabel, { caption: placeholder, onClick: onLabelClick, deselectable: deselectable, className: labelComponentClassName, selectionCaption: selectionCaption, selectedItemsCount: selectedItemsCount }), _jsx("div", { className: "dropdown-menu", children: _jsx(DropdownContent, { id: id, items: items, searchable: searchable, noDataText: noDataText, onItemClick: onItemClick, noDataByQuery: noDataByQuery, selectedItems: selectedItems, listMaxHeight: listMaxHeight, checkboxConfig: checkboxConfig, onItemSelectChange: onItemSelectChange }) })] }, id), _jsx(InternalHint, { hint: hint, validationState: validationState })] }));
69
+ };
70
+ export default MultiselectWithoutLabel;
71
+ // eslint-disable-next-line react/no-multi-comp
72
+ const DropdownContent = ({ noDataText, id, listMaxHeight, noDataByQuery, items, selectedItems, onItemClick, onItemSelectChange, searchable = true, checkboxConfig, }) => {
73
+ const [search, setSearch] = useState("");
74
+ if (items.length === 0) {
75
+ return (_jsx("div", { className: "dropdown-content", children: _jsx("span", { className: "dropdown-item", children: noDataText }) }));
76
+ }
77
+ const filteredItems = isNullOrEmpty(search)
78
+ ? items
79
+ : items.filter(({ displayValue }) => displayValue.toLocaleLowerCase().includes(search.toLocaleLowerCase()));
80
+ if (filteredItems.length === 0) {
81
+ return (_jsxs("div", { className: "dropdown-content", style: { maxHeight: listMaxHeight }, children: [_jsx("div", { className: "mx-2 my-1", children: _jsx(Search, { caption: "search", onSearch: setSearch, searchType: "byTyping", size: ElementSize.Small }) }), _jsx("span", { className: "dropdown-item", children: noDataByQuery })] }));
82
+ }
83
+ return (_jsxs("div", { className: "dropdown-content", style: { maxHeight: listMaxHeight }, children: [!!searchable &&
84
+ _jsx("div", { className: "mx-2 my-1", children: _jsx(Search, { caption: "search", onSearch: setSearch, searchType: "byTyping", size: ElementSize.Small }) }), _jsx("ul", { children: filteredItems.map(item => _jsx(MultiselectItem, { item: item, rootId: id, onItemClick: onItemClick, onChange: onItemSelectChange, checkboxConfig: checkboxConfig, selected: selectedItems.includes(item.id) }, item.id)) })] }));
85
+ };
@@ -1,3 +1,3 @@
1
- export { default } from "./component";
2
- export * from "./types";
1
+ export { default } from "./component";
2
+ export * from "./types";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export { default } from "./component";
2
- export * from "./types";
1
+ export { default } from "./component";
2
+ export * from "./types";
@@ -1,41 +1,33 @@
1
- import { DropdownProps, SelectableItem } from "../dropdown";
2
- import { CheckBoxProps } from "../primitives";
3
- /** Single multiselect item that user can select */
4
- export declare type MultiselectItem = SelectableItem & {
5
- /** Is item selected */
6
- selected: boolean;
7
- };
8
- /** Props type of `Multiselect` */
9
- export declare type MultiselectProps = Omit<DropdownProps, "items" | "onSelect" | "value" | "deselectable" | "searchable"> & {
10
- /** Items which can be selected */
11
- items: Array<MultiselectItem>;
12
- /**
13
- * Handler of changing select state of item
14
- * @description `item.selected` will be set by component
15
- * @param item Item that triggered event
16
- * @param selected New select flag value
17
- */
18
- onChange: (item: MultiselectItem, selected: boolean) => void;
19
- /**
20
- * Handler of clear selection event.
21
- * When no handler specified - clear selection cannot be performed
22
- */
23
- onClear?: () => void;
24
- /**
25
- * Caption for label when some items are selected
26
- * @example selectionCaption: "selected: {0}"
27
- * @description Supports only 1 string parameter for number of selected items. Default is `{0} items selected`
28
- */
29
- selectionCaption?: string;
30
- /**
31
- * Text which would be displayed when search query applied and no items found
32
- */
33
- noDataByQuery?: string;
34
- /**
35
- * Is search through items enabled. Default is `true`
36
- */
37
- searchable?: boolean;
38
- /** Customization for checkbox */
39
- checkboxConfig?: Pick<CheckBoxProps, "block" | "className" | "data" | "fixBackgroundColor" | "hasBackgroundColor" | "style" | "withoutBorder" | "rounded">;
40
- };
1
+ import { DropdownProps, SelectableItem } from "../dropdown";
2
+ import { CheckBoxProps } from "../primitives";
3
+ /** Single multiselect item that user can select */
4
+ export type MultiselectItem = SelectableItem & {
5
+ /** Is item selected */
6
+ selected: boolean;
7
+ };
8
+ /** Props type of `Multiselect` */
9
+ export type MultiselectProps = Omit<DropdownProps, "items" | "onSelect" | "value" | "deselectable"> & {
10
+ /** Items which can be selected */
11
+ items: Array<MultiselectItem>;
12
+ /**
13
+ * Handler of changing select state of item
14
+ * @description `item.selected` will be set by component
15
+ * @param item Item that triggered event
16
+ * @param selected New select flag value
17
+ */
18
+ onChange: (item: MultiselectItem, selected: boolean) => void;
19
+ /**
20
+ * Handler of clear selection event.
21
+ * When no handler specified - clear selection cannot be performed
22
+ */
23
+ onClear?: () => void;
24
+ /**
25
+ * Caption for label when some items are selected
26
+ * @example selectionCaption: "selected: {0}"
27
+ * @description Supports only 1 string parameter for number of selected items. Default is `{0} items selected`
28
+ */
29
+ selectionCaption?: string;
30
+ /** Customization for checkbox */
31
+ checkboxConfig?: Pick<CheckBoxProps, "block" | "className" | "data" | "fixBackgroundColor" | "hasBackgroundColor" | "style" | "withoutBorder" | "rounded">;
32
+ };
41
33
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/multiselect/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,mDAAmD;AACnD,oBAAY,eAAe,GAAG,cAAc,GAAG;IAC3C,uBAAuB;IACvB,QAAQ,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,kCAAkC;AAClC,oBAAY,gBAAgB,GAAG,IAAI,CAC/B,aAAa,EACX,OAAO,GAAG,UAAU,GACpB,OAAO,GAAG,cAAc,GACxB,YAAY,CACjB,GAAG;IACA,kCAAkC;IAClC,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAE9B;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7D;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB;;OAEG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,iCAAiC;IACjC,cAAc,CAAC,EAAE,IAAI,CACjB,aAAa,EACX,OAAO,GAAG,WAAW,GAAG,MAAM,GAC9B,oBAAoB,GAAG,oBAAoB,GAC3C,OAAO,GAAG,eAAe,GACzB,SAAS,CACd,CAAC;CACL,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/multiselect/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,mDAAmD;AACnD,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG;IAC3C,uBAAuB;IACvB,QAAQ,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAC/B,aAAa,EACX,OAAO,GAAG,UAAU,GACpB,OAAO,GAAG,cAAc,CAC7B,GAAG;IACA,kCAAkC;IAClC,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAE9B;;;;;OAKG;IACH,QAAQ,EAAE,CAAC,IAAI,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAE7D;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,iCAAiC;IACjC,cAAc,CAAC,EAAE,IAAI,CACjB,aAAa,EACX,OAAO,GAAG,WAAW,GAAG,MAAM,GAC9B,oBAAoB,GAAG,oBAAoB,GAC3C,OAAO,GAAG,eAAe,GACzB,SAAS,CACd,CAAC;CACL,CAAC"}
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,9 +1,9 @@
1
- import { FC } from "react";
2
- import { PaginatorProps } from "../..";
3
- /**
4
- * Paginator component.
5
- * Used for visualization of paging configuration
6
- */
7
- declare const Paginator: FC<PaginatorProps>;
8
- export default Paginator;
1
+ import { FC } from "react";
2
+ import { PaginatorProps } from "../..";
3
+ /**
4
+ * Paginator component.
5
+ * Used for visualization of paging configuration
6
+ */
7
+ declare const Paginator: FC<PaginatorProps>;
8
+ export default Paginator;
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/paginator/component/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,EAAE,EAAE,MAAM,OAAO,CAAC;AAO7D,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC;;;EAGE;AACF,QAAA,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAqIjC,CAAA;AAED,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/paginator/component/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,EAAE,EAAE,MAAM,OAAO,CAAC;AAO7D,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC;;;EAGE;AACF,QAAA,MAAM,SAAS,EAAE,EAAE,CAAC,cAAc,CAyIjC,CAAC;AAEF,eAAe,SAAS,CAAC"}
@@ -1,70 +1,65 @@
1
- import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useCallback, useMemo } from "react";
3
- import { getClassName, isNullOrEmpty, isNullOrUndefined } from "@bodynarf/utils";
4
- import { mapDataAttributes } from "../../../utils";
5
- import { ElementPosition, ElementSize } from "../../../types";
6
- /**
7
- * Paginator component.
8
- * Used for visualization of paging configuration
9
- */
10
- const Paginator = ({ count, onPageChange, currentPage = 0, position = ElementPosition.Left, size = ElementSize.Normal, rounded = false, showNextButtons = false, nearPagesCount = 3, resources, className, title, data, }) => {
11
- const pageChange = useCallback((event) => {
12
- const target = event.target;
13
- const pageRaw = target.dataset["page"];
14
- if (isNullOrEmpty(pageRaw)) {
15
- return;
16
- }
17
- const page = +pageRaw;
18
- if (page !== currentPage && page > 0 && page <= count) {
19
- onPageChange(page);
20
- }
21
- }, [onPageChange, currentPage, count]);
22
- const pageNumbers = useMemo(() => generatePageNumbers(currentPage, count, nearPagesCount), [currentPage, count, nearPagesCount]);
23
- const canGoBack = useMemo(() => currentPage > 1, [currentPage]);
24
- const canGoForward = useMemo(() => currentPage < count, [currentPage, count]);
25
- if (pageNumbers.length <= 1) {
26
- return _jsx(_Fragment, {});
27
- }
28
- const classNames = getClassName([
29
- "bbr-paginator",
30
- "pagination",
31
- className,
32
- paginationPositionToClassMap.get(position),
33
- rounded ? "is-rounded" : "",
34
- size === ElementSize.Normal ? "" : `is-${size}`,
35
- ]);
36
- const dataAttributes = isNullOrUndefined(data)
37
- ? undefined
38
- : mapDataAttributes(data);
39
- return (_jsxs("nav", { role: "navigation", className: classNames, "aria-label": "pagination", title: title, ...dataAttributes, children: [showNextButtons &&
40
- _jsxs(_Fragment, { children: [_jsx("a", { onClick: pageChange, "data-page": currentPage - 1, title: canGoBack ? resources?.previousPageTitle : undefined, className: `pagination-previous${canGoBack ? "" : " is-disabled"}`, children: resources?.previousPageCaption ?? "Previous" }), _jsx("a", { onClick: pageChange, "data-page": currentPage + 1, title: canGoForward ? resources?.nextPageTitle : undefined, className: `pagination-next${canGoForward ? "" : " is-disabled"}`, children: resources?.nextPageCaption ?? "Next page" })] }), _jsxs("ul", { className: "pagination-list", children: [currentPage !== 1 && !pageNumbers.includes(1) &&
41
- _jsxs(_Fragment, { children: [_jsx("li", { children: _jsx("a", { "data-page": 1, onClick: pageChange, className: "pagination-link", title: resources?.openConcretePageTitleTemplate?.format(1), "aria-label": resources?.openConcretePageTitleTemplate?.format(1), children: "1" }) }), _jsx("li", { children: _jsx("span", { className: "pagination-ellipsis", children: "\u2026" }) })] }), pageNumbers.map(x => _jsx("li", { children: _jsx("a", { "data-page": x, onClick: pageChange, "aria-label": resources?.openConcretePageTitleTemplate?.format(x), className: `pagination-link${currentPage === x ? " is-current" : ""}`, title: currentPage === x ? undefined : resources?.openConcretePageTitleTemplate?.format(x), children: x }) }, x)), currentPage != count && !pageNumbers.includes(count) &&
42
- _jsxs(_Fragment, { children: [_jsx("li", { children: _jsx("span", { className: "pagination-ellipsis", children: "\u2026" }) }), _jsx("li", { children: _jsx("a", { "data-page": count, onClick: pageChange, className: "pagination-link", title: resources?.openConcretePageTitleTemplate?.format(count), "aria-label": resources?.openConcretePageTitleTemplate?.format(count), children: count }) })] })] })] }));
43
- };
44
- export default Paginator;
45
- /**
46
- * Position setting to css class name map
47
- */
48
- const paginationPositionToClassMap = new Map([
49
- [ElementPosition.Left, ""],
50
- [ElementPosition.Center, "is-centered"],
51
- [ElementPosition.Right, "is-right"]
52
- ]);
53
- /**
54
- * Get nearest numbers from each side (left & right)
55
- * @param page Number of current page
56
- * @param count Amount of pages
57
- * @param size Amount of pages from left & right to current page
58
- * @throws Current page is greater than pages amount
59
- * @returns Array of nearest numbers to current page
60
- */
61
- const generatePageNumbers = (page, count, size) => {
62
- if (page < 0 || count <= 0 || page > count) {
63
- return [];
64
- }
65
- return [
66
- ...new Array(size).fill(page).map((_, i) => page - i - 1).filter(x => x > 0 && x < page).reverse(),
67
- page,
68
- ...new Array(size).fill(page).map((_, i) => page + i + 1).filter(x => x > 0 && x > page && x <= count)
69
- ];
70
- };
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useMemo } from "react";
3
+ import { getClassName, isNullOrEmpty, isNullOrUndefined } from "@bodynarf/utils";
4
+ import { getPositionClassName, mapDataAttributes } from "../../../utils";
5
+ import { ElementPosition, ElementSize } from "../../../types";
6
+ /**
7
+ * Paginator component.
8
+ * Used for visualization of paging configuration
9
+ */
10
+ const Paginator = ({ count, onPageChange, currentPage = 0, position = ElementPosition.Left, size = ElementSize.Normal, rounded = false, showNextButtons = false, nearPagesCount = 3, resources, className, title, data, }) => {
11
+ if (currentPage > count) {
12
+ throw new Error(`Current page "${currentPage}" must be less than amount of pages "${count}"`);
13
+ }
14
+ const pageChange = useCallback((event) => {
15
+ const target = event.target;
16
+ const pageRaw = target.dataset["page"];
17
+ if (isNullOrEmpty(pageRaw)) {
18
+ return;
19
+ }
20
+ const page = +pageRaw;
21
+ if (page !== currentPage && page > 0 && page <= count) {
22
+ onPageChange(page);
23
+ }
24
+ }, [onPageChange, currentPage, count]);
25
+ const pageNumbers = useMemo(() => generatePageNumbers(currentPage, count, nearPagesCount), [currentPage, count, nearPagesCount]);
26
+ const canGoBack = useMemo(() => currentPage > 1, [currentPage]);
27
+ const canGoForward = useMemo(() => currentPage < count, [currentPage, count]);
28
+ if (pageNumbers.length <= 1) {
29
+ return null;
30
+ }
31
+ const classNames = getClassName([
32
+ "bbr-paginator",
33
+ "pagination",
34
+ className,
35
+ getPositionClassName(position),
36
+ rounded ? "is-rounded" : "",
37
+ size === ElementSize.Normal ? "" : `is-${size}`,
38
+ ]);
39
+ const dataAttributes = isNullOrUndefined(data)
40
+ ? undefined
41
+ : mapDataAttributes(data);
42
+ return (_jsxs("nav", { role: "navigation", className: classNames, "aria-label": "pagination", title: title, ...dataAttributes, children: [!!showNextButtons &&
43
+ _jsxs(_Fragment, { children: [_jsx("a", { onClick: pageChange, "data-page": currentPage - 1, title: canGoBack ? resources?.previousPageTitle : undefined, className: `pagination-previous${canGoBack ? "" : " is-disabled"}`, children: resources?.previousPageCaption ?? "Previous" }), _jsx("a", { onClick: pageChange, "data-page": currentPage + 1, title: canGoForward ? resources?.nextPageTitle : undefined, className: `pagination-next${canGoForward ? "" : " is-disabled"}`, children: resources?.nextPageCaption ?? "Next page" })] }), _jsxs("ul", { className: "pagination-list", children: [currentPage !== 1 && !pageNumbers.includes(1) &&
44
+ _jsxs(_Fragment, { children: [_jsx("li", { children: _jsx("a", { "data-page": 1, onClick: pageChange, className: "pagination-link", title: resources?.openConcretePageTitleTemplate?.format(1), "aria-label": resources?.openConcretePageTitleTemplate?.format(1), children: "1" }) }), _jsx("li", { children: _jsx("span", { className: "pagination-ellipsis", children: "\u2026" }) })] }), pageNumbers.map(x => _jsx("li", { children: _jsx("a", { "data-page": x, onClick: pageChange, "aria-label": resources?.openConcretePageTitleTemplate?.format(x), className: `pagination-link${currentPage === x ? " is-current" : ""}`, title: currentPage === x ? undefined : resources?.openConcretePageTitleTemplate?.format(x), children: x }) }, x)), currentPage != count && !pageNumbers.includes(count) &&
45
+ _jsxs(_Fragment, { children: [_jsx("li", { children: _jsx("span", { className: "pagination-ellipsis", children: "\u2026" }) }), _jsx("li", { children: _jsx("a", { "data-page": count, onClick: pageChange, className: "pagination-link", title: resources?.openConcretePageTitleTemplate?.format(count), "aria-label": resources?.openConcretePageTitleTemplate?.format(count), children: count }) })] })] })] }));
46
+ };
47
+ export default Paginator;
48
+ /**
49
+ * Get nearest numbers from each side (left & right)
50
+ * @param page Number of current page
51
+ * @param count Amount of pages
52
+ * @param size Amount of pages from left & right to current page
53
+ * @throws Current page is greater than pages amount
54
+ * @returns Array of nearest numbers to current page
55
+ */
56
+ const generatePageNumbers = (page, count, size) => {
57
+ if (page < 0 || count <= 0 || page > count) {
58
+ return [];
59
+ }
60
+ return [
61
+ ...new Array(size).fill(page).map((_, i) => page - i - 1).filter(x => x > 0 && x < page).reverse(),
62
+ page,
63
+ ...new Array(size).fill(page).map((_, i) => page + i + 1).filter(x => x > 0 && x > page && x <= count)
64
+ ];
65
+ };
@@ -1,3 +1,3 @@
1
- export { default } from "./component";
2
- export * from "./types";
1
+ export { default } from "./component";
2
+ export * from "./types";
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1,2 +1,2 @@
1
- export { default } from "./component";
2
- export * from "./types";
1
+ export { default } from "./component";
2
+ export * from "./types";
@@ -1,55 +1,55 @@
1
- import { BaseElementProps, ElementPosition, ElementSize } from "../../types";
2
- export interface PaginatorProps extends BaseElementProps {
3
- /** Amount of pages */
4
- count: number;
5
- /** Page change handler */
6
- onPageChange: (page: number) => void;
7
- /** Current page */
8
- currentPage?: number;
9
- /**
10
- * Page numbers position.
11
- * Useful with `showNextButtons = true`
12
- */
13
- position?: ElementPosition;
14
- /** Buttons should have rounded borders */
15
- rounded?: boolean;
16
- /** Size of paginator component elements */
17
- size?: ElementSize;
18
- /** Display "Previous" \ "Next" buttons */
19
- showNextButtons?: boolean;
20
- /**
21
- * Max amount of pages from left & right from current page. `3` by default
22
- * @description If set to 2 it will show `[1, 2], 3, [4, 5]`
23
- */
24
- nearPagesCount?: number;
25
- /** String resources for component */
26
- resources?: {
27
- /**
28
- * Previous page button caption
29
- * @default "Previous"
30
- */
31
- previousPageCaption?: string;
32
- /**
33
- * Previous page button title.
34
- * Visible only if set
35
- */
36
- previousPageTitle?: string;
37
- /**
38
- * Next page button caption
39
- * @default "Next page"
40
- */
41
- nextPageCaption?: string;
42
- /**
43
- * Next page button title.
44
- * Visible only if set
45
- */
46
- nextPageTitle?: string;
47
- /**
48
- * Title for button for opening concrete page by its number.
49
- * Must be template with 1 parameter.
50
- * @example openConcretePageTitleTemplate="Open {0} page"
51
- */
52
- openConcretePageTitleTemplate?: string;
53
- };
54
- }
1
+ import { BaseElementProps, ElementPosition, ElementSize } from "../../types";
2
+ export type PaginatorProps = BaseElementProps & {
3
+ /** Amount of pages */
4
+ count: number;
5
+ /** Page change handler */
6
+ onPageChange: (page: number) => void;
7
+ /** Current page */
8
+ currentPage: number;
9
+ /**
10
+ * Page numbers position.
11
+ * Useful with `showNextButtons = true`
12
+ */
13
+ position?: ElementPosition;
14
+ /** Buttons should have rounded borders */
15
+ rounded?: boolean;
16
+ /** Size of paginator component elements */
17
+ size?: ElementSize;
18
+ /** Display "Previous" \ "Next" buttons */
19
+ showNextButtons?: boolean;
20
+ /**
21
+ * Max amount of pages from left & right from current page. `3` by default
22
+ * @description If set to 2 it will show `[1, 2], 3, [4, 5]`
23
+ */
24
+ nearPagesCount?: number;
25
+ /** String resources for component */
26
+ resources?: {
27
+ /**
28
+ * Previous page button caption
29
+ * @default "Previous"
30
+ */
31
+ previousPageCaption?: string;
32
+ /**
33
+ * Previous page button title.
34
+ * Visible only if set
35
+ */
36
+ previousPageTitle?: string;
37
+ /**
38
+ * Next page button caption
39
+ * @default "Next page"
40
+ */
41
+ nextPageCaption?: string;
42
+ /**
43
+ * Next page button title.
44
+ * Visible only if set
45
+ */
46
+ nextPageTitle?: string;
47
+ /**
48
+ * Title for button for opening concrete page by its number.
49
+ * Must be template with 1 parameter.
50
+ * @example openConcretePageTitleTemplate="Open {0} page"
51
+ */
52
+ openConcretePageTitleTemplate?: string;
53
+ };
54
+ };
55
55
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/paginator/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACpD,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IAEd,0BAA0B;IAC1B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC,mBAAmB;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;MAGE;IACF,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;MAGE;IACF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,qCAAqC;IACrC,SAAS,CAAC,EAAE;QACR;;;WAGG;QACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAE7B;;;WAGG;QACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;QAE1B;;;WAGG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QAEzB;;;WAGG;QACH,aAAa,CAAC,EAAE,MAAM,CAAA;QAEtB;;;;WAIG;QACH,6BAA6B,CAAC,EAAE,MAAM,CAAC;KAC1C,CAAC;CACL"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/paginator/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE5E,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG;IAC5C,sBAAsB;IACtB,KAAK,EAAE,MAAM,CAAC;IAEd,0BAA0B;IAC1B,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAErC,mBAAmB;IACnB,WAAW,EAAE,MAAM,CAAC;IAEpB;;;MAGE;IACF,QAAQ,CAAC,EAAE,eAAe,CAAC;IAE3B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB,2CAA2C;IAC3C,IAAI,CAAC,EAAE,WAAW,CAAC;IAEnB,0CAA0C;IAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;MAGE;IACF,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,qCAAqC;IACrC,SAAS,CAAC,EAAE;QACR;;;WAGG;QACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAE7B;;;WAGG;QACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAE3B;;;WAGG;QACH,eAAe,CAAC,EAAE,MAAM,CAAC;QAEzB;;;WAGG;QACH,aAAa,CAAC,EAAE,MAAM,CAAC;QAEvB;;;;WAIG;QACH,6BAA6B,CAAC,EAAE,MAAM,CAAC;KAC1C,CAAC;CACL,CAAC"}
@@ -1 +1 @@
1
- export {};
1
+ export {};
@@ -1,7 +1,7 @@
1
- /// <reference types="react" />
2
- import "./style.scss";
3
- import { CheckBoxProps } from "../..";
4
- /** Boolean input component */
5
- declare const CheckBox: ({ onValueChange, defaultValue, label, name, size, style, disabled, rounded, block, withoutBorder, hasBackgroundColor, fixBackgroundColor, isFormLabel, className, data, title }: CheckBoxProps) => JSX.Element;
6
- export default CheckBox;
1
+ import { FC } from "react";
2
+ import "./style.scss";
3
+ import { CheckBoxProps } from "../..";
4
+ /** Boolean input component */
5
+ declare const CheckBox: FC<CheckBoxProps>;
6
+ export default CheckBox;
7
7
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/primitives/checkbox/component/index.tsx"],"names":[],"mappings":";AAQA,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,8BAA8B;AAC9B,QAAA,MAAM,QAAQ,oLAWX,aAAa,KAAG,WA4FlB,CAAC;AAEF,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/primitives/checkbox/component/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,EAAE,EAAe,MAAM,OAAO,CAAC;AAQrD,OAAO,cAAc,CAAC;AAEtB,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAEtC,8BAA8B;AAC9B,QAAA,MAAM,QAAQ,EAAE,EAAE,CAAC,aAAa,CAuG/B,CAAC;AAEF,eAAe,QAAQ,CAAC"}