@applica-software-guru/react-admin 1.3.144 → 1.3.145

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 (526) hide show
  1. package/dist/react-admin.cjs.js +59 -59
  2. package/dist/react-admin.cjs.js.map +1 -1
  3. package/dist/react-admin.es.js +10034 -9399
  4. package/dist/react-admin.es.js.map +1 -1
  5. package/dist/react-admin.umd.js +59 -59
  6. package/dist/react-admin.umd.js.map +1 -1
  7. package/package.json +1 -1
  8. package/src/components/ra-lists/BulkActionsToolbar.tsx +141 -0
  9. package/src/components/ra-lists/BulkFloatingActionsToolbar.tsx +100 -0
  10. package/src/components/ra-lists/Datagrid/Datagrid.tsx +345 -0
  11. package/src/components/ra-lists/Datagrid/DatagridContext.ts +13 -0
  12. package/src/components/ra-lists/Datagrid/DatagridContextProvider.tsx +8 -0
  13. package/src/components/ra-lists/{Datagrid.tsx → Datagrid/index.tsx} +6 -9
  14. package/src/components/ra-lists/index.ts +6 -5
  15. package/src/playground/components/ra-forms/TestModelForm.jsx +18 -0
  16. package/vite.config.js +8 -8
  17. package/dist/Admin.d.ts +0 -10
  18. package/dist/Admin.d.ts.map +0 -1
  19. package/dist/AdminContext.d.ts +0 -10
  20. package/dist/AdminContext.d.ts.map +0 -1
  21. package/dist/ApplicaAdmin.d.ts +0 -142
  22. package/dist/ApplicaAdmin.d.ts.map +0 -1
  23. package/dist/components/@extended/AnimateButton.d.ts +0 -22
  24. package/dist/components/@extended/AnimateButton.d.ts.map +0 -1
  25. package/dist/components/@extended/Avatar.d.ts +0 -20
  26. package/dist/components/@extended/Avatar.d.ts.map +0 -1
  27. package/dist/components/@extended/Breadcrumbs.d.ts +0 -53
  28. package/dist/components/@extended/Breadcrumbs.d.ts.map +0 -1
  29. package/dist/components/@extended/Dot.d.ts +0 -17
  30. package/dist/components/@extended/Dot.d.ts.map +0 -1
  31. package/dist/components/@extended/IconButton.d.ts +0 -3
  32. package/dist/components/@extended/IconButton.d.ts.map +0 -1
  33. package/dist/components/@extended/LoadingButton.d.ts +0 -3
  34. package/dist/components/@extended/LoadingButton.d.ts.map +0 -1
  35. package/dist/components/@extended/Tooltip.d.ts +0 -17
  36. package/dist/components/@extended/Tooltip.d.ts.map +0 -1
  37. package/dist/components/@extended/Transitions.d.ts +0 -4
  38. package/dist/components/@extended/Transitions.d.ts.map +0 -1
  39. package/dist/components/@extended/index.d.ts +0 -11
  40. package/dist/components/@extended/index.d.ts.map +0 -1
  41. package/dist/components/@extended/progress/CircularWithLabel.d.ts +0 -12
  42. package/dist/components/@extended/progress/CircularWithLabel.d.ts.map +0 -1
  43. package/dist/components/@extended/progress/CircularWithPath.d.ts +0 -25
  44. package/dist/components/@extended/progress/CircularWithPath.d.ts.map +0 -1
  45. package/dist/components/@extended/progress/LinearWithIcon.d.ts +0 -14
  46. package/dist/components/@extended/progress/LinearWithIcon.d.ts.map +0 -1
  47. package/dist/components/@extended/progress/LinearWithLabel.d.ts +0 -12
  48. package/dist/components/@extended/progress/LinearWithLabel.d.ts.map +0 -1
  49. package/dist/components/@extended/progress/index.d.ts +0 -6
  50. package/dist/components/@extended/progress/index.d.ts.map +0 -1
  51. package/dist/components/ActionsMenu.d.ts +0 -31
  52. package/dist/components/ActionsMenu.d.ts.map +0 -1
  53. package/dist/components/AuthBackground.d.ts +0 -3
  54. package/dist/components/AuthBackground.d.ts.map +0 -1
  55. package/dist/components/AuthCard.d.ts +0 -12
  56. package/dist/components/AuthCard.d.ts.map +0 -1
  57. package/dist/components/AuthWrapper.d.ts +0 -19
  58. package/dist/components/AuthWrapper.d.ts.map +0 -1
  59. package/dist/components/Layout/Content.d.ts +0 -8
  60. package/dist/components/Layout/Content.d.ts.map +0 -1
  61. package/dist/components/Layout/Drawer/Drawer.d.ts +0 -8
  62. package/dist/components/Layout/Drawer/Drawer.d.ts.map +0 -1
  63. package/dist/components/Layout/Drawer/DrawerHeader.d.ts +0 -8
  64. package/dist/components/Layout/Drawer/DrawerHeader.d.ts.map +0 -1
  65. package/dist/components/Layout/Drawer/DrawerHeaderStyled.d.ts +0 -4
  66. package/dist/components/Layout/Drawer/DrawerHeaderStyled.d.ts.map +0 -1
  67. package/dist/components/Layout/Drawer/MiniDrawerStyled.d.ts +0 -3
  68. package/dist/components/Layout/Drawer/MiniDrawerStyled.d.ts.map +0 -1
  69. package/dist/components/Layout/Drawer/index.d.ts +0 -4
  70. package/dist/components/Layout/Drawer/index.d.ts.map +0 -1
  71. package/dist/components/Layout/Error.d.ts +0 -27
  72. package/dist/components/Layout/Error.d.ts.map +0 -1
  73. package/dist/components/Layout/Footer.d.ts +0 -19
  74. package/dist/components/Layout/Footer.d.ts.map +0 -1
  75. package/dist/components/Layout/Header/AppBarStyled.d.ts +0 -5
  76. package/dist/components/Layout/Header/AppBarStyled.d.ts.map +0 -1
  77. package/dist/components/Layout/Header/DrawerToggle.d.ts +0 -3
  78. package/dist/components/Layout/Header/DrawerToggle.d.ts.map +0 -1
  79. package/dist/components/Layout/Header/Header.d.ts +0 -8
  80. package/dist/components/Layout/Header/Header.d.ts.map +0 -1
  81. package/dist/components/Layout/Header/Notification/Notification.d.ts +0 -3
  82. package/dist/components/Layout/Header/Notification/Notification.d.ts.map +0 -1
  83. package/dist/components/Layout/Header/Notification/NotificationItem.d.ts +0 -19
  84. package/dist/components/Layout/Header/Notification/NotificationItem.d.ts.map +0 -1
  85. package/dist/components/Layout/Header/Notification/index.d.ts +0 -2
  86. package/dist/components/Layout/Header/Notification/index.d.ts.map +0 -1
  87. package/dist/components/Layout/Header/Profile/Profile.d.ts +0 -3
  88. package/dist/components/Layout/Header/Profile/Profile.d.ts.map +0 -1
  89. package/dist/components/Layout/Header/Profile/buttons/ChangePasswordButton.d.ts +0 -3
  90. package/dist/components/Layout/Header/Profile/buttons/ChangePasswordButton.d.ts.map +0 -1
  91. package/dist/components/Layout/Header/Profile/buttons/LogoutButton.d.ts +0 -3
  92. package/dist/components/Layout/Header/Profile/buttons/LogoutButton.d.ts.map +0 -1
  93. package/dist/components/Layout/Header/Profile/buttons/StopImpersonateButton.d.ts +0 -3
  94. package/dist/components/Layout/Header/Profile/buttons/StopImpersonateButton.d.ts.map +0 -1
  95. package/dist/components/Layout/Header/Profile/buttons/index.d.ts +0 -5
  96. package/dist/components/Layout/Header/Profile/buttons/index.d.ts.map +0 -1
  97. package/dist/components/Layout/Header/Profile/index.d.ts +0 -2
  98. package/dist/components/Layout/Header/Profile/index.d.ts.map +0 -1
  99. package/dist/components/Layout/Header/ResponsiveSection.d.ts +0 -5
  100. package/dist/components/Layout/Header/ResponsiveSection.d.ts.map +0 -1
  101. package/dist/components/Layout/Header/Spacer.d.ts +0 -5
  102. package/dist/components/Layout/Header/Spacer.d.ts.map +0 -1
  103. package/dist/components/Layout/Header/index.d.ts +0 -8
  104. package/dist/components/Layout/Header/index.d.ts.map +0 -1
  105. package/dist/components/Layout/HorizontalBar.d.ts +0 -5
  106. package/dist/components/Layout/HorizontalBar.d.ts.map +0 -1
  107. package/dist/components/Layout/Layout.d.ts +0 -24
  108. package/dist/components/Layout/Layout.d.ts.map +0 -1
  109. package/dist/components/Layout/NavMenu.d.ts +0 -5
  110. package/dist/components/Layout/NavMenu.d.ts.map +0 -1
  111. package/dist/components/Layout/Navigation/NavCollapse.d.ts +0 -23
  112. package/dist/components/Layout/Navigation/NavCollapse.d.ts.map +0 -1
  113. package/dist/components/Layout/Navigation/NavGroup.d.ts +0 -24
  114. package/dist/components/Layout/Navigation/NavGroup.d.ts.map +0 -1
  115. package/dist/components/Layout/Navigation/NavItem.d.ts +0 -13
  116. package/dist/components/Layout/Navigation/NavItem.d.ts.map +0 -1
  117. package/dist/components/Layout/Navigation/Navigation.d.ts +0 -7
  118. package/dist/components/Layout/Navigation/Navigation.d.ts.map +0 -1
  119. package/dist/components/Layout/Navigation/index.d.ts +0 -2
  120. package/dist/components/Layout/Navigation/index.d.ts.map +0 -1
  121. package/dist/components/Layout/Provider.d.ts +0 -84
  122. package/dist/components/Layout/Provider.d.ts.map +0 -1
  123. package/dist/components/Layout/Wrapper.d.ts +0 -6
  124. package/dist/components/Layout/Wrapper.d.ts.map +0 -1
  125. package/dist/components/Layout/index.d.ts +0 -12
  126. package/dist/components/Layout/index.d.ts.map +0 -1
  127. package/dist/components/Loadable.d.ts +0 -3
  128. package/dist/components/Loadable.d.ts.map +0 -1
  129. package/dist/components/Loader.d.ts +0 -3
  130. package/dist/components/Loader.d.ts.map +0 -1
  131. package/dist/components/Logo.d.ts +0 -20
  132. package/dist/components/Logo.d.ts.map +0 -1
  133. package/dist/components/MainCard.d.ts +0 -72
  134. package/dist/components/MainCard.d.ts.map +0 -1
  135. package/dist/components/MainIcon.d.ts +0 -11
  136. package/dist/components/MainIcon.d.ts.map +0 -1
  137. package/dist/components/MenuPopover/MenuPopover.d.ts +0 -20
  138. package/dist/components/MenuPopover/MenuPopover.d.ts.map +0 -1
  139. package/dist/components/MenuPopover/getPosition.d.ts +0 -51
  140. package/dist/components/MenuPopover/getPosition.d.ts.map +0 -1
  141. package/dist/components/MenuPopover/index.d.ts +0 -4
  142. package/dist/components/MenuPopover/index.d.ts.map +0 -1
  143. package/dist/components/MenuPopover/styles.d.ts +0 -2
  144. package/dist/components/MenuPopover/styles.d.ts.map +0 -1
  145. package/dist/components/Notification.d.ts +0 -7
  146. package/dist/components/Notification.d.ts.map +0 -1
  147. package/dist/components/ScrollTop.d.ts +0 -11
  148. package/dist/components/ScrollTop.d.ts.map +0 -1
  149. package/dist/components/ScrollX.d.ts +0 -3
  150. package/dist/components/ScrollX.d.ts.map +0 -1
  151. package/dist/components/SmallIcon.d.ts +0 -11
  152. package/dist/components/SmallIcon.d.ts.map +0 -1
  153. package/dist/components/index.d.ts +0 -24
  154. package/dist/components/index.d.ts.map +0 -1
  155. package/dist/components/ra-buttons/CreateInDialogButton.d.ts +0 -62
  156. package/dist/components/ra-buttons/CreateInDialogButton.d.ts.map +0 -1
  157. package/dist/components/ra-buttons/EditInDialogButton.d.ts +0 -24
  158. package/dist/components/ra-buttons/EditInDialogButton.d.ts.map +0 -1
  159. package/dist/components/ra-buttons/ImpersonateUserButton.d.ts +0 -12
  160. package/dist/components/ra-buttons/ImpersonateUserButton.d.ts.map +0 -1
  161. package/dist/components/ra-buttons/index.d.ts +0 -5
  162. package/dist/components/ra-buttons/index.d.ts.map +0 -1
  163. package/dist/components/ra-custom/ListItem.d.ts +0 -45
  164. package/dist/components/ra-custom/ListItem.d.ts.map +0 -1
  165. package/dist/components/ra-custom/index.d.ts +0 -3
  166. package/dist/components/ra-custom/index.d.ts.map +0 -1
  167. package/dist/components/ra-fields/ActionsField.d.ts +0 -23
  168. package/dist/components/ra-fields/ActionsField.d.ts.map +0 -1
  169. package/dist/components/ra-fields/AttachmentField.d.ts +0 -36
  170. package/dist/components/ra-fields/AttachmentField.d.ts.map +0 -1
  171. package/dist/components/ra-fields/BaseAttachmentField.d.ts +0 -32
  172. package/dist/components/ra-fields/BaseAttachmentField.d.ts.map +0 -1
  173. package/dist/components/ra-fields/CoverField.d.ts +0 -48
  174. package/dist/components/ra-fields/CoverField.d.ts.map +0 -1
  175. package/dist/components/ra-fields/DateAgoField.d.ts +0 -10
  176. package/dist/components/ra-fields/DateAgoField.d.ts.map +0 -1
  177. package/dist/components/ra-fields/DateField.d.ts +0 -7
  178. package/dist/components/ra-fields/DateField.d.ts.map +0 -1
  179. package/dist/components/ra-fields/EmailField.d.ts +0 -18
  180. package/dist/components/ra-fields/EmailField.d.ts.map +0 -1
  181. package/dist/components/ra-fields/FileField.d.ts +0 -29
  182. package/dist/components/ra-fields/FileField.d.ts.map +0 -1
  183. package/dist/components/ra-fields/FunctionField.d.ts +0 -8
  184. package/dist/components/ra-fields/FunctionField.d.ts.map +0 -1
  185. package/dist/components/ra-fields/ImageField.d.ts +0 -20
  186. package/dist/components/ra-fields/ImageField.d.ts.map +0 -1
  187. package/dist/components/ra-fields/ReadonlyField.d.ts +0 -27
  188. package/dist/components/ra-fields/ReadonlyField.d.ts.map +0 -1
  189. package/dist/components/ra-fields/ReferenceManyField.d.ts +0 -77
  190. package/dist/components/ra-fields/ReferenceManyField.d.ts.map +0 -1
  191. package/dist/components/ra-fields/SizeField.d.ts +0 -13
  192. package/dist/components/ra-fields/SizeField.d.ts.map +0 -1
  193. package/dist/components/ra-fields/TextField.d.ts +0 -7
  194. package/dist/components/ra-fields/TextField.d.ts.map +0 -1
  195. package/dist/components/ra-fields/index.d.ts +0 -15
  196. package/dist/components/ra-fields/index.d.ts.map +0 -1
  197. package/dist/components/ra-forms/CardForm.d.ts +0 -31
  198. package/dist/components/ra-forms/CardForm.d.ts.map +0 -1
  199. package/dist/components/ra-forms/ChangePasswordForm.d.ts +0 -7
  200. package/dist/components/ra-forms/ChangePasswordForm.d.ts.map +0 -1
  201. package/dist/components/ra-forms/Create.d.ts +0 -12
  202. package/dist/components/ra-forms/Create.d.ts.map +0 -1
  203. package/dist/components/ra-forms/Edit.d.ts +0 -26
  204. package/dist/components/ra-forms/Edit.d.ts.map +0 -1
  205. package/dist/components/ra-forms/FormHeader.d.ts +0 -29
  206. package/dist/components/ra-forms/FormHeader.d.ts.map +0 -1
  207. package/dist/components/ra-forms/LongForm/BaseForm.d.ts +0 -8
  208. package/dist/components/ra-forms/LongForm/BaseForm.d.ts.map +0 -1
  209. package/dist/components/ra-forms/LongForm/Content.d.ts +0 -8
  210. package/dist/components/ra-forms/LongForm/Content.d.ts.map +0 -1
  211. package/dist/components/ra-forms/LongForm/Form.d.ts +0 -12
  212. package/dist/components/ra-forms/LongForm/Form.d.ts.map +0 -1
  213. package/dist/components/ra-forms/LongForm/NavMenu.d.ts +0 -19
  214. package/dist/components/ra-forms/LongForm/NavMenu.d.ts.map +0 -1
  215. package/dist/components/ra-forms/LongForm/Provider.d.ts +0 -19
  216. package/dist/components/ra-forms/LongForm/Provider.d.ts.map +0 -1
  217. package/dist/components/ra-forms/LongForm/Sidebar.d.ts +0 -23
  218. package/dist/components/ra-forms/LongForm/Sidebar.d.ts.map +0 -1
  219. package/dist/components/ra-forms/LongForm/Tab.d.ts +0 -13
  220. package/dist/components/ra-forms/LongForm/Tab.d.ts.map +0 -1
  221. package/dist/components/ra-forms/LongForm/hooks.d.ts +0 -6
  222. package/dist/components/ra-forms/LongForm/hooks.d.ts.map +0 -1
  223. package/dist/components/ra-forms/LongForm/index.d.ts +0 -33
  224. package/dist/components/ra-forms/LongForm/index.d.ts.map +0 -1
  225. package/dist/components/ra-forms/LongForm/types.d.ts +0 -21
  226. package/dist/components/ra-forms/LongForm/types.d.ts.map +0 -1
  227. package/dist/components/ra-forms/LongForm/utils.d.ts +0 -9
  228. package/dist/components/ra-forms/LongForm/utils.d.ts.map +0 -1
  229. package/dist/components/ra-forms/Show.d.ts +0 -13
  230. package/dist/components/ra-forms/Show.d.ts.map +0 -1
  231. package/dist/components/ra-forms/SimpleForm.d.ts +0 -40
  232. package/dist/components/ra-forms/SimpleForm.d.ts.map +0 -1
  233. package/dist/components/ra-forms/SimpleFormIterator.d.ts +0 -6
  234. package/dist/components/ra-forms/SimpleFormIterator.d.ts.map +0 -1
  235. package/dist/components/ra-forms/TabbedForm.d.ts +0 -11
  236. package/dist/components/ra-forms/TabbedForm.d.ts.map +0 -1
  237. package/dist/components/ra-forms/TableForm/TableFormIterator.d.ts +0 -45
  238. package/dist/components/ra-forms/TableForm/TableFormIterator.d.ts.map +0 -1
  239. package/dist/components/ra-forms/TableForm/TableFormIteratorItem.d.ts +0 -18
  240. package/dist/components/ra-forms/TableForm/TableFormIteratorItem.d.ts.map +0 -1
  241. package/dist/components/ra-forms/TableForm/index.d.ts +0 -4
  242. package/dist/components/ra-forms/TableForm/index.d.ts.map +0 -1
  243. package/dist/components/ra-forms/Toolbar.d.ts +0 -11
  244. package/dist/components/ra-forms/Toolbar.d.ts.map +0 -1
  245. package/dist/components/ra-forms/index.d.ts +0 -15
  246. package/dist/components/ra-forms/index.d.ts.map +0 -1
  247. package/dist/components/ra-inputs/ArrayInput.d.ts +0 -15
  248. package/dist/components/ra-inputs/ArrayInput.d.ts.map +0 -1
  249. package/dist/components/ra-inputs/AttachmentInput.d.ts +0 -50
  250. package/dist/components/ra-inputs/AttachmentInput.d.ts.map +0 -1
  251. package/dist/components/ra-inputs/AutocompleteArrayInput.d.ts +0 -9
  252. package/dist/components/ra-inputs/AutocompleteArrayInput.d.ts.map +0 -1
  253. package/dist/components/ra-inputs/AutocompleteInput.d.ts +0 -7
  254. package/dist/components/ra-inputs/AutocompleteInput.d.ts.map +0 -1
  255. package/dist/components/ra-inputs/BooleanInput.d.ts +0 -25
  256. package/dist/components/ra-inputs/BooleanInput.d.ts.map +0 -1
  257. package/dist/components/ra-inputs/DateInput.d.ts +0 -18
  258. package/dist/components/ra-inputs/DateInput.d.ts.map +0 -1
  259. package/dist/components/ra-inputs/DateTimeInput.d.ts +0 -22
  260. package/dist/components/ra-inputs/DateTimeInput.d.ts.map +0 -1
  261. package/dist/components/ra-inputs/FileInput.d.ts +0 -47
  262. package/dist/components/ra-inputs/FileInput.d.ts.map +0 -1
  263. package/dist/components/ra-inputs/ImageInput.d.ts +0 -14
  264. package/dist/components/ra-inputs/ImageInput.d.ts.map +0 -1
  265. package/dist/components/ra-inputs/LabeledArrayInput.d.ts +0 -42
  266. package/dist/components/ra-inputs/LabeledArrayInput.d.ts.map +0 -1
  267. package/dist/components/ra-inputs/LabeledInput.d.ts +0 -41
  268. package/dist/components/ra-inputs/LabeledInput.d.ts.map +0 -1
  269. package/dist/components/ra-inputs/NumberInput.d.ts +0 -24
  270. package/dist/components/ra-inputs/NumberInput.d.ts.map +0 -1
  271. package/dist/components/ra-inputs/RecordInput.d.ts +0 -15
  272. package/dist/components/ra-inputs/RecordInput.d.ts.map +0 -1
  273. package/dist/components/ra-inputs/ReferenceArrayInput.d.ts +0 -24
  274. package/dist/components/ra-inputs/ReferenceArrayInput.d.ts.map +0 -1
  275. package/dist/components/ra-inputs/ReferenceInput.d.ts +0 -25
  276. package/dist/components/ra-inputs/ReferenceInput.d.ts.map +0 -1
  277. package/dist/components/ra-inputs/ReferenceManyInput.d.ts +0 -39
  278. package/dist/components/ra-inputs/ReferenceManyInput.d.ts.map +0 -1
  279. package/dist/components/ra-inputs/SearchInput.d.ts +0 -3
  280. package/dist/components/ra-inputs/SearchInput.d.ts.map +0 -1
  281. package/dist/components/ra-inputs/SelectArrayInput.d.ts +0 -28
  282. package/dist/components/ra-inputs/SelectArrayInput.d.ts.map +0 -1
  283. package/dist/components/ra-inputs/SelectInput.d.ts +0 -29
  284. package/dist/components/ra-inputs/SelectInput.d.ts.map +0 -1
  285. package/dist/components/ra-inputs/SmartTextInput.d.ts +0 -28
  286. package/dist/components/ra-inputs/SmartTextInput.d.ts.map +0 -1
  287. package/dist/components/ra-inputs/TextInput.d.ts +0 -19
  288. package/dist/components/ra-inputs/TextInput.d.ts.map +0 -1
  289. package/dist/components/ra-inputs/TimeInput.d.ts +0 -18
  290. package/dist/components/ra-inputs/TimeInput.d.ts.map +0 -1
  291. package/dist/components/ra-inputs/index.d.ts +0 -24
  292. package/dist/components/ra-inputs/index.d.ts.map +0 -1
  293. package/dist/components/ra-lists/Datagrid.d.ts +0 -638
  294. package/dist/components/ra-lists/Datagrid.d.ts.map +0 -1
  295. package/dist/components/ra-lists/Empty.d.ts +0 -44
  296. package/dist/components/ra-lists/Empty.d.ts.map +0 -1
  297. package/dist/components/ra-lists/List.d.ts +0 -29
  298. package/dist/components/ra-lists/List.d.ts.map +0 -1
  299. package/dist/components/ra-lists/ListView.d.ts +0 -257
  300. package/dist/components/ra-lists/ListView.d.ts.map +0 -1
  301. package/dist/components/ra-lists/NotificationList/NotificationList.d.ts +0 -5
  302. package/dist/components/ra-lists/NotificationList/NotificationList.d.ts.map +0 -1
  303. package/dist/components/ra-lists/NotificationList/button/MarkAsReadedButton.d.ts +0 -3
  304. package/dist/components/ra-lists/NotificationList/button/MarkAsReadedButton.d.ts.map +0 -1
  305. package/dist/components/ra-lists/NotificationList/button/MarkAsUnreadedButton.d.ts +0 -3
  306. package/dist/components/ra-lists/NotificationList/button/MarkAsUnreadedButton.d.ts.map +0 -1
  307. package/dist/components/ra-lists/NotificationList/button/index.d.ts +0 -3
  308. package/dist/components/ra-lists/NotificationList/button/index.d.ts.map +0 -1
  309. package/dist/components/ra-lists/NotificationList/field/NotificationField.d.ts +0 -3
  310. package/dist/components/ra-lists/NotificationList/field/NotificationField.d.ts.map +0 -1
  311. package/dist/components/ra-lists/NotificationList/field/index.d.ts +0 -2
  312. package/dist/components/ra-lists/NotificationList/field/index.d.ts.map +0 -1
  313. package/dist/components/ra-lists/NotificationList/index.d.ts +0 -3
  314. package/dist/components/ra-lists/NotificationList/index.d.ts.map +0 -1
  315. package/dist/components/ra-lists/index.d.ts +0 -6
  316. package/dist/components/ra-lists/index.d.ts.map +0 -1
  317. package/dist/components/ra-pages/ActivatePage.d.ts +0 -12
  318. package/dist/components/ra-pages/ActivatePage.d.ts.map +0 -1
  319. package/dist/components/ra-pages/GenericErrorPage.d.ts +0 -3
  320. package/dist/components/ra-pages/GenericErrorPage.d.ts.map +0 -1
  321. package/dist/components/ra-pages/LoginPage.d.ts +0 -52
  322. package/dist/components/ra-pages/LoginPage.d.ts.map +0 -1
  323. package/dist/components/ra-pages/RecoverPage.d.ts +0 -12
  324. package/dist/components/ra-pages/RecoverPage.d.ts.map +0 -1
  325. package/dist/components/ra-pages/RegisterPage.d.ts +0 -11
  326. package/dist/components/ra-pages/RegisterPage.d.ts.map +0 -1
  327. package/dist/components/ra-pages/index.d.ts +0 -6
  328. package/dist/components/ra-pages/index.d.ts.map +0 -1
  329. package/dist/components/ra-pages/types.d.ts +0 -32
  330. package/dist/components/ra-pages/types.d.ts.map +0 -1
  331. package/dist/components/third-party/SimpleBar.d.ts +0 -14
  332. package/dist/components/third-party/SimpleBar.d.ts.map +0 -1
  333. package/dist/components/third-party/index.d.ts +0 -3
  334. package/dist/components/third-party/index.d.ts.map +0 -1
  335. package/dist/contexts/AppConfigContext.d.ts +0 -32
  336. package/dist/contexts/AppConfigContext.d.ts.map +0 -1
  337. package/dist/contexts/MenuConfigContext.d.ts +0 -51
  338. package/dist/contexts/MenuConfigContext.d.ts.map +0 -1
  339. package/dist/contexts/MenuPropTypes.d.ts +0 -13
  340. package/dist/contexts/MenuPropTypes.d.ts.map +0 -1
  341. package/dist/contexts/TableFormIteratorContext.d.ts +0 -18
  342. package/dist/contexts/TableFormIteratorContext.d.ts.map +0 -1
  343. package/dist/contexts/TableFormIteratorItemContext.d.ts +0 -16
  344. package/dist/contexts/TableFormIteratorItemContext.d.ts.map +0 -1
  345. package/dist/contexts/ThemeConfigContext.d.ts +0 -69
  346. package/dist/contexts/ThemeConfigContext.d.ts.map +0 -1
  347. package/dist/contexts/index.d.ts +0 -8
  348. package/dist/contexts/index.d.ts.map +0 -1
  349. package/dist/dev/CatchResult.d.ts +0 -17
  350. package/dist/dev/CatchResult.d.ts.map +0 -1
  351. package/dist/dev/ErrorEventHandler.d.ts +0 -13
  352. package/dist/dev/ErrorEventHandler.d.ts.map +0 -1
  353. package/dist/dev/index.d.ts +0 -5
  354. package/dist/dev/index.d.ts.map +0 -1
  355. package/dist/dev/useErrorEventCatcher.d.ts +0 -12
  356. package/dist/dev/useErrorEventCatcher.d.ts.map +0 -1
  357. package/dist/hooks/index.d.ts +0 -14
  358. package/dist/hooks/index.d.ts.map +0 -1
  359. package/dist/hooks/mui.d.ts +0 -7
  360. package/dist/hooks/mui.d.ts.map +0 -1
  361. package/dist/hooks/useAppConfig.d.ts +0 -8
  362. package/dist/hooks/useAppConfig.d.ts.map +0 -1
  363. package/dist/hooks/useBreadcrumbs.d.ts +0 -9
  364. package/dist/hooks/useBreadcrumbs.d.ts.map +0 -1
  365. package/dist/hooks/useLocalStorage.d.ts +0 -2
  366. package/dist/hooks/useLocalStorage.d.ts.map +0 -1
  367. package/dist/hooks/useMemoizedObject.d.ts +0 -10
  368. package/dist/hooks/useMemoizedObject.d.ts.map +0 -1
  369. package/dist/hooks/useMenu.d.ts +0 -8
  370. package/dist/hooks/useMenu.d.ts.map +0 -1
  371. package/dist/hooks/useMenuConfig.d.ts +0 -11
  372. package/dist/hooks/useMenuConfig.d.ts.map +0 -1
  373. package/dist/hooks/useRefDimensions.d.ts +0 -13
  374. package/dist/hooks/useRefDimensions.d.ts.map +0 -1
  375. package/dist/hooks/useResourceTitle.d.ts +0 -3
  376. package/dist/hooks/useResourceTitle.d.ts.map +0 -1
  377. package/dist/hooks/useTableFormIterator.d.ts +0 -9
  378. package/dist/hooks/useTableFormIterator.d.ts.map +0 -1
  379. package/dist/hooks/useTableFormIteratorItem.d.ts +0 -9
  380. package/dist/hooks/useTableFormIteratorItem.d.ts.map +0 -1
  381. package/dist/hooks/useThemeConfig.d.ts +0 -3
  382. package/dist/hooks/useThemeConfig.d.ts.map +0 -1
  383. package/dist/i18n/MissingMessageHandler.d.ts +0 -19
  384. package/dist/i18n/MissingMessageHandler.d.ts.map +0 -1
  385. package/dist/i18n/createI18nProvider.d.ts +0 -10
  386. package/dist/i18n/createI18nProvider.d.ts.map +0 -1
  387. package/dist/i18n/index.d.ts +0 -4
  388. package/dist/i18n/index.d.ts.map +0 -1
  389. package/dist/i18n/useI18nLanguages.d.ts +0 -14
  390. package/dist/i18n/useI18nLanguages.d.ts.map +0 -1
  391. package/dist/i18n/useI18nProvider.d.ts +0 -7
  392. package/dist/i18n/useI18nProvider.d.ts.map +0 -1
  393. package/dist/index.d.ts +0 -10
  394. package/dist/index.d.ts.map +0 -1
  395. package/dist/themes/getColors.d.ts +0 -3
  396. package/dist/themes/getColors.d.ts.map +0 -1
  397. package/dist/themes/getShadow.d.ts +0 -10
  398. package/dist/themes/getShadow.d.ts.map +0 -1
  399. package/dist/themes/index.d.ts +0 -15
  400. package/dist/themes/index.d.ts.map +0 -1
  401. package/dist/themes/overrides/Accordion.d.ts +0 -24
  402. package/dist/themes/overrides/Accordion.d.ts.map +0 -1
  403. package/dist/themes/overrides/AccordionDetails.d.ts +0 -11
  404. package/dist/themes/overrides/AccordionDetails.d.ts.map +0 -1
  405. package/dist/themes/overrides/AccordionSummary.d.ts +0 -25
  406. package/dist/themes/overrides/AccordionSummary.d.ts.map +0 -1
  407. package/dist/themes/overrides/Alert.d.ts +0 -89
  408. package/dist/themes/overrides/Alert.d.ts.map +0 -1
  409. package/dist/themes/overrides/AlertTitle.d.ts +0 -12
  410. package/dist/themes/overrides/AlertTitle.d.ts.map +0 -1
  411. package/dist/themes/overrides/Autocomplete.d.ts +0 -23
  412. package/dist/themes/overrides/Autocomplete.d.ts.map +0 -1
  413. package/dist/themes/overrides/Badge.d.ts +0 -40
  414. package/dist/themes/overrides/Badge.d.ts.map +0 -1
  415. package/dist/themes/overrides/Button.d.ts +0 -7559
  416. package/dist/themes/overrides/Button.d.ts.map +0 -1
  417. package/dist/themes/overrides/ButtonBase.d.ts +0 -9
  418. package/dist/themes/overrides/ButtonBase.d.ts.map +0 -1
  419. package/dist/themes/overrides/ButtonGroup.d.ts +0 -8
  420. package/dist/themes/overrides/ButtonGroup.d.ts.map +0 -1
  421. package/dist/themes/overrides/CardContent.d.ts +0 -13
  422. package/dist/themes/overrides/CardContent.d.ts.map +0 -1
  423. package/dist/themes/overrides/Checkbox.d.ts +0 -122
  424. package/dist/themes/overrides/Checkbox.d.ts.map +0 -1
  425. package/dist/themes/overrides/Chip.d.ts +0 -208
  426. package/dist/themes/overrides/Chip.d.ts.map +0 -1
  427. package/dist/themes/overrides/Dialog.d.ts +0 -12
  428. package/dist/themes/overrides/Dialog.d.ts.map +0 -1
  429. package/dist/themes/overrides/DialogContentText.d.ts +0 -11
  430. package/dist/themes/overrides/DialogContentText.d.ts.map +0 -1
  431. package/dist/themes/overrides/DialogTitle.d.ts +0 -11
  432. package/dist/themes/overrides/DialogTitle.d.ts.map +0 -1
  433. package/dist/themes/overrides/Fab.d.ts +0 -159
  434. package/dist/themes/overrides/Fab.d.ts.map +0 -1
  435. package/dist/themes/overrides/IconButton.d.ts +0 -30
  436. package/dist/themes/overrides/IconButton.d.ts.map +0 -1
  437. package/dist/themes/overrides/InputBase.d.ts +0 -6
  438. package/dist/themes/overrides/InputBase.d.ts.map +0 -1
  439. package/dist/themes/overrides/InputLabel.d.ts +0 -22
  440. package/dist/themes/overrides/InputLabel.d.ts.map +0 -1
  441. package/dist/themes/overrides/LinearProgress.d.ts +0 -14
  442. package/dist/themes/overrides/LinearProgress.d.ts.map +0 -1
  443. package/dist/themes/overrides/Link.d.ts +0 -8
  444. package/dist/themes/overrides/Link.d.ts.map +0 -1
  445. package/dist/themes/overrides/ListItemButton.d.ts +0 -15
  446. package/dist/themes/overrides/ListItemButton.d.ts.map +0 -1
  447. package/dist/themes/overrides/ListItemIcon.d.ts +0 -11
  448. package/dist/themes/overrides/ListItemIcon.d.ts.map +0 -1
  449. package/dist/themes/overrides/ListItemText.d.ts +0 -12
  450. package/dist/themes/overrides/ListItemText.d.ts.map +0 -1
  451. package/dist/themes/overrides/LoadingButton.d.ts +0 -14
  452. package/dist/themes/overrides/LoadingButton.d.ts.map +0 -1
  453. package/dist/themes/overrides/OutlinedInput.d.ts +0 -96
  454. package/dist/themes/overrides/OutlinedInput.d.ts.map +0 -1
  455. package/dist/themes/overrides/Pagination.d.ts +0 -8
  456. package/dist/themes/overrides/Pagination.d.ts.map +0 -1
  457. package/dist/themes/overrides/PaginationItem.d.ts +0 -951
  458. package/dist/themes/overrides/PaginationItem.d.ts.map +0 -1
  459. package/dist/themes/overrides/Popover.d.ts +0 -10
  460. package/dist/themes/overrides/Popover.d.ts.map +0 -1
  461. package/dist/themes/overrides/Radio.d.ts +0 -123
  462. package/dist/themes/overrides/Radio.d.ts.map +0 -1
  463. package/dist/themes/overrides/Slider.d.ts +0 -66
  464. package/dist/themes/overrides/Slider.d.ts.map +0 -1
  465. package/dist/themes/overrides/Switch.d.ts +0 -91
  466. package/dist/themes/overrides/Switch.d.ts.map +0 -1
  467. package/dist/themes/overrides/Tab.d.ts +0 -21
  468. package/dist/themes/overrides/Tab.d.ts.map +0 -1
  469. package/dist/themes/overrides/TableBody.d.ts +0 -22
  470. package/dist/themes/overrides/TableBody.d.ts.map +0 -1
  471. package/dist/themes/overrides/TableCell.d.ts +0 -48
  472. package/dist/themes/overrides/TableCell.d.ts.map +0 -1
  473. package/dist/themes/overrides/TableFooter.d.ts +0 -12
  474. package/dist/themes/overrides/TableFooter.d.ts.map +0 -1
  475. package/dist/themes/overrides/TableHead.d.ts +0 -12
  476. package/dist/themes/overrides/TableHead.d.ts.map +0 -1
  477. package/dist/themes/overrides/TablePagination.d.ts +0 -13
  478. package/dist/themes/overrides/TablePagination.d.ts.map +0 -1
  479. package/dist/themes/overrides/TableRow.d.ts +0 -22
  480. package/dist/themes/overrides/TableRow.d.ts.map +0 -1
  481. package/dist/themes/overrides/Tabs.d.ts +0 -10
  482. package/dist/themes/overrides/Tabs.d.ts.map +0 -1
  483. package/dist/themes/overrides/ToggleButton.d.ts +0 -17
  484. package/dist/themes/overrides/ToggleButton.d.ts.map +0 -1
  485. package/dist/themes/overrides/Tooltip.d.ts +0 -10
  486. package/dist/themes/overrides/Tooltip.d.ts.map +0 -1
  487. package/dist/themes/overrides/TreeItem.d.ts +0 -15
  488. package/dist/themes/overrides/TreeItem.d.ts.map +0 -1
  489. package/dist/themes/overrides/Typography.d.ts +0 -10
  490. package/dist/themes/overrides/Typography.d.ts.map +0 -1
  491. package/dist/themes/overrides/index.d.ts +0 -2
  492. package/dist/themes/overrides/index.d.ts.map +0 -1
  493. package/dist/themes/palette.d.ts +0 -3
  494. package/dist/themes/palette.d.ts.map +0 -1
  495. package/dist/themes/shadows.d.ts +0 -21
  496. package/dist/themes/shadows.d.ts.map +0 -1
  497. package/dist/themes/theme/default.d.ts +0 -90
  498. package/dist/themes/theme/default.d.ts.map +0 -1
  499. package/dist/themes/theme/index.d.ts +0 -91
  500. package/dist/themes/theme/index.d.ts.map +0 -1
  501. package/dist/themes/theme/theme1.d.ts +0 -84
  502. package/dist/themes/theme/theme1.d.ts.map +0 -1
  503. package/dist/themes/theme/theme2.d.ts +0 -84
  504. package/dist/themes/theme/theme2.d.ts.map +0 -1
  505. package/dist/themes/theme/theme3.d.ts +0 -84
  506. package/dist/themes/theme/theme3.d.ts.map +0 -1
  507. package/dist/themes/theme/theme4.d.ts +0 -84
  508. package/dist/themes/theme/theme4.d.ts.map +0 -1
  509. package/dist/themes/theme/theme5.d.ts +0 -84
  510. package/dist/themes/theme/theme5.d.ts.map +0 -1
  511. package/dist/themes/theme/theme6.d.ts +0 -84
  512. package/dist/themes/theme/theme6.d.ts.map +0 -1
  513. package/dist/themes/theme/theme7.d.ts +0 -84
  514. package/dist/themes/theme/theme7.d.ts.map +0 -1
  515. package/dist/themes/theme/theme8.d.ts +0 -84
  516. package/dist/themes/theme/theme8.d.ts.map +0 -1
  517. package/dist/themes/typography.d.ts +0 -69
  518. package/dist/themes/typography.d.ts.map +0 -1
  519. package/dist/types.d.ts +0 -58
  520. package/dist/types.d.ts.map +0 -1
  521. package/dist/utils/index.d.ts +0 -3
  522. package/dist/utils/index.d.ts.map +0 -1
  523. package/dist/utils/lang.d.ts +0 -2
  524. package/dist/utils/lang.d.ts.map +0 -1
  525. package/dist/utils/time.d.ts +0 -4
  526. package/dist/utils/time.d.ts.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applica-software-guru/react-admin",
3
- "version": "1.3.144",
3
+ "version": "1.3.145",
4
4
  "private": false,
5
5
  "repository": {
6
6
  "type": "git",
@@ -0,0 +1,141 @@
1
+ import * as React from 'react';
2
+ import { Children, ReactNode, cloneElement, isValidElement, useCallback } from 'react';
3
+ import PropTypes from 'prop-types';
4
+ import { styled, lighten } from '@mui/material/styles';
5
+ import clsx from 'clsx';
6
+ import Toolbar from '@mui/material/Toolbar';
7
+ import Typography from '@mui/material/Typography';
8
+
9
+ import IconButton from '@mui/material/IconButton';
10
+ import CloseIcon from '@mui/icons-material/Close';
11
+ import { useTranslate, sanitizeListRestProps, useListContext, Identifier } from 'ra-core';
12
+ import { TopToolbar } from 'react-admin';
13
+
14
+ const BulkActionsToolbar = (props: BulkActionsToolbarProps) => {
15
+ const { label = 'ra.action.bulk_actions', children, className, ...rest } = props;
16
+ const { filterValues, resource, selectedIds = [], onUnselectItems } = useListContext(props);
17
+
18
+ const translate = useTranslate();
19
+
20
+ const handleUnselectAllClick = useCallback(() => {
21
+ onUnselectItems();
22
+ }, [onUnselectItems]);
23
+
24
+ return (
25
+ <Root className={className}>
26
+ <Toolbar
27
+ data-test="bulk-actions-toolbar"
28
+ className={clsx(BulkActionsToolbarClasses.toolbar, {
29
+ [BulkActionsToolbarClasses.collapsed]: selectedIds.length === 0
30
+ })}
31
+ {...sanitizeListRestProps(rest)}
32
+ >
33
+ <div className={BulkActionsToolbarClasses.title}>
34
+ <IconButton
35
+ className={BulkActionsToolbarClasses.icon}
36
+ aria-label={translate('ra.action.unselect')}
37
+ title={translate('ra.action.unselect')}
38
+ onClick={handleUnselectAllClick}
39
+ size="small"
40
+ >
41
+ <CloseIcon fontSize="small" />
42
+ </IconButton>
43
+ <Typography color="inherit" variant="subtitle1">
44
+ {translate(label, {
45
+ _: label,
46
+ // eslint-disable-next-line camelcase
47
+ smart_count: selectedIds.length
48
+ })}
49
+ </Typography>
50
+ </div>
51
+ <TopToolbar className={BulkActionsToolbarClasses.topToolbar}>
52
+ {Children.map(children, (child) =>
53
+ isValidElement<any>(child)
54
+ ? cloneElement(child, {
55
+ filterValues,
56
+ resource,
57
+ selectedIds
58
+ })
59
+ : null
60
+ )}
61
+ </TopToolbar>
62
+ </Toolbar>
63
+ </Root>
64
+ );
65
+ };
66
+
67
+ BulkActionsToolbar.propTypes = {
68
+ children: PropTypes.node,
69
+ label: PropTypes.string
70
+ };
71
+
72
+ export interface BulkActionsToolbarProps {
73
+ children?: ReactNode;
74
+ label?: string;
75
+ selectedIds?: Identifier[];
76
+ className?: string;
77
+ }
78
+
79
+ const PREFIX = 'RaBulkActionsToolbar';
80
+
81
+ export const BulkActionsToolbarClasses = {
82
+ toolbar: `${PREFIX}-toolbar`,
83
+ topToolbar: `${PREFIX}-topToolbar`,
84
+ buttons: `${PREFIX}-buttons`,
85
+ collapsed: `${PREFIX}-collapsed`,
86
+ title: `${PREFIX}-title`,
87
+ icon: `${PREFIX}-icon`
88
+ };
89
+
90
+ const Root = styled('div', {
91
+ name: PREFIX,
92
+ overridesResolver: (props, styles) => styles.root
93
+ })(({ theme }) => ({
94
+ position: 'relative',
95
+ [`& .${BulkActionsToolbarClasses.toolbar}`]: {
96
+ position: 'absolute',
97
+ left: 0,
98
+ right: 0,
99
+ zIndex: 3,
100
+ color: theme.palette.mode === 'light' ? theme.palette.primary.main : theme.palette.text.primary,
101
+ justifyContent: 'space-between',
102
+ backgroundColor: theme.palette.mode === 'light' ? lighten(theme.palette.primary.light, 0.8) : theme.palette.primary.dark,
103
+ minHeight: theme.spacing(6),
104
+ height: theme.spacing(6),
105
+ transform: `translateY(-${theme.spacing(6)})`,
106
+ transition: `${theme.transitions.create('height')}, ${theme.transitions.create('min-height')}, ${theme.transitions.create(
107
+ 'transform'
108
+ )}`,
109
+ borderTopLeftRadius: theme.shape.borderRadius,
110
+ borderTopRightRadius: theme.shape.borderRadius
111
+ },
112
+
113
+ [`& .${BulkActionsToolbarClasses.topToolbar}`]: {
114
+ paddingBottom: theme.spacing(1),
115
+ minHeight: 'auto',
116
+ [theme.breakpoints.down('sm')]: {
117
+ backgroundColor: 'transparent'
118
+ }
119
+ },
120
+
121
+ [`& .${BulkActionsToolbarClasses.buttons}`]: {},
122
+
123
+ [`& .${BulkActionsToolbarClasses.collapsed}`]: {
124
+ minHeight: 0,
125
+ height: 0,
126
+ transform: `translateY(0)`,
127
+ overflowY: 'hidden'
128
+ },
129
+
130
+ [`& .${BulkActionsToolbarClasses.title}`]: {
131
+ display: 'flex',
132
+ flex: '0 0 auto'
133
+ },
134
+
135
+ [`& .${BulkActionsToolbarClasses.icon}`]: {
136
+ marginLeft: '-0.5em',
137
+ marginRight: '0.5em'
138
+ }
139
+ }));
140
+
141
+ export default BulkActionsToolbar;
@@ -0,0 +1,100 @@
1
+ import * as React from 'react';
2
+ import PropTypes from 'prop-types';
3
+ import { useListContext, Button } from 'react-admin';
4
+ import { Box, Fab, Fade, List, ListItem, Popover, Theme, useMediaQuery } from '@mui/material';
5
+ import CloseIcon from '@mui/icons-material/Close';
6
+ const noSpaceOutside = {
7
+ p: 0,
8
+ m: 0
9
+ };
10
+ const moreSpaceInside = {
11
+ p: 2,
12
+ m: 0,
13
+ borderRadius: 0,
14
+ width: '100%'
15
+ };
16
+
17
+ const BulkFloatingActionsToolbar = (props: BulkFloatingActionsToolbarProps) => {
18
+ const { children } = props;
19
+ const [anchorEl, setAnchorEl] = React.useState<HTMLButtonElement | null>(null);
20
+
21
+ const handleClick = (event: React.MouseEvent<HTMLButtonElement>) => {
22
+ setAnchorEl(event.currentTarget);
23
+ };
24
+
25
+ const handleClose = () => {
26
+ setAnchorEl(null);
27
+ };
28
+ const isSmall = useMediaQuery((theme: Theme) => theme.breakpoints.down('md'));
29
+ const open = Boolean(anchorEl);
30
+ const id = open ? 'simple-popover' : undefined;
31
+ const { filterValues, resource, selectedIds = [], onUnselectItems } = useListContext(props);
32
+
33
+ const handleUnselectAllClick = React.useCallback(() => {
34
+ onUnselectItems();
35
+ setAnchorEl(null);
36
+ }, [onUnselectItems, setAnchorEl]);
37
+
38
+ return (
39
+ <Fade in={selectedIds !== undefined && selectedIds.length > 0}>
40
+ <Box
41
+ sx={{
42
+ position: 'fixed',
43
+ bottom: '16px',
44
+ right: '16px'
45
+ }}
46
+ >
47
+ <Fab color="primary" aria-label="manage" onClick={handleClick}>
48
+ {selectedIds?.length}
49
+ </Fab>
50
+ <Popover
51
+ id={id}
52
+ open={open}
53
+ anchorEl={anchorEl}
54
+ onClose={handleClose}
55
+ anchorOrigin={{
56
+ vertical: 'top',
57
+ horizontal: isSmall ? 'center' : 'right'
58
+ }}
59
+ transformOrigin={{
60
+ vertical: 'bottom',
61
+ horizontal: isSmall ? 'center' : 'right'
62
+ }}
63
+ disableScrollLock
64
+ elevation={10}
65
+ >
66
+ <List sx={noSpaceOutside}>
67
+ <ListItem sx={noSpaceOutside}>
68
+ <Button onClick={handleUnselectAllClick} sx={moreSpaceInside} label="ra.action.unselect" startIcon={<CloseIcon />}>
69
+ <CloseIcon />
70
+ </Button>
71
+ </ListItem>
72
+ {React.Children.map(children, (child) => (
73
+ <ListItem sx={noSpaceOutside}>
74
+ {React.isValidElement<any>(child)
75
+ ? React.cloneElement(child, {
76
+ filterValues,
77
+ resource,
78
+ selectedIds,
79
+ sx: moreSpaceInside,
80
+ ...(child.props?.popover ? { closePopover: handleClose } : {})
81
+ })
82
+ : null}
83
+ </ListItem>
84
+ ))}
85
+ </List>
86
+ </Popover>
87
+ </Box>
88
+ </Fade>
89
+ );
90
+ };
91
+
92
+ BulkFloatingActionsToolbar.propTypes = {
93
+ children: PropTypes.node
94
+ };
95
+
96
+ export interface BulkFloatingActionsToolbarProps {
97
+ children?: React.ReactNode | React.ReactNode[];
98
+ }
99
+
100
+ export default BulkFloatingActionsToolbar;
@@ -0,0 +1,345 @@
1
+ import {
2
+ DatagridProps as RaDatagridProps,
3
+ DatagridHeader,
4
+ DatagridLoading,
5
+ DatagridBody,
6
+ PureDatagridBody,
7
+ BulkDeleteButton,
8
+ ListNoResults,
9
+ DatagridClasses,
10
+ DatagridRoot
11
+ } from 'react-admin';
12
+
13
+ import * as React from 'react';
14
+ import { cloneElement, createElement, isValidElement, useCallback, useRef, useEffect, FC, useMemo } from 'react';
15
+ import PropTypes from 'prop-types';
16
+ import { sanitizeListRestProps, useListContext, Identifier } from 'ra-core';
17
+ import { Table } from '@mui/material';
18
+ import clsx from 'clsx';
19
+ import union from 'lodash/union';
20
+ import difference from 'lodash/difference';
21
+ import DatagridContextProvider from './DatagridContextProvider';
22
+ import BulkActionsToolbar from '../BulkActionsToolbar';
23
+
24
+ const defaultBulkActionButtons = <BulkDeleteButton />;
25
+
26
+ export type DatagridProps = RaDatagridProps & {
27
+ /**
28
+ * An alternative to bulkActionButtons, to be used when the actions are too complex to be expressed.
29
+ * In this case you are free to fully control the rendering of the bulk actions toolbar.
30
+ * @see BulkActionsToolbar
31
+ * @example <caption>Using the BulkActionsToolbar component</caption>
32
+ * import { BulkActionsToolbar } from '@applica-software-guru/react-admin';
33
+ * import { BulkDeleteButton } from 'react-admin';
34
+ *
35
+ * const PostBulkActionButtons = props => (
36
+ * <BulkActionsToolbar {...props}>
37
+ * <BulkDeleteButton />
38
+ * // add your custom actions here
39
+ * </BulkActionsToolbar>
40
+ * );
41
+ *
42
+ * @example <caption>Using BulkFloatingActionsToolbar component</caption>
43
+ * import { BulkActionsToolbar } from '@applica-software-guru/react-admin';
44
+ * import { BulkDeleteButton } from 'react-admin';
45
+ *
46
+ * const PostBulkActionButtons = props => (
47
+ * <BulkActionsToolbar {...props}>
48
+ * <BulkDeleteButton />
49
+ * // add your custom actions here
50
+ * </BulkActionsToolbar>
51
+ * );
52
+ *
53
+ */
54
+ bulkActionsToolbar: React.ReactNode | React.FC | boolean;
55
+ };
56
+
57
+ /**
58
+ * The Datagrid component renders a list of records as a table.
59
+ * It is usually used as a child of the <List> and <ReferenceManyField> components.
60
+ *
61
+ * Props:
62
+ * - body
63
+ * - bulkActionButtons
64
+ * - children
65
+ * - empty
66
+ * - expand
67
+ * - header
68
+ * - hover
69
+ * - isRowExpandable
70
+ * - isRowSelectable
71
+ * - optimized
72
+ * - rowClick
73
+ * - rowSx
74
+ * - size
75
+ * - sx
76
+ *
77
+ * @example // Display all posts as a datagrid
78
+ * const postRowSx = (record, index) => ({
79
+ * backgroundColor: record.nb_views >= 500 ? '#efe' : 'white',
80
+ * });
81
+ * export const PostList = () => (
82
+ * <List>
83
+ * <Datagrid rowSx={postRowSx}>
84
+ * <TextField source="id" />
85
+ * <TextField source="title" />
86
+ * <TextField source="body" />
87
+ * <EditButton />
88
+ * </Datagrid>
89
+ * </List>
90
+ * );
91
+ *
92
+ * @example // Display all the comments of the current post as a datagrid
93
+ * <ReferenceManyField reference="comments" target="post_id">
94
+ * <Datagrid>
95
+ * <TextField source="id" />
96
+ * <TextField source="body" />
97
+ * <DateField source="created_at" />
98
+ * <EditButton />
99
+ * </Datagrid>
100
+ * </ReferenceManyField>
101
+ *
102
+ * @example // Usage outside of a <List> or a <ReferenceManyField>.
103
+ *
104
+ * const sort = { field: 'published_at', order: 'DESC' };
105
+ *
106
+ * export const MyCustomList = (props) => {
107
+ * const { data, total, isLoading } = useGetList(
108
+ * 'posts',
109
+ * { pagination: { page: 1, perPage: 10 }, sort: sort }
110
+ * );
111
+ *
112
+ * return (
113
+ * <Datagrid
114
+ * data={data}
115
+ * total={total}
116
+ * isLoading={isLoading}
117
+ * sort={sort}
118
+ * selectedIds={[]}
119
+ * setSort={() => {
120
+ * console.log('set sort');
121
+ * }}
122
+ * onSelect={() => {
123
+ * console.log('on select');
124
+ * }}
125
+ * onToggleItem={() => {
126
+ * console.log('on toggle item');
127
+ * }}
128
+ * >
129
+ * <TextField source="id" />
130
+ * <TextField source="title" />
131
+ * </Datagrid>
132
+ * );
133
+ * }
134
+ */
135
+ export const Datagrid: FC<DatagridProps> = React.forwardRef((props, ref) => {
136
+ const {
137
+ optimized = false,
138
+ body = optimized ? PureDatagridBody : DatagridBody,
139
+ header = DatagridHeader,
140
+ children,
141
+ className,
142
+ empty = DefaultEmpty,
143
+ expand,
144
+ bulkActionsToolbar = false,
145
+ bulkActionButtons = defaultBulkActionButtons,
146
+ hover,
147
+ isRowSelectable,
148
+ isRowExpandable,
149
+ resource,
150
+ rowClick,
151
+ rowSx,
152
+ rowStyle,
153
+ size = 'small',
154
+ sx,
155
+ expandSingle = false,
156
+ ...rest
157
+ } = props;
158
+
159
+ const { sort, data, isLoading, onSelect, onToggleItem, selectedIds, setSort, total } = useListContext(props);
160
+
161
+ const hasBulkActions = !!bulkActionButtons !== false;
162
+
163
+ const contextValue = useMemo(() => ({ isRowExpandable, expandSingle }), [isRowExpandable, expandSingle]);
164
+
165
+ const lastSelected = useRef(null);
166
+
167
+ useEffect(() => {
168
+ if (!selectedIds || selectedIds.length === 0) {
169
+ lastSelected.current = null;
170
+ }
171
+ }, [JSON.stringify(selectedIds)]); // eslint-disable-line react-hooks/exhaustive-deps
172
+
173
+ // we manage row selection at the datagrid level to allow shift+click to select an array of rows
174
+ const handleToggleItem = useCallback(
175
+ // @ts-ignore
176
+ (id, event) => {
177
+ const ids = data.map((record) => record.id);
178
+ const lastSelectedIndex = ids.indexOf(lastSelected.current);
179
+ lastSelected.current = event.target.checked ? id : null;
180
+
181
+ if (event.shiftKey && lastSelectedIndex !== -1) {
182
+ const index = ids.indexOf(id);
183
+ const idsBetweenSelections = ids.slice(Math.min(lastSelectedIndex, index), Math.max(lastSelectedIndex, index) + 1);
184
+
185
+ const newSelectedIds = event.target.checked
186
+ ? union(selectedIds, idsBetweenSelections)
187
+ : difference(selectedIds, idsBetweenSelections);
188
+
189
+ onSelect(
190
+ isRowSelectable
191
+ ? newSelectedIds.filter((id: Identifier) => isRowSelectable(data.find((record) => record.id === id)))
192
+ : newSelectedIds
193
+ );
194
+ } else {
195
+ onToggleItem(id);
196
+ }
197
+ },
198
+ [data, isRowSelectable, onSelect, onToggleItem, selectedIds]
199
+ );
200
+
201
+ if (isLoading === true) {
202
+ return (
203
+ <DatagridLoading
204
+ className={className}
205
+ expand={expand}
206
+ hasBulkActions={hasBulkActions}
207
+ nbChildren={React.Children.count(children)}
208
+ size={size}
209
+ />
210
+ );
211
+ }
212
+
213
+ /**
214
+ * Once loaded, the data for the list may be empty. Instead of
215
+ * displaying the table header with zero data rows,
216
+ * the Datagrid displays the empty component.
217
+ */
218
+ if (data == null || data.length === 0 || total === 0) {
219
+ if (empty) {
220
+ return empty;
221
+ }
222
+
223
+ return null;
224
+ }
225
+
226
+ /**
227
+ * After the initial load, if the data for the list isn't empty,
228
+ * and even if the data is refreshing (e.g. after a filter change),
229
+ * the datagrid displays the current data.
230
+ */
231
+ return (
232
+ <DatagridContextProvider value={contextValue}>
233
+ <DatagridRoot sx={sx} className={clsx(DatagridClasses.root, className)}>
234
+ {bulkActionsToolbar != null && isValidElement(bulkActionsToolbar) ? (
235
+ cloneElement<any>(bulkActionsToolbar, {
236
+ selectedIds,
237
+ total
238
+ })
239
+ ) : bulkActionButtons !== false ? (
240
+ <BulkActionsToolbar>{isValidElement(bulkActionButtons) ? bulkActionButtons : defaultBulkActionButtons}</BulkActionsToolbar>
241
+ ) : null}
242
+ <div className={DatagridClasses.tableWrapper}>
243
+ <Table ref={ref} className={DatagridClasses.table} size={size} {...sanitizeRestProps(rest)}>
244
+ {createOrCloneElement(
245
+ header,
246
+ {
247
+ children,
248
+ sort,
249
+ data,
250
+ hasExpand: !!expand,
251
+ hasBulkActions,
252
+ isRowSelectable,
253
+ onSelect,
254
+ resource,
255
+ selectedIds,
256
+ setSort
257
+ },
258
+ children
259
+ )}
260
+ {createOrCloneElement(
261
+ body,
262
+ {
263
+ expand,
264
+ rowClick,
265
+ data,
266
+ hasBulkActions,
267
+ hover,
268
+ onToggleItem: handleToggleItem,
269
+ resource,
270
+ rowSx,
271
+ rowStyle,
272
+ selectedIds,
273
+ isRowSelectable
274
+ },
275
+ children
276
+ )}
277
+ </Table>
278
+ </div>
279
+ </DatagridRoot>
280
+ </DatagridContextProvider>
281
+ );
282
+ });
283
+
284
+ // @ts-ignore
285
+ const createOrCloneElement = (element, props, children) =>
286
+ isValidElement(element) ? cloneElement(element, props, children) : createElement(element, props, children);
287
+
288
+ Datagrid.propTypes = {
289
+ // @ts-ignore
290
+ body: PropTypes.oneOfType([PropTypes.element, PropTypes.elementType]),
291
+ // @ts-ignore-line
292
+ bulkActionButtons: PropTypes.oneOfType([PropTypes.bool, PropTypes.element]),
293
+ children: PropTypes.node.isRequired,
294
+ className: PropTypes.string,
295
+ // @ts-ignore
296
+ sort: PropTypes.exact({
297
+ field: PropTypes.string,
298
+ order: PropTypes.oneOf(['ASC', 'DESC'] as const)
299
+ }),
300
+ data: PropTypes.arrayOf(PropTypes.any),
301
+ empty: PropTypes.element,
302
+ // @ts-ignore
303
+ expand: PropTypes.oneOfType([PropTypes.element, PropTypes.elementType]),
304
+ // @ts-ignore
305
+ header: PropTypes.oneOfType([PropTypes.element, PropTypes.elementType]),
306
+ hover: PropTypes.bool,
307
+ isLoading: PropTypes.bool,
308
+ onSelect: PropTypes.func,
309
+ onToggleItem: PropTypes.func,
310
+ resource: PropTypes.string,
311
+ // @ts-ignore
312
+ rowClick: PropTypes.oneOfType([PropTypes.string, PropTypes.func, PropTypes.bool]),
313
+ rowSx: PropTypes.func,
314
+ rowStyle: PropTypes.func,
315
+ selectedIds: PropTypes.arrayOf(PropTypes.any),
316
+ setSort: PropTypes.func,
317
+ total: PropTypes.number,
318
+ isRowSelectable: PropTypes.func,
319
+ isRowExpandable: PropTypes.func,
320
+ expandSingle: PropTypes.bool
321
+ };
322
+
323
+ const injectedProps = [
324
+ 'isRequired',
325
+ 'setFilter',
326
+ 'setPagination',
327
+ 'limitChoicesToValue',
328
+ 'translateChoice',
329
+ // Datagrid may be used as an alternative to SelectInput
330
+ 'field',
331
+ 'fieldState',
332
+ 'formState'
333
+ ];
334
+
335
+ // @ts-ignore
336
+ const sanitizeRestProps = (props) =>
337
+ Object.keys(sanitizeListRestProps(props))
338
+ .filter((propName) => !injectedProps.includes(propName))
339
+ .reduce((acc, key) => ({ ...acc, [key]: props[key] }), {});
340
+
341
+ Datagrid.displayName = 'Datagrid';
342
+
343
+ const DefaultEmpty = <ListNoResults />;
344
+
345
+ export default Datagrid;
@@ -0,0 +1,13 @@
1
+ import { createContext } from 'react';
2
+ import { RaRecord } from 'ra-core';
3
+
4
+ const DatagridContext = createContext<DatagridContextValue>({});
5
+
6
+ DatagridContext.displayName = 'DatagridContext';
7
+
8
+ export type DatagridContextValue = {
9
+ isRowExpandable?: (record: RaRecord) => boolean;
10
+ expandSingle?: boolean;
11
+ };
12
+
13
+ export default DatagridContext;
@@ -0,0 +1,8 @@
1
+ import React, { ReactElement, ReactNode } from 'react';
2
+ import DatagridContext, { DatagridContextValue } from './DatagridContext';
3
+
4
+ const DatagridContextProvider = ({ children, value }: { children: ReactNode; value: DatagridContextValue }): ReactElement => (
5
+ <DatagridContext.Provider value={value}>{children}</DatagridContext.Provider>
6
+ );
7
+
8
+ export default DatagridContextProvider;
@@ -1,8 +1,9 @@
1
- import { DatagridProps, Datagrid as RaDatagrid } from 'react-admin';
1
+ import { Datagrid as RaDatagrid } from './Datagrid';
2
+ import { DatagridProps } from 'react-admin';
2
3
 
3
4
  import { styled } from '@mui/material/styles';
4
5
 
5
- const ApplicaStyledDatagrid = styled(RaDatagrid, {
6
+ const StyledDatagrid = styled(RaDatagrid, {
6
7
  name: 'ApplicaDatagrid',
7
8
  slot: 'root'
8
9
  })(() => ({
@@ -40,13 +41,9 @@ const ApplicaStyledDatagrid = styled(RaDatagrid, {
40
41
  * @param {DatagridProps} props
41
42
  * @returns {JSX.Element}
42
43
  */
43
- const Datagrid = (props: DatagridProps): JSX.Element => <ApplicaStyledDatagrid {...props} />;
44
-
45
- Datagrid.propTypes = {
46
- ...RaDatagrid.propTypes
47
- };
48
- Datagrid.defaultProps = {
49
- ...RaDatagrid.defaultProps
44
+ const Datagrid = (props: DatagridProps): JSX.Element => {
45
+ // @ts-ignore
46
+ return <StyledDatagrid {...props} />;
50
47
  };
51
48
 
52
49
  export default Datagrid;
@@ -1,5 +1,6 @@
1
- import Datagrid from './Datagrid';
2
- import Empty from './Empty';
3
- import List from './List';
4
- import NotificationList from './NotificationList';
5
- export { Datagrid, Empty, NotificationList, List };
1
+ export { default as Datagrid } from './Datagrid';
2
+ export { default as Empty } from './Empty';
3
+ export { default as NotificationList } from './NotificationList';
4
+ export { default as List } from './List';
5
+ export { default as BulkActionsToolbar } from './BulkActionsToolbar';
6
+ export { default as BulkFloatingActionsToolbar } from './BulkFloatingActionsToolbar';
@@ -0,0 +1,18 @@
1
+ import { LongForm, MainCard, TextInput } from '@applica-software-guru/react-admin';
2
+ import { Grid } from '@mui/material';
3
+
4
+ const TestModelForm = () => (
5
+ <LongForm>
6
+ <LongForm.Tab id="root" label="Root">
7
+ <MainCard title="Info">
8
+ <Grid container spacing={2}>
9
+ <Grid item xs={12}>
10
+ <TextInput source="name" fullWidth />
11
+ </Grid>
12
+ </Grid>
13
+ </MainCard>
14
+ </LongForm.Tab>
15
+ </LongForm>
16
+ );
17
+
18
+ export default TestModelForm;