@astral/ui 4.4.1 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/components/DataGrid/Head/Head.js +5 -4
  2. package/components/DataGrid/HeadCell/styles.js +5 -0
  3. package/components/DataGrid/types.d.ts +4 -0
  4. package/components/DataGridColumnHintIcon/DataGridColumnHintIcon.d.ts +4 -0
  5. package/components/DataGridColumnHintIcon/DataGridColumnHintIcon.js +6 -0
  6. package/components/DataGridColumnHintIcon/index.d.ts +1 -0
  7. package/components/DataGridColumnHintIcon/index.js +1 -0
  8. package/components/HintIcon/HintIcon.d.ts +2 -35
  9. package/components/HintIcon/HintIcon.js +2 -2
  10. package/components/HintIcon/Icon/Icon.d.ts +4 -5
  11. package/components/HintIcon/Icon/Icon.js +2 -1
  12. package/components/HintIcon/Icon/useLogic/hooks/useIconColor/useIconColor.d.ts +3 -1
  13. package/components/HintIcon/Icon/useLogic/hooks/useIconColor/useIconColor.js +4 -1
  14. package/components/HintIcon/Icon/useLogic/useLogic.d.ts +3 -3
  15. package/components/HintIcon/Icon/useLogic/useLogic.js +5 -2
  16. package/components/HintIcon/constants.d.ts +3 -0
  17. package/components/HintIcon/constants.js +4 -0
  18. package/components/HintIcon/index.d.ts +2 -0
  19. package/components/HintIcon/index.js +1 -0
  20. package/components/HintIcon/styles.d.ts +0 -6
  21. package/components/HintIcon/styles.js +0 -7
  22. package/components/HintIcon/types.d.ts +38 -0
  23. package/components/HintIcon/useLogic/useLogic.d.ts +3 -2
  24. package/components/HintIcon/useLogic/useLogic.js +4 -2
  25. package/components/Tree/MultipleTreeList/MultipleTreeList.d.ts +2 -2
  26. package/components/Tree/MultipleTreeList/MultipleTreeList.js +1 -1
  27. package/components/Tree/MultipleTreeList/TreeItem/TreeItem.d.ts +10 -6
  28. package/components/Tree/MultipleTreeList/TreeItem/TreeItem.js +3 -2
  29. package/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.d.ts +3 -2
  30. package/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.js +24 -18
  31. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsIndeterminate/checkIsIndeterminate.d.ts +2 -1
  32. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsIndeterminate/checkIsIndeterminate.js +2 -1
  33. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.d.ts +2 -1
  34. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.js +2 -1
  35. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.d.ts +5 -0
  36. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.js +22 -0
  37. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/index.d.ts +1 -0
  38. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/index.js +1 -0
  39. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.d.ts +5 -0
  40. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.js +6 -0
  41. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/index.d.ts +1 -0
  42. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/index.js +1 -0
  43. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/getItemsToAdd.d.ts +5 -0
  44. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/getItemsToAdd.js +14 -0
  45. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/index.d.ts +1 -0
  46. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/index.js +1 -0
  47. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/index.d.ts +3 -0
  48. package/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/index.js +3 -0
  49. package/components/Tree/MultipleTreeList/types.d.ts +8 -4
  50. package/components/TreeAsyncAutocomplete/types.d.ts +14 -2
  51. package/components/TreeLikeAsyncAutocomplete/Input/Input.d.ts +3 -0
  52. package/components/TreeLikeAsyncAutocomplete/Input/Input.js +20 -0
  53. package/components/TreeLikeAsyncAutocomplete/Input/constants.d.ts +1 -0
  54. package/components/TreeLikeAsyncAutocomplete/Input/constants.js +1 -0
  55. package/components/TreeLikeAsyncAutocomplete/Input/index.d.ts +1 -0
  56. package/components/TreeLikeAsyncAutocomplete/Input/index.js +1 -0
  57. package/components/TreeLikeAsyncAutocomplete/Input/styles.d.ts +11 -0
  58. package/components/TreeLikeAsyncAutocomplete/Input/styles.js +27 -0
  59. package/components/TreeLikeAsyncAutocomplete/Input/types.d.ts +7 -0
  60. package/components/TreeLikeAsyncAutocomplete/Input/types.js +1 -0
  61. package/components/TreeLikeAsyncAutocomplete/Input/useLogic/index.d.ts +1 -0
  62. package/components/TreeLikeAsyncAutocomplete/Input/useLogic/index.js +1 -0
  63. package/components/TreeLikeAsyncAutocomplete/Input/useLogic/useLogic.d.ts +18 -0
  64. package/components/TreeLikeAsyncAutocomplete/Input/useLogic/useLogic.js +50 -0
  65. package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/ErrorMessage.d.ts +13 -0
  66. package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/ErrorMessage.js +6 -0
  67. package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/index.d.ts +1 -0
  68. package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/index.js +1 -0
  69. package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/styles.d.ts +5 -0
  70. package/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/styles.js +10 -0
  71. package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/Loader.d.ts +2 -0
  72. package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/Loader.js +4 -0
  73. package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/index.d.ts +1 -0
  74. package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/index.js +1 -0
  75. package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/styles.d.ts +5 -0
  76. package/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/styles.js +8 -0
  77. package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/NoData.d.ts +2 -0
  78. package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/NoData.js +6 -0
  79. package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/index.d.ts +1 -0
  80. package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/index.js +1 -0
  81. package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/styles.d.ts +5 -0
  82. package/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/styles.js +8 -0
  83. package/components/TreeLikeAsyncAutocomplete/OptionsModal/OptionsModal.d.ts +3 -0
  84. package/components/TreeLikeAsyncAutocomplete/OptionsModal/OptionsModal.js +33 -0
  85. package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/SearchSuggestion.d.ts +2 -0
  86. package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/SearchSuggestion.js +6 -0
  87. package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/index.d.ts +1 -0
  88. package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/index.js +1 -0
  89. package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/styles.d.ts +5 -0
  90. package/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/styles.js +8 -0
  91. package/components/TreeLikeAsyncAutocomplete/OptionsModal/constants.d.ts +1 -0
  92. package/components/TreeLikeAsyncAutocomplete/OptionsModal/constants.js +1 -0
  93. package/components/TreeLikeAsyncAutocomplete/OptionsModal/index.d.ts +1 -0
  94. package/components/TreeLikeAsyncAutocomplete/OptionsModal/index.js +1 -0
  95. package/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.d.ts +19 -0
  96. package/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.js +48 -0
  97. package/components/TreeLikeAsyncAutocomplete/OptionsModal/types.d.ts +69 -0
  98. package/components/TreeLikeAsyncAutocomplete/OptionsModal/types.js +1 -0
  99. package/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/index.d.ts +1 -0
  100. package/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/index.js +1 -0
  101. package/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.d.ts +27 -0
  102. package/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.js +92 -0
  103. package/components/TreeLikeAsyncAutocomplete/TreeLikeAsyncAutocomplete.d.ts +3 -0
  104. package/components/TreeLikeAsyncAutocomplete/TreeLikeAsyncAutocomplete.js +9 -0
  105. package/components/TreeLikeAsyncAutocomplete/constants.d.ts +2 -0
  106. package/components/TreeLikeAsyncAutocomplete/constants.js +2 -0
  107. package/components/TreeLikeAsyncAutocomplete/index.d.ts +2 -0
  108. package/components/TreeLikeAsyncAutocomplete/index.js +1 -0
  109. package/components/TreeLikeAsyncAutocomplete/types.d.ts +69 -0
  110. package/components/TreeLikeAsyncAutocomplete/types.js +1 -0
  111. package/components/TreeLikeAsyncAutocomplete/useLogic/index.d.ts +1 -0
  112. package/components/TreeLikeAsyncAutocomplete/useLogic/index.js +1 -0
  113. package/components/TreeLikeAsyncAutocomplete/useLogic/useLogic.d.ts +626 -0
  114. package/components/TreeLikeAsyncAutocomplete/useLogic/useLogic.js +82 -0
  115. package/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/deepMultipleFind.d.ts +3 -0
  116. package/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/deepMultipleFind.js +12 -0
  117. package/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/index.d.ts +1 -0
  118. package/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/index.js +1 -0
  119. package/components/TreeLikeAsyncAutocomplete/useLogic/utils/index.d.ts +1 -0
  120. package/components/TreeLikeAsyncAutocomplete/useLogic/utils/index.js +1 -0
  121. package/components/TreeLikeList/TreeItem/TreeItem.d.ts +3 -51
  122. package/components/TreeLikeList/TreeItem/TreeItem.js +3 -2
  123. package/components/TreeLikeList/TreeItem/types.d.ts +56 -0
  124. package/components/TreeLikeList/TreeItem/types.js +1 -0
  125. package/components/TreeLikeList/TreeItem/useLogic/useLogic.d.ts +4 -3
  126. package/components/TreeLikeList/TreeItem/useLogic/useLogic.js +22 -13
  127. package/components/TreeLikeList/TreeItem/useLogic/utils/addItem/addItem.d.ts +6 -0
  128. package/components/TreeLikeList/TreeItem/useLogic/utils/addItem/addItem.js +8 -0
  129. package/components/TreeLikeList/TreeItem/useLogic/utils/addItem/index.d.ts +1 -0
  130. package/components/TreeLikeList/TreeItem/useLogic/utils/addItem/index.js +1 -0
  131. package/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/addItemsByIds.d.ts +6 -0
  132. package/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/addItemsByIds.js +15 -0
  133. package/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/index.d.ts +1 -0
  134. package/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/index.js +1 -0
  135. package/components/TreeLikeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.d.ts +2 -1
  136. package/components/TreeLikeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.js +2 -1
  137. package/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.d.ts +5 -0
  138. package/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.js +22 -0
  139. package/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/index.d.ts +1 -0
  140. package/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/index.js +1 -0
  141. package/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/getCurrentValueIds.d.ts +5 -0
  142. package/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/getCurrentValueIds.js +10 -0
  143. package/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/index.d.ts +1 -0
  144. package/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/index.js +1 -0
  145. package/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.d.ts +5 -0
  146. package/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.js +6 -0
  147. package/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/index.d.ts +1 -0
  148. package/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/index.js +1 -0
  149. package/components/TreeLikeList/TreeItem/useLogic/utils/index.d.ts +7 -0
  150. package/components/TreeLikeList/TreeItem/useLogic/utils/index.js +7 -0
  151. package/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/index.d.ts +1 -0
  152. package/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/index.js +1 -0
  153. package/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/removeItem.d.ts +5 -0
  154. package/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/removeItem.js +10 -0
  155. package/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/index.d.ts +1 -0
  156. package/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/index.js +1 -0
  157. package/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/removeItemsByIds.d.ts +5 -0
  158. package/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/removeItemsByIds.js +11 -0
  159. package/components/TreeLikeList/TreeLikeList.d.ts +2 -3
  160. package/components/TreeLikeList/TreeLikeList.js +1 -1
  161. package/components/TreeLikeList/index.d.ts +1 -0
  162. package/components/TreeLikeList/types.d.ts +8 -4
  163. package/components/TreeLikeList/useLogic/useLogic.d.ts +3 -3
  164. package/components/TreeLikeList/useLogic/useLogic.js +3 -2
  165. package/components/TreeLikeList/useLogic/utils/getChainsId/getChainsId.js +17 -10
  166. package/components/index.d.ts +1 -0
  167. package/components/index.js +1 -0
  168. package/hook-form/FormTreeLikeAsyncAutocomplete/FormTreeLikeAsyncAutocomplete.d.ts +13 -0
  169. package/hook-form/FormTreeLikeAsyncAutocomplete/FormTreeLikeAsyncAutocomplete.js +13 -0
  170. package/hook-form/FormTreeLikeAsyncAutocomplete/index.d.ts +0 -0
  171. package/hook-form/FormTreeLikeAsyncAutocomplete/index.js +1 -0
  172. package/node/components/DataGrid/Head/Head.js +4 -3
  173. package/node/components/DataGrid/HeadCell/styles.js +5 -0
  174. package/node/components/DataGrid/types.d.ts +4 -0
  175. package/node/components/DataGridColumnHintIcon/DataGridColumnHintIcon.d.ts +4 -0
  176. package/node/components/DataGridColumnHintIcon/DataGridColumnHintIcon.js +10 -0
  177. package/node/components/DataGridColumnHintIcon/index.d.ts +1 -0
  178. package/node/components/DataGridColumnHintIcon/index.js +17 -0
  179. package/node/components/HintIcon/HintIcon.d.ts +2 -35
  180. package/node/components/HintIcon/HintIcon.js +2 -2
  181. package/node/components/HintIcon/Icon/Icon.d.ts +4 -5
  182. package/node/components/HintIcon/Icon/Icon.js +2 -1
  183. package/node/components/HintIcon/Icon/useLogic/hooks/useIconColor/useIconColor.d.ts +3 -1
  184. package/node/components/HintIcon/Icon/useLogic/hooks/useIconColor/useIconColor.js +4 -1
  185. package/node/components/HintIcon/Icon/useLogic/useLogic.d.ts +3 -3
  186. package/node/components/HintIcon/Icon/useLogic/useLogic.js +5 -2
  187. package/node/components/HintIcon/constants.d.ts +3 -0
  188. package/node/components/HintIcon/constants.js +5 -1
  189. package/node/components/HintIcon/index.d.ts +2 -0
  190. package/node/components/HintIcon/index.js +3 -0
  191. package/node/components/HintIcon/styles.d.ts +0 -6
  192. package/node/components/HintIcon/styles.js +1 -8
  193. package/node/components/HintIcon/types.d.ts +38 -0
  194. package/node/components/HintIcon/useLogic/useLogic.d.ts +3 -2
  195. package/node/components/HintIcon/useLogic/useLogic.js +4 -2
  196. package/node/components/Tree/MultipleTreeList/MultipleTreeList.d.ts +2 -2
  197. package/node/components/Tree/MultipleTreeList/MultipleTreeList.js +1 -1
  198. package/node/components/Tree/MultipleTreeList/TreeItem/TreeItem.d.ts +10 -6
  199. package/node/components/Tree/MultipleTreeList/TreeItem/TreeItem.js +3 -2
  200. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.d.ts +3 -2
  201. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/useLogic.js +23 -17
  202. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsIndeterminate/checkIsIndeterminate.d.ts +2 -1
  203. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsIndeterminate/checkIsIndeterminate.js +2 -1
  204. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.d.ts +2 -1
  205. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.js +2 -1
  206. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.d.ts +5 -0
  207. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.js +26 -0
  208. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/index.d.ts +1 -0
  209. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/findObjectsByIds/index.js +17 -0
  210. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.d.ts +5 -0
  211. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.js +10 -0
  212. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/index.d.ts +1 -0
  213. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getIdFromValue/index.js +17 -0
  214. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/getItemsToAdd.d.ts +5 -0
  215. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/getItemsToAdd.js +18 -0
  216. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/index.d.ts +1 -0
  217. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/getItemsToAdd/index.js +17 -0
  218. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/index.d.ts +3 -0
  219. package/node/components/Tree/MultipleTreeList/TreeItem/useLogic/utils/index.js +7 -1
  220. package/node/components/Tree/MultipleTreeList/types.d.ts +8 -4
  221. package/node/components/TreeAsyncAutocomplete/types.d.ts +14 -2
  222. package/node/components/TreeLikeAsyncAutocomplete/Input/Input.d.ts +3 -0
  223. package/node/components/TreeLikeAsyncAutocomplete/Input/Input.js +23 -0
  224. package/node/components/TreeLikeAsyncAutocomplete/Input/constants.d.ts +1 -0
  225. package/node/components/TreeLikeAsyncAutocomplete/Input/constants.js +4 -0
  226. package/node/components/TreeLikeAsyncAutocomplete/Input/index.d.ts +1 -0
  227. package/node/components/TreeLikeAsyncAutocomplete/Input/index.js +17 -0
  228. package/node/components/TreeLikeAsyncAutocomplete/Input/styles.d.ts +11 -0
  229. package/node/components/TreeLikeAsyncAutocomplete/Input/styles.js +30 -0
  230. package/node/components/TreeLikeAsyncAutocomplete/Input/types.d.ts +7 -0
  231. package/node/components/TreeLikeAsyncAutocomplete/Input/types.js +2 -0
  232. package/node/components/TreeLikeAsyncAutocomplete/Input/useLogic/index.d.ts +1 -0
  233. package/node/components/TreeLikeAsyncAutocomplete/Input/useLogic/index.js +17 -0
  234. package/node/components/TreeLikeAsyncAutocomplete/Input/useLogic/useLogic.d.ts +18 -0
  235. package/node/components/TreeLikeAsyncAutocomplete/Input/useLogic/useLogic.js +54 -0
  236. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/ErrorMessage.d.ts +13 -0
  237. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/ErrorMessage.js +10 -0
  238. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/index.d.ts +1 -0
  239. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/index.js +17 -0
  240. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/styles.d.ts +5 -0
  241. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/ErrorMessage/styles.js +13 -0
  242. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/Loader.d.ts +2 -0
  243. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/Loader.js +8 -0
  244. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/index.d.ts +1 -0
  245. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/index.js +17 -0
  246. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/styles.d.ts +5 -0
  247. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/Loader/styles.js +11 -0
  248. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/NoData.d.ts +2 -0
  249. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/NoData.js +10 -0
  250. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/index.d.ts +1 -0
  251. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/index.js +17 -0
  252. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/styles.d.ts +5 -0
  253. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/NoData/styles.js +11 -0
  254. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/OptionsModal.d.ts +3 -0
  255. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/OptionsModal.js +37 -0
  256. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/SearchSuggestion.d.ts +2 -0
  257. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/SearchSuggestion.js +10 -0
  258. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/index.d.ts +1 -0
  259. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/index.js +17 -0
  260. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/styles.d.ts +5 -0
  261. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/SearchSuggestion/styles.js +11 -0
  262. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/constants.d.ts +1 -0
  263. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/constants.js +4 -0
  264. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/index.d.ts +1 -0
  265. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/index.js +17 -0
  266. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.d.ts +19 -0
  267. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/styles.js +51 -0
  268. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/types.d.ts +69 -0
  269. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/types.js +2 -0
  270. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/index.d.ts +1 -0
  271. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/index.js +17 -0
  272. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.d.ts +27 -0
  273. package/node/components/TreeLikeAsyncAutocomplete/OptionsModal/useLogic/useLogic.js +96 -0
  274. package/node/components/TreeLikeAsyncAutocomplete/TreeLikeAsyncAutocomplete.d.ts +3 -0
  275. package/node/components/TreeLikeAsyncAutocomplete/TreeLikeAsyncAutocomplete.js +12 -0
  276. package/node/components/TreeLikeAsyncAutocomplete/constants.d.ts +2 -0
  277. package/node/components/TreeLikeAsyncAutocomplete/constants.js +5 -0
  278. package/node/components/TreeLikeAsyncAutocomplete/index.d.ts +2 -0
  279. package/node/components/TreeLikeAsyncAutocomplete/index.js +17 -0
  280. package/node/components/TreeLikeAsyncAutocomplete/types.d.ts +69 -0
  281. package/node/components/TreeLikeAsyncAutocomplete/types.js +2 -0
  282. package/node/components/TreeLikeAsyncAutocomplete/useLogic/index.d.ts +1 -0
  283. package/node/components/TreeLikeAsyncAutocomplete/useLogic/index.js +17 -0
  284. package/node/components/TreeLikeAsyncAutocomplete/useLogic/useLogic.d.ts +626 -0
  285. package/node/components/TreeLikeAsyncAutocomplete/useLogic/useLogic.js +86 -0
  286. package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/deepMultipleFind.d.ts +3 -0
  287. package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/deepMultipleFind.js +16 -0
  288. package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/index.d.ts +1 -0
  289. package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/deepMultipleFind/index.js +17 -0
  290. package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/index.d.ts +1 -0
  291. package/node/components/TreeLikeAsyncAutocomplete/useLogic/utils/index.js +5 -0
  292. package/node/components/TreeLikeList/TreeItem/TreeItem.d.ts +3 -51
  293. package/node/components/TreeLikeList/TreeItem/TreeItem.js +3 -2
  294. package/node/components/TreeLikeList/TreeItem/types.d.ts +56 -0
  295. package/node/components/TreeLikeList/TreeItem/types.js +2 -0
  296. package/node/components/TreeLikeList/TreeItem/useLogic/useLogic.d.ts +4 -3
  297. package/node/components/TreeLikeList/TreeItem/useLogic/useLogic.js +21 -12
  298. package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItem/addItem.d.ts +6 -0
  299. package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItem/addItem.js +12 -0
  300. package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItem/index.d.ts +1 -0
  301. package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItem/index.js +5 -0
  302. package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/addItemsByIds.d.ts +6 -0
  303. package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/addItemsByIds.js +19 -0
  304. package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/index.d.ts +1 -0
  305. package/node/components/TreeLikeList/TreeItem/useLogic/utils/addItemsByIds/index.js +5 -0
  306. package/node/components/TreeLikeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.d.ts +2 -1
  307. package/node/components/TreeLikeList/TreeItem/useLogic/utils/checkIsSelected/checkIsSelected.js +2 -1
  308. package/node/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.d.ts +5 -0
  309. package/node/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/findObjectsByIds.js +26 -0
  310. package/node/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/index.d.ts +1 -0
  311. package/node/components/TreeLikeList/TreeItem/useLogic/utils/findObjectsByIds/index.js +5 -0
  312. package/node/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/getCurrentValueIds.d.ts +5 -0
  313. package/node/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/getCurrentValueIds.js +14 -0
  314. package/node/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/index.d.ts +1 -0
  315. package/node/components/TreeLikeList/TreeItem/useLogic/utils/getCurrentValueIds/index.js +5 -0
  316. package/node/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.d.ts +5 -0
  317. package/node/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/getIdFromValue.js +10 -0
  318. package/node/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/index.d.ts +1 -0
  319. package/node/components/TreeLikeList/TreeItem/useLogic/utils/getIdFromValue/index.js +17 -0
  320. package/node/components/TreeLikeList/TreeItem/useLogic/utils/index.d.ts +7 -0
  321. package/node/components/TreeLikeList/TreeItem/useLogic/utils/index.js +15 -1
  322. package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/index.d.ts +1 -0
  323. package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/index.js +5 -0
  324. package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/removeItem.d.ts +5 -0
  325. package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItem/removeItem.js +14 -0
  326. package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/index.d.ts +1 -0
  327. package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/index.js +5 -0
  328. package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/removeItemsByIds.d.ts +5 -0
  329. package/node/components/TreeLikeList/TreeItem/useLogic/utils/removeItemsByIds/removeItemsByIds.js +15 -0
  330. package/node/components/TreeLikeList/TreeLikeList.d.ts +2 -3
  331. package/node/components/TreeLikeList/TreeLikeList.js +1 -1
  332. package/node/components/TreeLikeList/index.d.ts +1 -0
  333. package/node/components/TreeLikeList/types.d.ts +8 -4
  334. package/node/components/TreeLikeList/useLogic/useLogic.d.ts +3 -3
  335. package/node/components/TreeLikeList/useLogic/useLogic.js +3 -2
  336. package/node/components/TreeLikeList/useLogic/utils/getChainsId/getChainsId.js +17 -10
  337. package/node/components/index.d.ts +1 -0
  338. package/node/components/index.js +4 -2
  339. package/node/hook-form/FormTreeLikeAsyncAutocomplete/FormTreeLikeAsyncAutocomplete.d.ts +13 -0
  340. package/node/hook-form/FormTreeLikeAsyncAutocomplete/FormTreeLikeAsyncAutocomplete.js +17 -0
  341. package/node/hook-form/FormTreeLikeAsyncAutocomplete/index.d.ts +0 -0
  342. package/node/hook-form/FormTreeLikeAsyncAutocomplete/index.js +1 -0
  343. package/package.json +15 -1
@@ -0,0 +1,82 @@
1
+ import { useEffect, useState, } from 'react';
2
+ import { useAsyncOptions } from '../../hooks';
3
+ import { DEFAULT_DELAY_MS, DEFAULT_MIN_SEARCH_CHARACTERS } from '../constants';
4
+ export const useLogic = ({ onBlur, isError, value, isDisabled, fetchDelayMs = DEFAULT_DELAY_MS, fetchOptions, minSymbolsToFetch = DEFAULT_MIN_SEARCH_CHARACTERS, onDataLoadError, onChange, loadingErrorMsg, treeProps, dialogProps, onShowUserHint, ...restInputProps }) => {
5
+ const [isOpen, setOpen] = useState(false);
6
+ const [isLoadingModal, setIsLoadingModal] = useState(false);
7
+ const { options, isLoadingData, isLoadingError, onInputChange: propsOnInputChange, onOpen: propsOnOpen, onRetry: propsOnRetry, meta, } = useAsyncOptions({
8
+ fetchOptions,
9
+ fetchDelayMs,
10
+ minSymbolsToFetch,
11
+ onDataLoadError,
12
+ });
13
+ useEffect(() => {
14
+ if (!isLoadingData) {
15
+ setIsLoadingModal(false);
16
+ }
17
+ }, [isLoadingData]);
18
+ const onInputBlur = (event) => {
19
+ // Если произошла потеря фокуса, но открылась окно поиска элемента, то не вызываем onBlur, так как произойдет преждевременная валидация
20
+ if (!isOpen) {
21
+ onBlur?.(event);
22
+ }
23
+ };
24
+ const onOpen = () => {
25
+ if (minSymbolsToFetch === 0) {
26
+ setIsLoadingModal(true);
27
+ }
28
+ propsOnOpen('', undefined, true);
29
+ setOpen(true);
30
+ };
31
+ const onKeyDown = (event) => {
32
+ if (event.code === 'Enter') {
33
+ setOpen(true);
34
+ }
35
+ };
36
+ const onClose = (event) => {
37
+ onBlur?.(event);
38
+ setOpen(false);
39
+ };
40
+ const onRetry = (search = '') => {
41
+ setIsLoadingModal(true);
42
+ propsOnRetry(search);
43
+ };
44
+ const onInputChange = (search) => {
45
+ if (isLoadingError) {
46
+ setIsLoadingModal(true);
47
+ }
48
+ propsOnInputChange(search, 'input');
49
+ };
50
+ return {
51
+ inputProps: {
52
+ onBlur: onInputBlur,
53
+ onClick: onOpen,
54
+ onKeyDown,
55
+ error: isError,
56
+ disabled: isDisabled,
57
+ value,
58
+ onChange,
59
+ ...restInputProps,
60
+ },
61
+ optionsModalProps: {
62
+ isOpen,
63
+ initialValue: value,
64
+ meta,
65
+ isLoading: isLoadingData,
66
+ isLoadingError,
67
+ loadingErrorMsg,
68
+ treeProps,
69
+ dialogProps: {
70
+ ...dialogProps,
71
+ onClose,
72
+ },
73
+ options,
74
+ onRetry,
75
+ onChange,
76
+ onInputChange,
77
+ isLoadingModal,
78
+ onShowUserHint,
79
+ minSymbolsToFetch,
80
+ },
81
+ };
82
+ };
@@ -0,0 +1,3 @@
1
+ import type { TreeAsyncAutocompleteValue } from '../../../../TreeAsyncAutocomplete';
2
+ import type { TreeLikeAsyncAutocompleteValue } from '../../../types';
3
+ export declare const deepMultipleFind: (tree: TreeLikeAsyncAutocompleteValue, callback: (item: TreeAsyncAutocompleteValue) => boolean) => TreeLikeAsyncAutocompleteValue;
@@ -0,0 +1,12 @@
1
+ export const deepMultipleFind = (tree, callback) => {
2
+ const result = [];
3
+ for (const item of tree) {
4
+ if (callback(item)) {
5
+ result.push(item);
6
+ }
7
+ if (item.children) {
8
+ result.push(...deepMultipleFind(item.children, callback));
9
+ }
10
+ }
11
+ return result;
12
+ };
@@ -0,0 +1 @@
1
+ export * from './deepMultipleFind';
@@ -0,0 +1 @@
1
+ export * from './deepMultipleFind';
@@ -0,0 +1 @@
1
+ export { deepMultipleFind } from './deepMultipleFind';
@@ -0,0 +1 @@
1
+ export { deepMultipleFind } from './deepMultipleFind';
@@ -1,52 +1,4 @@
1
- import { type FunctionComponent } from 'react';
2
- import type { TreeListData } from '../../Tree';
1
+ /// <reference types="react" />
3
2
  import type { MultipleValue } from '../types';
4
- type FormatDisableItem = {
5
- id: string;
6
- disabledReason?: string;
7
- };
8
- export type TreeItemProps = TreeListData & {
9
- /**
10
- * Выбранные значения
11
- */
12
- value?: MultipleValue;
13
- /**
14
- * Уникальный префикс для идентификаторов в рамках дерева
15
- */
16
- prefixId?: string;
17
- /**
18
- * Render-props, позволяет более гибко настраивать содержимое item
19
- */
20
- renderItem?: FunctionComponent<Omit<TreeListData, 'children'>>;
21
- /**
22
- * Уровень вложенности в дереве
23
- */
24
- level: number;
25
- /**
26
- * Если true, при выборе родителя будет возможность выбора дочерних элементов
27
- */
28
- isConfirmChildrenSelection?: boolean;
29
- /**
30
- * Если true, то дерево будет раскрыто по умолчанию
31
- * @default false
32
- */
33
- isInitialExpanded?: boolean;
34
- /**
35
- * Уровень раскрытия дерева по умолчанию, при isExpanded=true
36
- */
37
- expandedLevel: number;
38
- /**
39
- * Цепочки идентификаторов до выбранных элементов дерева
40
- */
41
- chainsToSelectedItem?: MultipleValue[];
42
- /**
43
- * Список `value` элементов дерева, которые не доступны для взаимодействия
44
- */
45
- disabledItems?: FormatDisableItem[];
46
- /**
47
- * Функция, которая запускается при выборе item
48
- */
49
- onChange: (value: MultipleValue) => void;
50
- };
51
- export declare const TreeItem: (props: TreeItemProps) => JSX.Element;
52
- export {};
3
+ import type { TreeItemProps } from './types';
4
+ export declare const TreeItem: <TValue extends MultipleValue = string[]>(props: TreeItemProps<TValue>) => JSX.Element;
@@ -5,9 +5,10 @@ import { List, PopoverContent, StyledCheckbox, StyledTooltip, StyledTreeItem, }
5
5
  import { useLogic } from './useLogic';
6
6
  export const TreeItem = (props) => {
7
7
  const { isSelected, isDefaultExpanded, disabledReason, isDisabled, nextLevel, formControlLabelProps, tooltipProps, confirmChildrenButtonProps, handleChange, } = useLogic(props);
8
- const { id, prefixId, label, note, level, renderItem, children = [], value, isConfirmChildrenSelection, isInitialExpanded, expandedLevel, chainsToSelectedItem, disabledItems, options, onChange, } = props;
8
+ const { item, prefixId, level, renderItem, value, isConfirmChildrenSelection, isInitialExpanded, expandedLevel, chainsToSelectedItem, disabledItems, onChange, isObjectMode, } = props;
9
+ const { id, label, note, children = [], options } = item;
9
10
  if (children.length) {
10
- return (_jsx(StyledTreeItem, { id: id, prefixId: prefixId, isSelected: isSelected, isDefaultExpanded: isDefaultExpanded, isForceExpanded: options?.isForceExpanded, disabledReason: disabledReason, isDisabled: isDisabled, note: renderItem ? null : note, isNotBlockingExpandList: true, component: "li", label: _jsx(FormControlLabel, { control: _jsx(StyledTooltip, { arrow: false, placement: "right", leaveDelay: 250, title: _jsx(PopoverContent, { children: _jsx(Button, { variant: "light", ...confirmChildrenButtonProps, children: !isSelected ? 'Исключить дочерние' : 'Выбрать дочерние' }) }), ...tooltipProps, children: _jsx(StyledCheckbox, { checked: isSelected }) }), label: renderItem ? renderItem({ label, note, id }) : label, ...formControlLabelProps }), level: level, onClick: handleChange, children: _jsx(List, { children: children.map((child) => (_jsx(TreeItem, { prefixId: prefixId, ...child, renderItem: renderItem, level: nextLevel, isConfirmChildrenSelection: isConfirmChildrenSelection, isInitialExpanded: isInitialExpanded, expandedLevel: expandedLevel, chainsToSelectedItem: chainsToSelectedItem, disabledItems: disabledItems, value: value, onChange: onChange }, child.id))) }) }));
11
+ return (_jsx(StyledTreeItem, { id: id, prefixId: prefixId, isSelected: isSelected, isDefaultExpanded: isDefaultExpanded, isForceExpanded: options?.isForceExpanded, disabledReason: disabledReason, isDisabled: isDisabled, note: renderItem ? null : note, isNotBlockingExpandList: true, component: "li", label: _jsx(FormControlLabel, { control: _jsx(StyledTooltip, { arrow: false, placement: "right", leaveDelay: 250, title: _jsx(PopoverContent, { children: _jsx(Button, { variant: "light", ...confirmChildrenButtonProps, children: !isSelected ? 'Исключить дочерние' : 'Выбрать дочерние' }) }), ...tooltipProps, children: _jsx(StyledCheckbox, { checked: isSelected }) }), label: renderItem ? renderItem({ label, note, id }) : label, ...formControlLabelProps }), level: level, onClick: handleChange, children: _jsx(List, { children: children.map((child) => (_jsx(TreeItem, { isObjectMode: isObjectMode, prefixId: prefixId, item: child, renderItem: renderItem, level: nextLevel, isConfirmChildrenSelection: isConfirmChildrenSelection, isInitialExpanded: isInitialExpanded, expandedLevel: expandedLevel, chainsToSelectedItem: chainsToSelectedItem, disabledItems: disabledItems, value: value, onChange: onChange }, child.id))) }) }));
11
12
  }
12
13
  return (_jsx(StyledTreeItem, { id: id, prefixId: prefixId, isSelected: isSelected, isDisabled: isDisabled, disabledReason: disabledReason, note: renderItem ? null : note, component: "li", label: _jsx(FormControlLabel, { control: _jsx(StyledCheckbox, { checked: isSelected }), label: renderItem ? renderItem({ label, note, id }) : label, ...formControlLabelProps }), level: level, onClick: handleChange }));
13
14
  };
@@ -0,0 +1,56 @@
1
+ import type { FunctionComponent } from 'react';
2
+ import type { TreeListData } from '../../Tree';
3
+ import type { MultipleValue } from '../types';
4
+ type FormatDisableItem = {
5
+ id: string;
6
+ disabledReason?: string;
7
+ };
8
+ export type TreeItemProps<TValue extends MultipleValue = string[]> = {
9
+ item: TreeListData;
10
+ /**
11
+ * Выбранные значения
12
+ */
13
+ value?: TValue;
14
+ /**
15
+ * Уникальный префикс для идентификаторов в рамках дерева
16
+ */
17
+ prefixId?: string;
18
+ /**
19
+ * Render-props, позволяет более гибко настраивать содержимое item
20
+ */
21
+ renderItem?: FunctionComponent<Omit<TreeListData, 'children'>>;
22
+ /**
23
+ * Уровень вложенности в дереве
24
+ */
25
+ level: number;
26
+ /**
27
+ * Если true, при выборе родителя будет возможность выбора дочерних элементов
28
+ */
29
+ isConfirmChildrenSelection?: boolean;
30
+ /**
31
+ * Если true, то дерево будет раскрыто по умолчанию
32
+ * @default false
33
+ */
34
+ isInitialExpanded?: boolean;
35
+ /**
36
+ * Уровень раскрытия дерева по умолчанию, при isExpanded=true
37
+ */
38
+ expandedLevel: number;
39
+ /**
40
+ * Цепочки идентификаторов до выбранных элементов дерева
41
+ */
42
+ chainsToSelectedItem?: string[][];
43
+ /**
44
+ * Список `value` элементов дерева, которые не доступны для взаимодействия
45
+ */
46
+ disabledItems?: FormatDisableItem[];
47
+ /**
48
+ * Функция, которая запускается при выборе item
49
+ */
50
+ onChange: (value: TValue) => void;
51
+ /**
52
+ * Переключает компонент в режим работы с объектами а не с id элементов
53
+ */
54
+ isObjectMode?: boolean;
55
+ };
56
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -1,7 +1,8 @@
1
1
  import { type SyntheticEvent } from 'react';
2
- import { type TreeItemProps } from '../TreeItem';
3
- type UseLogicProps = TreeItemProps;
4
- export declare const useLogic: ({ id, value, children, level, isConfirmChildrenSelection, isInitialExpanded, expandedLevel, chainsToSelectedItem, disabledItems, onChange, }: UseLogicProps) => {
2
+ import type { MultipleValue } from '../../types';
3
+ import type { TreeItemProps } from '../types';
4
+ type UseLogicProps<TValue extends MultipleValue = string[]> = TreeItemProps<TValue>;
5
+ export declare const useLogic: <TValue extends MultipleValue = string[]>({ item, value, level, isConfirmChildrenSelection, isInitialExpanded, expandedLevel, chainsToSelectedItem, disabledItems, onChange, isObjectMode, }: UseLogicProps<TValue>) => {
5
6
  isSelected: boolean;
6
7
  isDefaultExpanded: boolean | undefined;
7
8
  isDisabled: boolean;
@@ -1,14 +1,15 @@
1
1
  import { useMemo } from 'react';
2
2
  import { useToggle } from '../../../hooks';
3
- import { checkIsSelected, getAllChildrenId } from './utils';
4
- export const useLogic = ({ id, value = [], children, level, isConfirmChildrenSelection, isInitialExpanded, expandedLevel, chainsToSelectedItem = [], disabledItems, onChange, }) => {
3
+ import { addItem, addItemsByIds, checkIsSelected, getAllChildrenId, getCurrentValueIds, removeItem, removeItemsByIds, } from './utils';
4
+ export const useLogic = ({ item, value = [], level, isConfirmChildrenSelection, isInitialExpanded, expandedLevel, chainsToSelectedItem = [], disabledItems, onChange, isObjectMode, }) => {
5
+ const { id, children } = item;
5
6
  const [isTooltipOpen, openTooltip, closeTooltip] = useToggle();
6
7
  const childrenIds = useMemo(() => getAllChildrenId(children, disabledItems), [children, disabledItems]);
7
8
  const isSelected = checkIsSelected(value, id);
8
- const flatChainsToSelectedItem = useMemo(() => chainsToSelectedItem?.reduce((acc, chain) => [...(acc || []), ...(chain || [])], []), [chainsToSelectedItem]);
9
+ const flatChainsToSelectedItem = useMemo(() => chainsToSelectedItem?.reduce((acc, chain) => acc.concat(chain), []), [chainsToSelectedItem]);
9
10
  const isDefaultExpanded = flatChainsToSelectedItem?.includes(id) ||
10
11
  (isInitialExpanded && level <= expandedLevel - 1);
11
- const disabledItem = disabledItems?.find((item) => item.id === id);
12
+ const disabledItem = disabledItems?.find((formatDisableItem) => formatDisableItem.id === id);
12
13
  const isDisabled = Boolean(disabledItem);
13
14
  const disabledReason = disabledItem?.disabledReason;
14
15
  const nextLevel = level + 1;
@@ -16,29 +17,37 @@ export const useLogic = ({ id, value = [], children, level, isConfirmChildrenSel
16
17
  if (isDisabled) {
17
18
  return;
18
19
  }
20
+ const currentValueIds = getCurrentValueIds(value);
19
21
  // Сбрасываем значение
20
- if (value.includes(id)) {
21
- const hasSelectedChildren = value.some((val) => childrenIds.includes(val));
22
- // Если нет включенных дочерних элементов, то не предлагаем их выключить
22
+ if (currentValueIds.includes(id)) {
23
+ const hasSelectedChildren = childrenIds.some((childrenId) => currentValueIds.includes(childrenId));
23
24
  if (isConfirmChildrenSelection && hasSelectedChildren) {
24
25
  openTooltip();
25
26
  }
26
- return onChange(value.filter((selectedId) => selectedId !== id));
27
+ const newValue = removeItem(value, id);
28
+ return onChange(newValue);
27
29
  }
28
30
  // Добавляем новый элемент
29
- onChange([...value, id]);
30
- const isAllChildrenSelected = childrenIds.every((childrenId) => value.includes(childrenId));
31
- // Если все дочерние уже включены, то не предлагаем их выбрать
31
+ const newValue = addItem(value, item, isObjectMode);
32
+ onChange(newValue);
33
+ const isAllChildrenSelected = childrenIds.every((childrenId) => currentValueIds.includes(childrenId));
32
34
  if (isConfirmChildrenSelection && !isAllChildrenSelected) {
33
35
  openTooltip();
34
36
  }
35
37
  };
36
38
  const handleConfirmChildrenSelection = () => {
39
+ const currentValueIds = getCurrentValueIds(value);
37
40
  if (isSelected) {
38
- onChange([...value, ...childrenIds]);
41
+ // Элемент выбран - выбираем все дочерние элементы
42
+ const idsToAdd = childrenIds.filter((childrenId) => !currentValueIds.includes(childrenId));
43
+ const newValue = addItemsByIds(value, idsToAdd, children, isObjectMode);
44
+ onChange(newValue);
39
45
  }
40
46
  else {
41
- onChange(value.filter((selectedId) => !childrenIds.includes(selectedId)));
47
+ // Элемент не выбран - исключаем все дочерние элементы
48
+ const idsToRemove = childrenIds.filter((childrenId) => currentValueIds.includes(childrenId));
49
+ const newValue = removeItemsByIds(value, idsToRemove);
50
+ onChange(newValue);
42
51
  }
43
52
  closeTooltip();
44
53
  };
@@ -0,0 +1,6 @@
1
+ import type { TreeListData } from '../../../../../Tree';
2
+ import type { MultipleValue } from '../../../../types';
3
+ /**
4
+ * Добавляет элемент в value
5
+ */
6
+ export declare const addItem: <TValue extends MultipleValue = string[]>(value: TValue, item: TreeListData, isObjectMode?: boolean) => TValue;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Добавляет элемент в value
3
+ */
4
+ export const addItem = (value, item, isObjectMode) => {
5
+ const currentValue = value || [];
6
+ const newItem = isObjectMode ? item : item.id;
7
+ return [...currentValue, newItem];
8
+ };
@@ -0,0 +1 @@
1
+ export { addItem } from './addItem';
@@ -0,0 +1 @@
1
+ export { addItem } from './addItem';
@@ -0,0 +1,6 @@
1
+ import type { TreeListData } from '../../../../../Tree';
2
+ import type { MultipleValue } from '../../../../types';
3
+ /**
4
+ * Добавляет элементы в value по массиву id
5
+ */
6
+ export declare const addItemsByIds: <TValue extends MultipleValue = string[]>(value: TValue, idsToAdd: string[], children: TreeListData[] | undefined, isObjectMode?: boolean) => TValue;
@@ -0,0 +1,15 @@
1
+ import { findObjectsByIds } from '../findObjectsByIds';
2
+ /**
3
+ * Добавляет элементы в value по массиву id
4
+ */
5
+ export const addItemsByIds = (value, idsToAdd, children, isObjectMode) => {
6
+ if (idsToAdd.length === 0) {
7
+ return value;
8
+ }
9
+ const currentValue = value || [];
10
+ if (isObjectMode) {
11
+ const objectsToAdd = findObjectsByIds(children || [], idsToAdd);
12
+ return [...currentValue, ...objectsToAdd];
13
+ }
14
+ return [...currentValue, ...idsToAdd];
15
+ };
@@ -0,0 +1 @@
1
+ export { addItemsByIds } from './addItemsByIds';
@@ -0,0 +1 @@
1
+ export { addItemsByIds } from './addItemsByIds';
@@ -1 +1,2 @@
1
- export declare const checkIsSelected: (value: string[] | undefined, optionId: string) => boolean;
1
+ import type { MultipleValue } from '../../../../types';
2
+ export declare const checkIsSelected: <TValue extends MultipleValue = string[]>(value: TValue, optionId: string) => boolean;
@@ -1,6 +1,7 @@
1
+ import { getIdFromValue } from '../getIdFromValue';
1
2
  export const checkIsSelected = (value, optionId) => {
2
3
  if (!value || !value.length) {
3
4
  return false;
4
5
  }
5
- return value.includes(optionId);
6
+ return value.some((item) => getIdFromValue(item) === optionId);
6
7
  };
@@ -0,0 +1,5 @@
1
+ import type { TreeListData } from '../../../../../Tree';
2
+ /**
3
+ * Находит объекты TreeListData в дереве по массиву ID
4
+ */
5
+ export declare const findObjectsByIds: (nodes: TreeListData[], ids: string[]) => TreeListData[];
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Находит объекты TreeListData в дереве по массиву ID
3
+ */
4
+ export const findObjectsByIds = (nodes, ids) => {
5
+ if (!ids.length) {
6
+ return [];
7
+ }
8
+ // Создаем Map для быстрого поиска объектов по ID
9
+ const idToObjectMap = new Map();
10
+ const traverse = (items) => {
11
+ for (const item of items) {
12
+ idToObjectMap.set(item.id, item);
13
+ if (item.children) {
14
+ traverse(item.children);
15
+ }
16
+ }
17
+ };
18
+ traverse(nodes);
19
+ return ids
20
+ .map((id) => idToObjectMap.get(id))
21
+ .filter((obj) => obj !== undefined);
22
+ };
@@ -0,0 +1 @@
1
+ export { findObjectsByIds } from './findObjectsByIds';
@@ -0,0 +1 @@
1
+ export { findObjectsByIds } from './findObjectsByIds';
@@ -0,0 +1,5 @@
1
+ import type { MultipleValue } from '../../../../types';
2
+ /**
3
+ * Получает массив идентификаторов из значения
4
+ */
5
+ export declare const getCurrentValueIds: (value: MultipleValue) => string[];
@@ -0,0 +1,10 @@
1
+ import { getIdFromValue } from '../getIdFromValue';
2
+ /**
3
+ * Получает массив идентификаторов из значения
4
+ */
5
+ export const getCurrentValueIds = (value) => {
6
+ if (!value) {
7
+ return [];
8
+ }
9
+ return value.map((treeItem) => getIdFromValue(treeItem));
10
+ };
@@ -0,0 +1 @@
1
+ export { getCurrentValueIds } from './getCurrentValueIds';
@@ -0,0 +1 @@
1
+ export { getCurrentValueIds } from './getCurrentValueIds';
@@ -0,0 +1,5 @@
1
+ import { type TreeListData } from '../../../../../Tree';
2
+ /**
3
+ * Получает Id из значения, которое может быть строкой или объектом TreeListData
4
+ */
5
+ export declare const getIdFromValue: (item: string | TreeListData) => string;
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Получает Id из значения, которое может быть строкой или объектом TreeListData
3
+ */
4
+ export const getIdFromValue = (item) => {
5
+ return typeof item === 'string' ? item : item.id;
6
+ };
@@ -0,0 +1 @@
1
+ export * from './getIdFromValue';
@@ -0,0 +1 @@
1
+ export * from './getIdFromValue';
@@ -1,2 +1,9 @@
1
1
  export { checkIsSelected } from './checkIsSelected';
2
2
  export { getAllChildrenId } from './getAllChildrenId';
3
+ export { getIdFromValue } from './getIdFromValue';
4
+ export { findObjectsByIds } from './findObjectsByIds';
5
+ export { getCurrentValueIds } from './getCurrentValueIds';
6
+ export { removeItemsByIds } from './removeItemsByIds';
7
+ export { addItemsByIds } from './addItemsByIds';
8
+ export { removeItem } from './removeItem';
9
+ export { addItem } from './addItem';
@@ -1,2 +1,9 @@
1
1
  export { checkIsSelected } from './checkIsSelected';
2
2
  export { getAllChildrenId } from './getAllChildrenId';
3
+ export { getIdFromValue } from './getIdFromValue';
4
+ export { findObjectsByIds } from './findObjectsByIds';
5
+ export { getCurrentValueIds } from './getCurrentValueIds';
6
+ export { removeItemsByIds } from './removeItemsByIds';
7
+ export { addItemsByIds } from './addItemsByIds';
8
+ export { removeItem } from './removeItem';
9
+ export { addItem } from './addItem';
@@ -0,0 +1 @@
1
+ export { removeItem } from './removeItem';
@@ -0,0 +1 @@
1
+ export { removeItem } from './removeItem';
@@ -0,0 +1,5 @@
1
+ import type { MultipleValue } from '../../../../types';
2
+ /**
3
+ * Удаляет элемент из value по id
4
+ */
5
+ export declare const removeItem: <TValue extends MultipleValue = string[]>(value: TValue, idToRemove: string) => TValue;
@@ -0,0 +1,10 @@
1
+ import { getIdFromValue } from '../getIdFromValue';
2
+ /**
3
+ * Удаляет элемент из value по id
4
+ */
5
+ export const removeItem = (value, idToRemove) => {
6
+ if (!value) {
7
+ return value;
8
+ }
9
+ return value.filter((treeItem) => getIdFromValue(treeItem) !== idToRemove);
10
+ };
@@ -0,0 +1 @@
1
+ export { removeItemsByIds } from './removeItemsByIds';
@@ -0,0 +1 @@
1
+ export { removeItemsByIds } from './removeItemsByIds';
@@ -0,0 +1,5 @@
1
+ import type { MultipleValue } from '../../../../types';
2
+ /**
3
+ * Удаляет элементы из value по массиву id
4
+ */
5
+ export declare const removeItemsByIds: <TValue extends MultipleValue = string[]>(value: TValue, idsToRemove: string[]) => TValue;
@@ -0,0 +1,11 @@
1
+ import { getIdFromValue } from '../getIdFromValue';
2
+ /**
3
+ * Удаляет элементы из value по массиву id
4
+ */
5
+ export const removeItemsByIds = (value, idsToRemove) => {
6
+ if (!value || idsToRemove.length === 0) {
7
+ return value;
8
+ }
9
+ const idsSet = new Set(idsToRemove);
10
+ return value.filter((treeItem) => !idsSet.has(getIdFromValue(treeItem)));
11
+ };
@@ -1,4 +1,3 @@
1
1
  /// <reference types="react" />
2
- import { type TreeLikeListProps } from './types';
3
- export type { TreeLikeListProps };
4
- export declare const TreeLikeList: (props: TreeLikeListProps) => JSX.Element;
2
+ import type { MultipleValue, TreeLikeListProps } from './types';
3
+ export declare const TreeLikeList: <TValue extends MultipleValue = string[]>(props: TreeLikeListProps<TValue>) => JSX.Element;
@@ -6,5 +6,5 @@ const INITIAL_LEVEL = 0;
6
6
  export const TreeLikeList = (props) => {
7
7
  const { listProps, itemProps } = useLogic(props);
8
8
  const { data, className, expandedLevel = 10, disabledItems, ...restProps } = props;
9
- return (_jsx(List, { className: className, ...listProps, children: data.map((item) => (_jsx(TreeItem, { ...item, level: INITIAL_LEVEL, expandedLevel: expandedLevel, ...itemProps, ...restProps }, item.id))) }));
9
+ return (_jsx(List, { className: className, ...listProps, children: data.map((item) => (_jsx(TreeItem, { item: item, level: INITIAL_LEVEL, expandedLevel: expandedLevel, ...itemProps, ...restProps }, item.id))) }));
10
10
  };
@@ -1 +1,2 @@
1
1
  export * from './TreeLikeList';
2
+ export type { TreeLikeListProps } from './types';
@@ -1,15 +1,15 @@
1
1
  import { type FunctionComponent } from 'react';
2
2
  import type { TreeListData } from '../Tree';
3
- export type MultipleValue = string[] | undefined;
3
+ export type MultipleValue = TreeListData[] | string[] | undefined;
4
4
  export type DisabledItemValue = string | {
5
5
  id: string;
6
6
  disabledReason?: string;
7
7
  };
8
- export type TreeLikeListProps = {
8
+ export type TreeLikeListProps<TValue extends MultipleValue = string[]> = {
9
9
  /**
10
10
  * Выбранные значения
11
11
  */
12
- value?: MultipleValue;
12
+ value?: TValue;
13
13
  /**
14
14
  * Данные, которые необходимо отобразить в виде дерева.
15
15
  */
@@ -43,5 +43,9 @@ export type TreeLikeListProps = {
43
43
  /**
44
44
  * Функция, которая запускается при изменении состояния.
45
45
  */
46
- onChange: (value: MultipleValue) => void;
46
+ onChange: (value: TValue) => void;
47
+ /**
48
+ * Переключает компонент в режим работы с объектами а не с id элементов
49
+ */
50
+ isObjectMode?: boolean;
47
51
  };
@@ -1,7 +1,7 @@
1
1
  /// <reference types="react" />
2
- import { type TreeLikeListProps } from '../TreeLikeList';
3
- type UseLogicParams = TreeLikeListProps;
4
- export declare const useLogic: ({ data, value, disabledItems }: UseLogicParams) => {
2
+ import type { MultipleValue, TreeLikeListProps } from '../types';
3
+ type UseLogicParams<TValue extends MultipleValue = string[]> = TreeLikeListProps<TValue>;
4
+ export declare const useLogic: <TValue extends MultipleValue = string[]>({ data, value, disabledItems, }: UseLogicParams<TValue>) => {
5
5
  listProps: {
6
6
  ref: import("react").RefObject<HTMLUListElement>;
7
7
  };