@astral/ui 4.113.3 → 4.115.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 (293) hide show
  1. package/components/ActionGroup/ActionGroup.js +2 -2
  2. package/components/ActionGroup/SecondaryActions/SecondaryActions.d.ts +1 -1
  3. package/components/ActionGroup/SecondaryActions/SecondaryActions.js +2 -2
  4. package/components/ActionGroup/types.d.ts +9 -0
  5. package/components/DataGrid/Body/Body.d.ts +1 -1
  6. package/components/DataGrid/Body/Body.js +7 -3
  7. package/components/DataGrid/Body/types.d.ts +11 -3
  8. package/components/DataGrid/DataGrid.js +13 -6
  9. package/components/DataGrid/DataGridContext/DataGridProvider/DataGridProvider.d.ts +3 -2
  10. package/components/DataGrid/DataGridContext/DataGridProvider/DataGridProvider.js +3 -2
  11. package/components/DataGrid/DataGridSelectionContext/DataGridSelectionContext.d.ts +25 -0
  12. package/components/DataGrid/DataGridSelectionContext/DataGridSelectionContext.js +13 -0
  13. package/components/DataGrid/DataGridSelectionContext/DataGridSelectionProvider/DataGridSelectionProvider.d.ts +7 -0
  14. package/components/DataGrid/DataGridSelectionContext/DataGridSelectionProvider/DataGridSelectionProvider.js +8 -0
  15. package/components/DataGrid/DataGridSelectionContext/DataGridSelectionProvider/index.d.ts +1 -0
  16. package/components/DataGrid/DataGridSelectionContext/DataGridSelectionProvider/index.js +1 -0
  17. package/components/DataGrid/DataGridSelectionContext/index.d.ts +2 -0
  18. package/components/DataGrid/DataGridSelectionContext/index.js +2 -0
  19. package/components/DataGrid/PinnedSections/PinnedSections.js +2 -2
  20. package/components/DataGrid/PinnedSections/useLogic/useLogic.d.ts +1 -0
  21. package/components/DataGrid/PinnedSections/useLogic/useLogic.js +4 -3
  22. package/components/DataGrid/Row/Row.js +13 -9
  23. package/components/DataGrid/Row/RowContext/RowContext.d.ts +15 -4
  24. package/components/DataGrid/Row/RowContext/RowContext.js +3 -3
  25. package/components/DataGrid/Row/RowContext/RowProvider/RowProvider.d.ts +10 -1
  26. package/components/DataGrid/Row/RowContext/RowProvider/RowProvider.js +23 -17
  27. package/components/DataGrid/Row/types.d.ts +7 -3
  28. package/components/DataGrid/Row/useLogic/useLogic.d.ts +6 -4
  29. package/components/DataGrid/Row/useLogic/useLogic.js +21 -12
  30. package/components/DataGrid/RowBase/RowBase.js +5 -2
  31. package/components/DataGrid/RowBase/types.d.ts +9 -5
  32. package/components/DataGrid/RowBase/useLogic/useLogic.d.ts +5 -4
  33. package/components/DataGrid/RowBase/useLogic/useLogic.js +16 -10
  34. package/components/DataGrid/RowCheckbox/RowCheckbox.d.ts +5 -0
  35. package/components/DataGrid/RowCheckbox/RowCheckbox.js +13 -0
  36. package/components/DataGrid/RowCheckbox/constants.d.ts +4 -0
  37. package/components/DataGrid/RowCheckbox/constants.js +4 -0
  38. package/components/DataGrid/RowCheckbox/index.d.ts +1 -0
  39. package/components/DataGrid/RowCheckbox/index.js +1 -0
  40. package/components/DataGrid/RowCheckbox/types.d.ts +7 -0
  41. package/components/DataGrid/RowCheckbox/types.js +1 -0
  42. package/components/DataGrid/constants.d.ts +2 -0
  43. package/components/DataGrid/constants.js +2 -0
  44. package/components/DataGrid/hooks/index.d.ts +1 -0
  45. package/components/DataGrid/hooks/index.js +1 -0
  46. package/components/DataGrid/hooks/useWarnRowsWithoutDisabledReason/index.d.ts +1 -0
  47. package/components/DataGrid/hooks/useWarnRowsWithoutDisabledReason/index.js +1 -0
  48. package/components/DataGrid/hooks/useWarnRowsWithoutDisabledReason/useWarnRowsWithoutDisabledReason.d.ts +5 -0
  49. package/components/DataGrid/hooks/useWarnRowsWithoutDisabledReason/useWarnRowsWithoutDisabledReason.js +17 -0
  50. package/components/DataGrid/index.d.ts +1 -1
  51. package/components/DataGrid/public.d.ts +1 -1
  52. package/components/DataGrid/styles.d.ts +4 -0
  53. package/components/DataGrid/styles.js +26 -0
  54. package/components/DataGrid/tests/performance/testDataGridPerformance.d.ts +3 -1
  55. package/components/DataGrid/tests/performance/testDataGridPerformance.js +234 -2
  56. package/components/DataGrid/tests/selection/testDataGridSelection.d.ts +14 -0
  57. package/components/DataGrid/tests/selection/testDataGridSelection.js +562 -0
  58. package/components/DataGrid/types.d.ts +41 -1
  59. package/components/DataGrid/useLogic/useLogic.d.ts +8 -3
  60. package/components/DataGrid/useLogic/useLogic.js +23 -10
  61. package/components/DataGrid/utils/checkIsMassActionsOpen/checkIsMassActionsOpen.d.ts +10 -0
  62. package/components/DataGrid/utils/checkIsMassActionsOpen/checkIsMassActionsOpen.js +4 -0
  63. package/components/DataGrid/utils/checkIsMassActionsOpen/index.d.ts +1 -0
  64. package/components/DataGrid/utils/checkIsMassActionsOpen/index.js +1 -0
  65. package/components/DataGrid/utils/getRowDisabledState/getRowDisabledState.d.ts +31 -0
  66. package/components/DataGrid/utils/getRowDisabledState/getRowDisabledState.js +20 -0
  67. package/components/DataGrid/utils/getRowDisabledState/index.d.ts +1 -0
  68. package/components/DataGrid/utils/getRowDisabledState/index.js +1 -0
  69. package/components/DataGrid/utils/index.d.ts +4 -0
  70. package/components/DataGrid/utils/index.js +4 -0
  71. package/components/DataGrid/utils/resolveRowDisabled/index.d.ts +1 -0
  72. package/components/DataGrid/utils/resolveRowDisabled/index.js +1 -0
  73. package/components/DataGrid/utils/resolveRowDisabled/resolveRowDisabled.d.ts +5 -0
  74. package/components/DataGrid/utils/resolveRowDisabled/resolveRowDisabled.js +17 -0
  75. package/components/DataGrid/utils/resolveRowsDisabled/index.d.ts +1 -0
  76. package/components/DataGrid/utils/resolveRowsDisabled/index.js +1 -0
  77. package/components/DataGrid/utils/resolveRowsDisabled/resolveRowsDisabled.d.ts +16 -0
  78. package/components/DataGrid/utils/resolveRowsDisabled/resolveRowsDisabled.js +17 -0
  79. package/components/DataGridActionCell/hooks/useBlockingActions/useBlockingActions.js +3 -3
  80. package/components/DataGridCollapsibleRow/useLogic/useLogic.d.ts +3 -2
  81. package/components/DataGridCollapsibleRow/useLogic/useLogic.js +4 -3
  82. package/components/DataGridInfinite/DataGridInfinite.js +18 -14
  83. package/components/DataGridInfinite/DataGridInfiniteContext/DataGridInfiniteContext.d.ts +1 -1
  84. package/components/DataGridInfinite/DataGridInfiniteContext/DataGridInfiniteContext.js +1 -1
  85. package/components/DataGridInfinite/Footer/Footer.d.ts +6 -0
  86. package/components/DataGridInfinite/Footer/Footer.js +25 -0
  87. package/components/DataGridInfinite/Footer/index.d.ts +2 -0
  88. package/components/DataGridInfinite/Footer/index.js +1 -0
  89. package/components/DataGridInfinite/Footer/types.d.ts +26 -0
  90. package/components/DataGridInfinite/Footer/types.js +1 -0
  91. package/components/DataGridInfinite/Row/Row.js +2 -2
  92. package/components/DataGridInfinite/Row/index.d.ts +1 -0
  93. package/components/DataGridInfinite/Row/types.d.ts +17 -2
  94. package/components/DataGridInfinite/Row/useLogic/useLogic.d.ts +4 -2
  95. package/components/DataGridInfinite/Row/useLogic/useLogic.js +12 -4
  96. package/components/DataGridInfinite/constants.d.ts +3 -0
  97. package/components/DataGridInfinite/constants.js +3 -0
  98. package/components/DataGridInfinite/faker.d.ts +1 -5
  99. package/components/DataGridInfinite/faker.js +1 -2
  100. package/components/DataGridInfinite/styles.d.ts +4 -0
  101. package/components/DataGridInfinite/styles.js +24 -0
  102. package/components/DataGridInfinite/useLogic/useLogic.d.ts +7 -3
  103. package/components/DataGridInfinite/useLogic/useLogic.js +52 -16
  104. package/components/DataGridMassActions/DataGridMassActions.d.ts +15 -0
  105. package/components/DataGridMassActions/DataGridMassActions.js +32 -0
  106. package/components/DataGridMassActions/constants.d.ts +4 -0
  107. package/components/DataGridMassActions/constants.js +5 -0
  108. package/components/DataGridMassActions/index.d.ts +2 -0
  109. package/components/DataGridMassActions/index.js +1 -0
  110. package/components/DataGridMassActions/public.d.ts +2 -0
  111. package/components/DataGridMassActions/public.js +1 -0
  112. package/components/DataGridMassActions/styles.d.ts +8 -0
  113. package/components/DataGridMassActions/styles.js +49 -0
  114. package/components/DataGridMassActions/tests/testDataGridMassActions.d.ts +23 -0
  115. package/components/DataGridMassActions/tests/testDataGridMassActions.js +77 -0
  116. package/components/DataGridMassActions/types.d.ts +2 -0
  117. package/components/DataGridMassActions/types.js +1 -0
  118. package/components/DataGridMassActions/useLogic/index.d.ts +1 -0
  119. package/components/DataGridMassActions/useLogic/index.js +1 -0
  120. package/components/DataGridMassActions/useLogic/useLogic.d.ts +6 -0
  121. package/components/DataGridMassActions/useLogic/useLogic.js +21 -0
  122. package/components/IconDropdownButton/IconDropdownButton.d.ts +5 -0
  123. package/components/IconDropdownButton/IconDropdownButton.js +2 -2
  124. package/components/MassActions/MassActions.d.ts +5 -0
  125. package/components/MassActions/MassActions.js +17 -0
  126. package/components/MassActions/constants.d.ts +6 -0
  127. package/components/MassActions/constants.js +12 -0
  128. package/components/MassActions/index.d.ts +2 -0
  129. package/components/MassActions/index.js +1 -0
  130. package/components/MassActions/styles.d.ts +34 -0
  131. package/components/MassActions/styles.js +43 -0
  132. package/components/MassActions/types.d.ts +20 -0
  133. package/components/MassActions/types.js +1 -0
  134. package/components/MassActions/useLogic/index.d.ts +1 -0
  135. package/components/MassActions/useLogic/index.js +1 -0
  136. package/components/MassActions/useLogic/useLogic.d.ts +7 -0
  137. package/components/MassActions/useLogic/useLogic.js +9 -0
  138. package/components/PageHeader/PageActions/SecondaryActions/styles.d.ts +1 -1
  139. package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/index.d.ts +0 -1
  140. package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/index.js +0 -1
  141. package/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/useLogic.js +2 -1
  142. package/components/index.d.ts +1 -1
  143. package/node/components/ActionGroup/ActionGroup.js +2 -2
  144. package/node/components/ActionGroup/SecondaryActions/SecondaryActions.d.ts +1 -1
  145. package/node/components/ActionGroup/SecondaryActions/SecondaryActions.js +2 -2
  146. package/node/components/ActionGroup/types.d.ts +9 -0
  147. package/node/components/DataGrid/Body/Body.d.ts +1 -1
  148. package/node/components/DataGrid/Body/Body.js +7 -3
  149. package/node/components/DataGrid/Body/types.d.ts +11 -3
  150. package/node/components/DataGrid/DataGrid.js +12 -5
  151. package/node/components/DataGrid/DataGridContext/DataGridProvider/DataGridProvider.d.ts +3 -2
  152. package/node/components/DataGrid/DataGridContext/DataGridProvider/DataGridProvider.js +3 -2
  153. package/node/components/DataGrid/DataGridSelectionContext/DataGridSelectionContext.d.ts +25 -0
  154. package/node/components/DataGrid/DataGridSelectionContext/DataGridSelectionContext.js +16 -0
  155. package/node/components/DataGrid/DataGridSelectionContext/DataGridSelectionProvider/DataGridSelectionProvider.d.ts +7 -0
  156. package/node/components/DataGrid/DataGridSelectionContext/DataGridSelectionProvider/DataGridSelectionProvider.js +12 -0
  157. package/node/components/DataGrid/DataGridSelectionContext/DataGridSelectionProvider/index.d.ts +1 -0
  158. package/node/components/DataGrid/DataGridSelectionContext/DataGridSelectionProvider/index.js +17 -0
  159. package/node/components/DataGrid/DataGridSelectionContext/index.d.ts +2 -0
  160. package/node/components/DataGrid/DataGridSelectionContext/index.js +18 -0
  161. package/node/components/DataGrid/PinnedSections/PinnedSections.js +2 -2
  162. package/node/components/DataGrid/PinnedSections/useLogic/useLogic.d.ts +1 -0
  163. package/node/components/DataGrid/PinnedSections/useLogic/useLogic.js +4 -3
  164. package/node/components/DataGrid/Row/Row.js +13 -9
  165. package/node/components/DataGrid/Row/RowContext/RowContext.d.ts +15 -4
  166. package/node/components/DataGrid/Row/RowContext/RowContext.js +3 -3
  167. package/node/components/DataGrid/Row/RowContext/RowProvider/RowProvider.d.ts +10 -1
  168. package/node/components/DataGrid/Row/RowContext/RowProvider/RowProvider.js +23 -17
  169. package/node/components/DataGrid/Row/types.d.ts +7 -3
  170. package/node/components/DataGrid/Row/useLogic/useLogic.d.ts +6 -4
  171. package/node/components/DataGrid/Row/useLogic/useLogic.js +23 -14
  172. package/node/components/DataGrid/RowBase/RowBase.js +5 -2
  173. package/node/components/DataGrid/RowBase/types.d.ts +9 -5
  174. package/node/components/DataGrid/RowBase/useLogic/useLogic.d.ts +5 -4
  175. package/node/components/DataGrid/RowBase/useLogic/useLogic.js +16 -10
  176. package/node/components/DataGrid/RowCheckbox/RowCheckbox.d.ts +5 -0
  177. package/node/components/DataGrid/RowCheckbox/RowCheckbox.js +17 -0
  178. package/node/components/DataGrid/RowCheckbox/constants.d.ts +4 -0
  179. package/node/components/DataGrid/RowCheckbox/constants.js +7 -0
  180. package/node/components/DataGrid/RowCheckbox/index.d.ts +1 -0
  181. package/node/components/DataGrid/RowCheckbox/index.js +17 -0
  182. package/node/components/DataGrid/RowCheckbox/types.d.ts +7 -0
  183. package/node/components/DataGrid/RowCheckbox/types.js +2 -0
  184. package/node/components/DataGrid/constants.d.ts +2 -0
  185. package/node/components/DataGrid/constants.js +2 -0
  186. package/node/components/DataGrid/hooks/index.d.ts +1 -0
  187. package/node/components/DataGrid/hooks/index.js +1 -0
  188. package/node/components/DataGrid/hooks/useWarnRowsWithoutDisabledReason/index.d.ts +1 -0
  189. package/node/components/DataGrid/hooks/useWarnRowsWithoutDisabledReason/index.js +17 -0
  190. package/node/components/DataGrid/hooks/useWarnRowsWithoutDisabledReason/useWarnRowsWithoutDisabledReason.d.ts +5 -0
  191. package/node/components/DataGrid/hooks/useWarnRowsWithoutDisabledReason/useWarnRowsWithoutDisabledReason.js +21 -0
  192. package/node/components/DataGrid/index.d.ts +1 -1
  193. package/node/components/DataGrid/public.d.ts +1 -1
  194. package/node/components/DataGrid/styles.d.ts +4 -0
  195. package/node/components/DataGrid/styles.js +27 -1
  196. package/node/components/DataGrid/tests/performance/testDataGridPerformance.d.ts +3 -1
  197. package/node/components/DataGrid/tests/performance/testDataGridPerformance.js +232 -0
  198. package/node/components/DataGrid/tests/selection/testDataGridSelection.d.ts +14 -0
  199. package/node/components/DataGrid/tests/selection/testDataGridSelection.js +566 -0
  200. package/node/components/DataGrid/types.d.ts +41 -1
  201. package/node/components/DataGrid/useLogic/useLogic.d.ts +8 -3
  202. package/node/components/DataGrid/useLogic/useLogic.js +25 -12
  203. package/node/components/DataGrid/utils/checkIsMassActionsOpen/checkIsMassActionsOpen.d.ts +10 -0
  204. package/node/components/DataGrid/utils/checkIsMassActionsOpen/checkIsMassActionsOpen.js +8 -0
  205. package/node/components/DataGrid/utils/checkIsMassActionsOpen/index.d.ts +1 -0
  206. package/node/components/DataGrid/utils/checkIsMassActionsOpen/index.js +5 -0
  207. package/node/components/DataGrid/utils/getRowDisabledState/getRowDisabledState.d.ts +31 -0
  208. package/node/components/DataGrid/utils/getRowDisabledState/getRowDisabledState.js +24 -0
  209. package/node/components/DataGrid/utils/getRowDisabledState/index.d.ts +1 -0
  210. package/node/components/DataGrid/utils/getRowDisabledState/index.js +5 -0
  211. package/node/components/DataGrid/utils/index.d.ts +4 -0
  212. package/node/components/DataGrid/utils/index.js +9 -1
  213. package/node/components/DataGrid/utils/resolveRowDisabled/index.d.ts +1 -0
  214. package/node/components/DataGrid/utils/resolveRowDisabled/index.js +5 -0
  215. package/node/components/DataGrid/utils/resolveRowDisabled/resolveRowDisabled.d.ts +5 -0
  216. package/node/components/DataGrid/utils/resolveRowDisabled/resolveRowDisabled.js +21 -0
  217. package/node/components/DataGrid/utils/resolveRowsDisabled/index.d.ts +1 -0
  218. package/node/components/DataGrid/utils/resolveRowsDisabled/index.js +5 -0
  219. package/node/components/DataGrid/utils/resolveRowsDisabled/resolveRowsDisabled.d.ts +16 -0
  220. package/node/components/DataGrid/utils/resolveRowsDisabled/resolveRowsDisabled.js +21 -0
  221. package/node/components/DataGridActionCell/hooks/useBlockingActions/useBlockingActions.js +3 -3
  222. package/node/components/DataGridCollapsibleRow/useLogic/useLogic.d.ts +3 -2
  223. package/node/components/DataGridCollapsibleRow/useLogic/useLogic.js +4 -3
  224. package/node/components/DataGridInfinite/DataGridInfinite.js +19 -15
  225. package/node/components/DataGridInfinite/DataGridInfiniteContext/DataGridInfiniteContext.d.ts +1 -1
  226. package/node/components/DataGridInfinite/DataGridInfiniteContext/DataGridInfiniteContext.js +1 -1
  227. package/node/components/DataGridInfinite/Footer/Footer.d.ts +6 -0
  228. package/node/components/DataGridInfinite/Footer/Footer.js +29 -0
  229. package/node/components/DataGridInfinite/Footer/index.d.ts +2 -0
  230. package/node/components/DataGridInfinite/Footer/index.js +17 -0
  231. package/node/components/DataGridInfinite/Footer/types.d.ts +26 -0
  232. package/node/components/DataGridInfinite/Footer/types.js +2 -0
  233. package/node/components/DataGridInfinite/Row/Row.js +2 -2
  234. package/node/components/DataGridInfinite/Row/index.d.ts +1 -0
  235. package/node/components/DataGridInfinite/Row/types.d.ts +17 -2
  236. package/node/components/DataGridInfinite/Row/useLogic/useLogic.d.ts +4 -2
  237. package/node/components/DataGridInfinite/Row/useLogic/useLogic.js +12 -4
  238. package/node/components/DataGridInfinite/constants.d.ts +3 -0
  239. package/node/components/DataGridInfinite/constants.js +3 -0
  240. package/node/components/DataGridInfinite/faker.d.ts +1 -5
  241. package/node/components/DataGridInfinite/faker.js +1 -2
  242. package/node/components/DataGridInfinite/styles.d.ts +4 -0
  243. package/node/components/DataGridInfinite/styles.js +27 -3
  244. package/node/components/DataGridInfinite/useLogic/useLogic.d.ts +7 -3
  245. package/node/components/DataGridInfinite/useLogic/useLogic.js +52 -16
  246. package/node/components/DataGridMassActions/DataGridMassActions.d.ts +15 -0
  247. package/node/components/DataGridMassActions/DataGridMassActions.js +36 -0
  248. package/node/components/DataGridMassActions/constants.d.ts +4 -0
  249. package/node/components/DataGridMassActions/constants.js +8 -0
  250. package/node/components/DataGridMassActions/index.d.ts +2 -0
  251. package/node/components/DataGridMassActions/index.js +5 -0
  252. package/node/components/DataGridMassActions/public.d.ts +2 -0
  253. package/node/components/DataGridMassActions/public.js +5 -0
  254. package/node/components/DataGridMassActions/styles.d.ts +8 -0
  255. package/node/components/DataGridMassActions/styles.js +52 -0
  256. package/node/components/DataGridMassActions/tests/testDataGridMassActions.d.ts +23 -0
  257. package/node/components/DataGridMassActions/tests/testDataGridMassActions.js +81 -0
  258. package/node/components/DataGridMassActions/types.d.ts +2 -0
  259. package/node/components/DataGridMassActions/types.js +2 -0
  260. package/node/components/DataGridMassActions/useLogic/index.d.ts +1 -0
  261. package/node/components/DataGridMassActions/useLogic/index.js +17 -0
  262. package/node/components/DataGridMassActions/useLogic/useLogic.d.ts +6 -0
  263. package/node/components/DataGridMassActions/useLogic/useLogic.js +25 -0
  264. package/node/components/IconDropdownButton/IconDropdownButton.d.ts +5 -0
  265. package/node/components/IconDropdownButton/IconDropdownButton.js +2 -2
  266. package/node/components/MassActions/MassActions.d.ts +5 -0
  267. package/node/components/MassActions/MassActions.js +21 -0
  268. package/node/components/MassActions/constants.d.ts +6 -0
  269. package/node/components/MassActions/constants.js +15 -0
  270. package/node/components/MassActions/index.d.ts +2 -0
  271. package/node/components/MassActions/index.js +5 -0
  272. package/node/components/MassActions/styles.d.ts +34 -0
  273. package/node/components/MassActions/styles.js +46 -0
  274. package/node/components/MassActions/types.d.ts +20 -0
  275. package/node/components/MassActions/types.js +2 -0
  276. package/node/components/MassActions/useLogic/index.d.ts +1 -0
  277. package/node/components/MassActions/useLogic/index.js +17 -0
  278. package/node/components/MassActions/useLogic/useLogic.d.ts +7 -0
  279. package/node/components/MassActions/useLogic/useLogic.js +13 -0
  280. package/node/components/PageHeader/PageActions/SecondaryActions/styles.d.ts +1 -1
  281. package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/index.d.ts +0 -1
  282. package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/index.js +0 -1
  283. package/node/components/Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/useLogic.js +2 -1
  284. package/node/components/index.d.ts +1 -1
  285. package/package.json +1 -1
  286. /package/components/{Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount → useDelayedUnmount}/index.d.ts +0 -0
  287. /package/components/{Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount → useDelayedUnmount}/index.js +0 -0
  288. /package/components/{Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount → useDelayedUnmount}/useDelayedUnmount.d.ts +0 -0
  289. /package/components/{Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount → useDelayedUnmount}/useDelayedUnmount.js +0 -0
  290. /package/node/components/{Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount → useDelayedUnmount}/index.d.ts +0 -0
  291. /package/node/components/{Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount → useDelayedUnmount}/index.js +0 -0
  292. /package/node/components/{Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount → useDelayedUnmount}/useDelayedUnmount.d.ts +0 -0
  293. /package/node/components/{Tree/TreeItem/MobileSlidePanel/MobileSlidePanelContent/useLogic/hooks/useDelayedUnmount → useDelayedUnmount}/useDelayedUnmount.js +0 -0
@@ -1,12 +1,28 @@
1
1
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { screen, userEvents } from '@ui/dev/tests';
3
- import { useMemo, useState } from 'react';
4
- import { expect, it, vi } from 'vitest';
3
+ import { useCallback, useMemo, useState, } from 'react';
4
+ import { describe, expect, it, vi } from 'vitest';
5
5
  const TEST_ROWS = [
6
6
  { id: '1', name: 'Vasya' },
7
7
  { id: '2', name: 'Petya' },
8
8
  { id: '3', name: 'Ivan' },
9
9
  ];
10
+ const TEST_ROWS_WITH_CHILDREN = [
11
+ ...TEST_ROWS,
12
+ {
13
+ id: '4',
14
+ name: 'Package',
15
+ children: [{ id: '4-1', name: 'Nested' }],
16
+ },
17
+ ];
18
+ const SELECTION_DISABLED = {
19
+ mode: 'selection',
20
+ reason: 'Документ отправляется',
21
+ };
22
+ const ROW_DISABLED = {
23
+ mode: 'row',
24
+ reason: 'Документ отправляется',
25
+ };
10
26
  export const testDataGridPerformance = ({ render, renderGrid, }) => {
11
27
  const getRenderCountFor = (spy, id) => spy.mock.calls.filter(([row]) => row.id === id).length;
12
28
  it('При клике на чекбокс перерендеривается только выбранная строка', async () => {
@@ -99,4 +115,220 @@ export const testDataGridPerformance = ({ render, renderGrid, }) => {
99
115
  expect(getRenderCountFor(renderCellSpy, '2')).toBe(0);
100
116
  expect(getRenderCountFor(renderCellSpy, '3')).toBe(1);
101
117
  });
118
+ describe('getRowDisabled', () => {
119
+ const createColumns = (renderCell) => [
120
+ { field: 'name', label: 'Наименование', renderCell },
121
+ ];
122
+ const getRenderCounts = (spy, ids) => Object.fromEntries(ids.map((id) => [id, getRenderCountFor(spy, id)]));
123
+ const setupSelectableGrid = () => {
124
+ const renderCellSpy = vi.fn((row) => row.name);
125
+ const getRowDisabledSpy = vi.fn(() => undefined);
126
+ const TestComponent = () => {
127
+ const [selectedRows, setSelectedRows] = useState([]);
128
+ const columns = useMemo(() => createColumns(renderCellSpy), []);
129
+ return renderGrid({
130
+ rows: TEST_ROWS,
131
+ columns,
132
+ selectedRows,
133
+ onSelectRow: setSelectedRows,
134
+ getRowDisabled: getRowDisabledSpy,
135
+ onRetry: () => { },
136
+ });
137
+ };
138
+ render(_jsx(TestComponent, {}));
139
+ renderCellSpy.mockClear();
140
+ getRowDisabledSpy.mockClear();
141
+ return { renderCellSpy, getRowDisabledSpy };
142
+ };
143
+ const setupParentRerender = () => {
144
+ const renderCellSpy = vi.fn((row) => row.name);
145
+ const getRowDisabledSpy = vi.fn(() => undefined);
146
+ const TestComponent = () => {
147
+ const [, setCounter] = useState(0);
148
+ const columns = useMemo(() => createColumns(renderCellSpy), []);
149
+ return (_jsxs(_Fragment, { children: [_jsx("button", { onClick: () => setCounter((value) => value + 1), children: "Rerender" }), renderGrid({
150
+ rows: TEST_ROWS,
151
+ columns,
152
+ selectedRows: [],
153
+ onSelectRow: () => { },
154
+ getRowDisabled: getRowDisabledSpy,
155
+ onRetry: () => { },
156
+ })] }));
157
+ };
158
+ render(_jsx(TestComponent, {}));
159
+ renderCellSpy.mockClear();
160
+ getRowDisabledSpy.mockClear();
161
+ return { renderCellSpy, getRowDisabledSpy };
162
+ };
163
+ const setupChangedResult = () => {
164
+ const renderCellSpy = vi.fn((row) => row.name);
165
+ const getRowDisabledSpy = vi.fn();
166
+ const TestComponent = () => {
167
+ const [lockedId, setLockedId] = useState();
168
+ const columns = useMemo(() => createColumns(renderCellSpy), []);
169
+ const getRowDisabled = useCallback((row) => {
170
+ getRowDisabledSpy(row);
171
+ return row.id === lockedId ? SELECTION_DISABLED : undefined;
172
+ }, [lockedId]);
173
+ return (_jsxs(_Fragment, { children: [_jsx("button", { onClick: () => setLockedId('2'), children: "Lock row 2" }), renderGrid({
174
+ rows: TEST_ROWS,
175
+ columns,
176
+ selectedRows: [],
177
+ onSelectRow: () => { },
178
+ getRowDisabled,
179
+ onRetry: () => { },
180
+ })] }));
181
+ };
182
+ render(_jsx(TestComponent, {}));
183
+ renderCellSpy.mockClear();
184
+ getRowDisabledSpy.mockClear();
185
+ return { renderCellSpy, getRowDisabledSpy };
186
+ };
187
+ const setupSameResult = () => {
188
+ const renderCellSpy = vi.fn((row) => row.name);
189
+ const getRowDisabledSpy = vi.fn();
190
+ const TestComponent = () => {
191
+ const [counter, setCounter] = useState(0);
192
+ const columns = useMemo(() => createColumns(renderCellSpy), []);
193
+ const getRowDisabled = useCallback((row) => {
194
+ getRowDisabledSpy(row);
195
+ return undefined;
196
+ }, [counter]);
197
+ return (_jsxs(_Fragment, { children: [_jsx("button", { onClick: () => setCounter((value) => value + 1), children: "New function" }), renderGrid({
198
+ rows: TEST_ROWS_WITH_CHILDREN,
199
+ columns,
200
+ selectedRows: [],
201
+ onSelectRow: () => { },
202
+ getRowDisabled,
203
+ tree: { isInitialExpanded: true },
204
+ onRetry: () => { },
205
+ })] }));
206
+ };
207
+ render(_jsx(TestComponent, {}));
208
+ renderCellSpy.mockClear();
209
+ getRowDisabledSpy.mockClear();
210
+ return { renderCellSpy, getRowDisabledSpy };
211
+ };
212
+ describe('Клик на чекбокс', () => {
213
+ it('Перерендеривается только выбранная строка', async () => {
214
+ const { renderCellSpy } = setupSelectableGrid();
215
+ // 0 - "Выбрать все", 1 - первая строка
216
+ await userEvents.click(screen.getAllByRole('checkbox')[2]);
217
+ expect(getRenderCounts(renderCellSpy, ['1', '2', '3'])).toEqual({
218
+ '1': 0,
219
+ '2': 1,
220
+ '3': 0,
221
+ });
222
+ });
223
+ it('getRowDisabled не вызывается', async () => {
224
+ const { getRowDisabledSpy } = setupSelectableGrid();
225
+ await userEvents.click(screen.getAllByRole('checkbox')[2]);
226
+ expect(getRowDisabledSpy).not.toHaveBeenCalled();
227
+ });
228
+ });
229
+ it('getRowDisabled не вызывается при «Выбрать все»', async () => {
230
+ const { getRowDisabledSpy } = setupSelectableGrid();
231
+ await userEvents.click(screen.getAllByRole('checkbox')[0]);
232
+ expect(getRowDisabledSpy).not.toHaveBeenCalled();
233
+ });
234
+ describe('Перерисовка родителя со стабильной функцией', () => {
235
+ it('Строки не перерисовываются', async () => {
236
+ const { renderCellSpy } = setupParentRerender();
237
+ await userEvents.click(screen.getByText('Rerender'));
238
+ expect(renderCellSpy).not.toHaveBeenCalled();
239
+ });
240
+ it('getRowDisabled не вызывается', async () => {
241
+ const { getRowDisabledSpy } = setupParentRerender();
242
+ await userEvents.click(screen.getByText('Rerender'));
243
+ expect(getRowDisabledSpy).not.toHaveBeenCalled();
244
+ });
245
+ });
246
+ describe('Новая функция с изменившимся результатом', () => {
247
+ it('Перерендеривается только строка с изменившимся результатом', async () => {
248
+ const { renderCellSpy } = setupChangedResult();
249
+ await userEvents.click(screen.getByText('Lock row 2'));
250
+ expect(getRenderCounts(renderCellSpy, ['1', '2', '3'])).toEqual({
251
+ '1': 0,
252
+ '2': 1,
253
+ '3': 0,
254
+ });
255
+ });
256
+ it('getRowDisabled вызывается один раз на строку', async () => {
257
+ const { getRowDisabledSpy } = setupChangedResult();
258
+ await userEvents.click(screen.getByText('Lock row 2'));
259
+ expect(getRowDisabledSpy).toHaveBeenCalledTimes(TEST_ROWS.length);
260
+ });
261
+ });
262
+ describe('Новая функция с тем же результатом', () => {
263
+ it('Перерисовываются только строки с дочерними элементами', async () => {
264
+ const { renderCellSpy } = setupSameResult();
265
+ await userEvents.click(screen.getByText('New function'));
266
+ expect(getRenderCounts(renderCellSpy, ['1', '2', '3', '4', '4-1'])).toEqual({ '1': 0, '2': 0, '3': 0, '4': 1, '4-1': 1 });
267
+ });
268
+ it('getRowDisabled вызывается один раз на строку, включая вложенную', async () => {
269
+ const { getRowDisabledSpy } = setupSameResult();
270
+ await userEvents.click(screen.getByText('New function'));
271
+ // 4 строки и 1 вложенная
272
+ expect(getRowDisabledSpy).toHaveBeenCalledTimes(5);
273
+ });
274
+ });
275
+ // Virtuoso отдаёт строкам новые данные на рендер позже родителя: состояние строки
276
+ // не должно приходить раньше данных и перерисовывать строку дважды
277
+ describe('Новые rows вместе с изменением состояния строки', () => {
278
+ const createVersionRows = (version) => TEST_ROWS.map((row) => ({ ...row, name: `${row.name} v${version}` }));
279
+ const setupRowsUpdate = () => {
280
+ const renderCellSpy = vi.fn((row) => row.name);
281
+ const TestComponent = () => {
282
+ const [version, setVersion] = useState(0);
283
+ const [isOptionsLocked, setOptionsLocked] = useState(false);
284
+ const [lockedId, setLockedId] = useState();
285
+ const [selectedRows, setSelectedRows] = useState([]);
286
+ const columns = useMemo(() => createColumns(renderCellSpy), []);
287
+ const versionRows = useMemo(() => createVersionRows(version), [version]);
288
+ // Заново создаётся только заблокированная строка, остальные сохраняют ссылки
289
+ const rows = useMemo(() => versionRows.map((row) => isOptionsLocked && row.id === '2'
290
+ ? { ...row, options: { isDisabled: true } }
291
+ : row), [versionRows, isOptionsLocked]);
292
+ const getRowDisabled = useCallback((row) => (row.id === lockedId ? ROW_DISABLED : undefined), [lockedId]);
293
+ return (_jsxs(_Fragment, { children: [_jsx("button", { onClick: () => setOptionsLocked(true), children: "Lock via options" }), _jsx("button", { onClick: () => {
294
+ setVersion(1);
295
+ setSelectedRows([TEST_ROWS[1]]);
296
+ }, children: "Refetch and select" }), _jsx("button", { onClick: () => {
297
+ setVersion(1);
298
+ setLockedId('2');
299
+ }, children: "Refetch and lock" }), renderGrid({
300
+ rows,
301
+ columns,
302
+ selectedRows,
303
+ onSelectRow: setSelectedRows,
304
+ getRowDisabled,
305
+ onRetry: () => { },
306
+ })] }));
307
+ };
308
+ render(_jsx(TestComponent, {}));
309
+ renderCellSpy.mockClear();
310
+ return { renderCellSpy };
311
+ };
312
+ it('Строка перерисовывается один раз при блокировке через options', async () => {
313
+ const { renderCellSpy } = setupRowsUpdate();
314
+ await userEvents.click(screen.getByText('Lock via options'));
315
+ expect(getRenderCounts(renderCellSpy, ['1', '2', '3'])).toEqual({
316
+ '1': 0,
317
+ '2': 1,
318
+ '3': 0,
319
+ });
320
+ });
321
+ it.each([
322
+ { condition: 'изменении выбора', action: 'Refetch and select' },
323
+ {
324
+ condition: 'блокировке через getRowDisabled',
325
+ action: 'Refetch and lock',
326
+ },
327
+ ])('Строки перерисовываются один раз и сразу с новыми данными при $condition', async ({ action }) => {
328
+ const { renderCellSpy } = setupRowsUpdate();
329
+ await userEvents.click(screen.getByText(action));
330
+ expect(renderCellSpy.mock.calls.map(([row]) => row.name)).toEqual(['Vasya v1', 'Petya v1', 'Ivan v1']);
331
+ });
332
+ });
333
+ });
102
334
  };
@@ -0,0 +1,14 @@
1
+ import { type RenderResult } from '@ui/dev/tests';
2
+ import { type ReactElement } from 'react';
3
+ import { type DataGridProps } from '../../types';
4
+ type DataItem = {
5
+ id: string | number;
6
+ name: string;
7
+ };
8
+ type GridRenderProps = Pick<DataGridProps<DataItem>, 'rows' | 'columns' | 'selectedRows' | 'onSelectRow' | 'getRowDisabled' | 'onRowClick' | 'variant' | 'tree' | 'onRetry'>;
9
+ type TestDataGridSelectionParams = {
10
+ render: (ui: ReactElement) => Pick<RenderResult, 'rerender'>;
11
+ renderGrid: (props: GridRenderProps) => ReactElement;
12
+ };
13
+ export declare const testDataGridSelection: ({ render, renderGrid, }: TestDataGridSelectionParams) => void;
14
+ export {};