@applica-software-guru/react-admin 1.0.32 → 1.0.34

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 (350) hide show
  1. package/.eslintrc.json +43 -0
  2. package/.husky/pre-commit +4 -0
  3. package/.nvmrc +1 -0
  4. package/.prettierrc +8 -0
  5. package/bitbucket-pipelines.yml +30 -0
  6. package/dist/Admin.d.ts +1 -1
  7. package/dist/ApplicaAdmin.d.ts +3 -3
  8. package/dist/ApplicaAdmin.d.ts.map +1 -1
  9. package/dist/components/@extended/AnimateButton.d.ts +5 -5
  10. package/dist/components/@extended/Avatar.d.ts +3 -3
  11. package/dist/components/@extended/Breadcrumbs.d.ts +5 -5
  12. package/dist/components/@extended/Dot.d.ts +1 -1
  13. package/dist/components/@extended/Tooltip.d.ts +1 -1
  14. package/dist/components/ActionsMenu.d.ts +1 -1
  15. package/dist/components/ActionsMenu.d.ts.map +1 -1
  16. package/dist/components/Layout/Drawer/DrawerContent/Navigation/NavGroup.d.ts +1 -1
  17. package/dist/components/Layout/Drawer/DrawerContent/Navigation/NavGroup.d.ts.map +1 -1
  18. package/dist/components/Layout/Drawer/DrawerHeader/DrawerHeaderStyled.d.ts +5 -5
  19. package/dist/components/Layout/Header/AppBarStyled.d.ts +13 -13
  20. package/dist/components/Layout/Header/HeaderContent/NotificationItem.d.ts +3 -3
  21. package/dist/components/Logo.d.ts +2 -2
  22. package/dist/components/MenuPopover/MenuPopover.d.ts +1 -1
  23. package/dist/components/Notification.d.ts +5 -1
  24. package/dist/components/Notification.d.ts.map +1 -1
  25. package/dist/components/ra-buttons/CreateInDialogButton.d.ts +16 -1
  26. package/dist/components/ra-buttons/CreateInDialogButton.d.ts.map +1 -1
  27. package/dist/components/ra-buttons/ImpersonateUserButton.d.ts +1 -1
  28. package/dist/components/ra-fields/ActionsField.d.ts +1 -1
  29. package/dist/components/ra-fields/ActionsField.d.ts.map +1 -1
  30. package/dist/components/ra-fields/AttachmentField.d.ts +19 -1
  31. package/dist/components/ra-fields/AttachmentField.d.ts.map +1 -1
  32. package/dist/components/ra-fields/BaseAttachmentField.d.ts +2 -2
  33. package/dist/components/ra-fields/CoverField.d.ts +19 -1
  34. package/dist/components/ra-fields/CoverField.d.ts.map +1 -1
  35. package/dist/components/ra-fields/EmailField.d.ts +12 -1
  36. package/dist/components/ra-fields/FileField.d.ts +19 -1
  37. package/dist/components/ra-fields/FileField.d.ts.map +1 -1
  38. package/dist/components/ra-fields/ImageField.d.ts +15 -1
  39. package/dist/components/ra-fields/ImageField.d.ts.map +1 -1
  40. package/dist/components/ra-fields/ReadonlyField.d.ts +1 -1
  41. package/dist/components/ra-fields/ReferenceManyField.d.ts +32 -2
  42. package/dist/components/ra-fields/ReferenceManyField.d.ts.map +1 -1
  43. package/dist/components/ra-forms/Edit.d.ts +24 -1
  44. package/dist/components/ra-forms/Edit.d.ts.map +1 -1
  45. package/dist/components/ra-forms/LongForm/LongFormHeader.d.ts +1 -1
  46. package/dist/components/ra-forms/LongForm/LongFormHeader.d.ts.map +1 -1
  47. package/dist/components/ra-forms/LongForm/LongFormTab.d.ts +4 -4
  48. package/dist/components/ra-forms/LongForm/LongFormTab.d.ts.map +1 -1
  49. package/dist/components/ra-forms/LongForm/LongFormTabs.d.ts +2 -2
  50. package/dist/components/ra-forms/SimpleForm.d.ts +13 -1
  51. package/dist/components/ra-forms/SimpleForm.d.ts.map +1 -1
  52. package/dist/components/ra-forms/TabbedForm.d.ts +9 -1
  53. package/dist/components/ra-forms/TabbedForm.d.ts.map +1 -1
  54. package/dist/components/ra-forms/Toolbar.d.ts +5 -1
  55. package/dist/components/ra-inputs/AttachmentInput.d.ts +20 -1
  56. package/dist/components/ra-inputs/AttachmentInput.d.ts.map +1 -1
  57. package/dist/components/ra-inputs/AutocompleteArrayInput.d.ts +1 -2
  58. package/dist/components/ra-inputs/AutocompleteArrayInput.d.ts.map +1 -1
  59. package/dist/components/ra-inputs/AutocompleteInput.d.ts +1 -2
  60. package/dist/components/ra-inputs/AutocompleteInput.d.ts.map +1 -1
  61. package/dist/components/ra-inputs/BooleanInput.d.ts +19 -2
  62. package/dist/components/ra-inputs/BooleanInput.d.ts.map +1 -1
  63. package/dist/components/ra-inputs/DateInput.d.ts +11 -1
  64. package/dist/components/ra-inputs/FileInput.d.ts +21 -1
  65. package/dist/components/ra-inputs/FileInput.d.ts.map +1 -1
  66. package/dist/components/ra-inputs/LabeledInput.d.ts +2 -2
  67. package/dist/components/ra-inputs/NumberInput.d.ts +19 -2
  68. package/dist/components/ra-inputs/RecordInput.d.ts +1 -1
  69. package/dist/components/ra-inputs/ReferenceArrayInput.d.ts +25 -2
  70. package/dist/components/ra-inputs/ReferenceArrayInput.d.ts.map +1 -1
  71. package/dist/components/ra-inputs/ReferenceInput.d.ts +26 -2
  72. package/dist/components/ra-inputs/ReferenceInput.d.ts.map +1 -1
  73. package/dist/components/ra-inputs/ReferenceManyInput.d.ts +34 -2
  74. package/dist/components/ra-inputs/ReferenceManyInput.d.ts.map +1 -1
  75. package/dist/components/ra-inputs/SelectArrayInput.d.ts +18 -1
  76. package/dist/components/ra-inputs/SelectInput.d.ts +21 -1
  77. package/dist/components/ra-inputs/SmartTextInput.d.ts +17 -1
  78. package/dist/components/ra-inputs/SmartTextInput.d.ts.map +1 -1
  79. package/dist/components/ra-inputs/TextInput.d.ts +16 -2
  80. package/dist/components/ra-inputs/TimeInput.d.ts +11 -1
  81. package/dist/components/ra-lists/Datagrid.d.ts +616 -2
  82. package/dist/components/ra-lists/List.d.ts +28 -2
  83. package/dist/contexts/AppConfigContext.d.ts +1 -1
  84. package/dist/contexts/MenuConfigContext.d.ts +4 -4
  85. package/dist/dev/useCliErrorCatcher.d.ts +5 -5
  86. package/dist/hooks/useAppConfig.d.ts +1 -1
  87. package/dist/hooks/useBreadcrumbs.d.ts +2 -2
  88. package/dist/hooks/useMenu.d.ts +2 -2
  89. package/dist/hooks/useMenu.d.ts.map +1 -1
  90. package/dist/hooks/useMenuConfig.d.ts +2 -2
  91. package/dist/i18n/createI18nProvider.d.ts +1 -1
  92. package/dist/i18n/useI18nCatcher.d.ts +4 -4
  93. package/dist/i18n/useI18nLanguages.d.ts +4 -4
  94. package/dist/i18n/useI18nProvider.d.ts +2 -2
  95. package/dist/index.d.ts +1 -1
  96. package/dist/react-admin.cjs.js +25 -25
  97. package/dist/react-admin.es.js +304 -315
  98. package/dist/react-admin.umd.js +25 -25
  99. package/dist/themes/overrides/PaginationItem.d.ts +72 -72
  100. package/jsconfig.json +31 -0
  101. package/jsconfig.node.json +10 -0
  102. package/package.json +6 -5
  103. package/playground/config-overrides.js +31 -0
  104. package/playground/jsconfig.json +9 -0
  105. package/playground/package-lock.json +17764 -0
  106. package/playground/package.json +69 -0
  107. package/playground/public/favicon-dark.png +0 -0
  108. package/playground/public/favicon-light.png +0 -0
  109. package/playground/public/index.html +46 -0
  110. package/playground/src/App.js +49 -0
  111. package/playground/src/build.json +1 -0
  112. package/playground/src/components/index.js +5 -0
  113. package/playground/src/components/pages/CustomPage.jsx +7 -0
  114. package/playground/src/components/pages/index.jsx +2 -0
  115. package/playground/src/components/ra-buttons/index.js +1 -0
  116. package/playground/src/components/ra-fields/UserPictureField.js +20 -0
  117. package/playground/src/components/ra-fields/index.js +2 -0
  118. package/playground/src/components/ra-forms/DeviceForm.js +36 -0
  119. package/playground/src/components/ra-forms/I18nMessageForm.js +24 -0
  120. package/playground/src/components/ra-forms/UserForm.js +51 -0
  121. package/playground/src/components/ra-forms/index.js +5 -0
  122. package/playground/src/components/ra-inputs/LangSelectInput.js +4 -0
  123. package/playground/src/components/ra-inputs/YesOrNoSelectInput.js +14 -0
  124. package/playground/src/components/ra-inputs/index.js +3 -0
  125. package/playground/src/components/ra-lists/DeviceList.js +33 -0
  126. package/playground/src/components/ra-lists/I18nMessageList.js +20 -0
  127. package/playground/src/components/ra-lists/UserList.js +96 -0
  128. package/playground/src/components/ra-lists/index.js +4 -0
  129. package/playground/src/config.js +19 -0
  130. package/playground/src/contexts/index.js +1 -0
  131. package/playground/src/hooks/index.js +1 -0
  132. package/playground/src/index.js +10 -0
  133. package/playground/src/menu.js +72 -0
  134. package/playground/src/react-app-env.d.js +1 -0
  135. package/playground/src/reportWebVitals.js +13 -0
  136. package/playground/src/resource/device.js +23 -0
  137. package/playground/src/resource/i18n-message.js +29 -0
  138. package/playground/src/resource/index.js +4 -0
  139. package/playground/src/resource/notification.js +18 -0
  140. package/playground/src/resource/user.js +28 -0
  141. package/playground/src/theme.js +3 -0
  142. package/src/Admin.jsx +67 -0
  143. package/src/AdminContext.jsx +26 -0
  144. package/src/ApplicaAdmin.jsx +210 -0
  145. package/src/assets/README.md +7 -0
  146. package/src/assets/logo-icon.png +0 -0
  147. package/src/assets/logo-main.png +0 -0
  148. package/src/components/@extended/AnimateButton.jsx +96 -0
  149. package/src/components/@extended/Avatar.jsx +125 -0
  150. package/src/components/@extended/Breadcrumbs.jsx +324 -0
  151. package/src/components/@extended/Dot.jsx +35 -0
  152. package/src/components/@extended/IconButton.jsx +166 -0
  153. package/src/components/@extended/LoadingButton.jsx +228 -0
  154. package/src/components/@extended/Tooltip.jsx +67 -0
  155. package/src/components/@extended/Transitions.jsx +125 -0
  156. package/src/components/@extended/index.jsx +11 -0
  157. package/src/components/@extended/progress/CircularWithLabel.jsx +34 -0
  158. package/src/components/@extended/progress/CircularWithPath.jsx +74 -0
  159. package/src/components/@extended/progress/LinearWithIcon.jsx +22 -0
  160. package/src/components/@extended/progress/LinearWithLabel.jsx +23 -0
  161. package/src/components/@extended/progress/index.jsx +6 -0
  162. package/src/components/ActionsMenu.jsx +77 -0
  163. package/src/components/Layout/Drawer/DrawerContent/Navigation/NavCollapse.jsx +440 -0
  164. package/src/components/Layout/Drawer/DrawerContent/Navigation/NavGroup.jsx +359 -0
  165. package/src/components/Layout/Drawer/DrawerContent/Navigation/NavItem.jsx +259 -0
  166. package/src/components/Layout/Drawer/DrawerContent/Navigation/index.jsx +73 -0
  167. package/src/components/Layout/Drawer/DrawerContent/index.jsx +19 -0
  168. package/src/components/Layout/Drawer/DrawerHeader/DrawerHeaderStyled.jsx +20 -0
  169. package/src/components/Layout/Drawer/DrawerHeader/index.jsx +44 -0
  170. package/src/components/Layout/Drawer/HorizontalBar.jsx +55 -0
  171. package/src/components/Layout/Drawer/MiniDrawerStyled.jsx +47 -0
  172. package/src/components/Layout/Drawer/index.jsx +63 -0
  173. package/src/components/Layout/Footer.jsx +23 -0
  174. package/src/components/Layout/Header/AppBarStyled.jsx +34 -0
  175. package/src/components/Layout/Header/HeaderContent/MobileSection.jsx +91 -0
  176. package/src/components/Layout/Header/HeaderContent/Notification.jsx +179 -0
  177. package/src/components/Layout/Header/HeaderContent/NotificationItem.jsx +109 -0
  178. package/src/components/Layout/Header/HeaderContent/Profile.jsx +181 -0
  179. package/src/components/Layout/Header/HeaderContent/index.jsx +38 -0
  180. package/src/components/Layout/Header/index.jsx +99 -0
  181. package/src/components/Layout/index.jsx +119 -0
  182. package/src/components/Loadable.jsx +11 -0
  183. package/src/components/Loader.jsx +21 -0
  184. package/src/components/Logo.jsx +29 -0
  185. package/src/components/MainCard.jsx +111 -0
  186. package/src/components/MainIcon.jsx +20 -0
  187. package/src/components/MenuPopover/MenuPopover.jsx +61 -0
  188. package/src/components/MenuPopover/getPosition.jsx +98 -0
  189. package/src/components/MenuPopover/index.jsx +3 -0
  190. package/src/components/MenuPopover/styles.jsx +87 -0
  191. package/src/components/Notification.jsx +13 -0
  192. package/src/components/ScrollTop.jsx +24 -0
  193. package/src/components/ScrollX.jsx +10 -0
  194. package/src/components/SmallIcon.jsx +14 -0
  195. package/src/components/index.jsx +36 -0
  196. package/src/components/ra-buttons/CreateInDialogButton.jsx +203 -0
  197. package/src/components/ra-buttons/EditInDialogButton.jsx +108 -0
  198. package/src/components/ra-buttons/ImpersonateUserButton.jsx +41 -0
  199. package/src/components/ra-buttons/index.jsx +4 -0
  200. package/src/components/ra-fields/ActionsField.jsx +33 -0
  201. package/src/components/ra-fields/AttachmentField.jsx +82 -0
  202. package/src/components/ra-fields/BaseAttachmentField.jsx +72 -0
  203. package/src/components/ra-fields/CoverField.jsx +83 -0
  204. package/src/components/ra-fields/DateAgoField.jsx +35 -0
  205. package/src/components/ra-fields/DateField.jsx +27 -0
  206. package/src/components/ra-fields/EmailField.jsx +27 -0
  207. package/src/components/ra-fields/FileField.jsx +40 -0
  208. package/src/components/ra-fields/FunctionField.jsx +9 -0
  209. package/src/components/ra-fields/ImageField.jsx +20 -0
  210. package/src/components/ra-fields/ReadonlyField.jsx +107 -0
  211. package/src/components/ra-fields/ReferenceManyField.jsx +63 -0
  212. package/src/components/ra-fields/SizeField.jsx +32 -0
  213. package/src/components/ra-fields/TextField.jsx +27 -0
  214. package/src/components/ra-fields/index.jsx +28 -0
  215. package/src/components/ra-forms/CardForm.jsx +113 -0
  216. package/src/components/ra-forms/Edit.jsx +13 -0
  217. package/src/components/ra-forms/FormHeader.jsx +42 -0
  218. package/src/components/ra-forms/LongForm/DispositionProps.jsx +10 -0
  219. package/src/components/ra-forms/LongForm/LongForm.jsx +38 -0
  220. package/src/components/ra-forms/LongForm/LongFormHeader.jsx +24 -0
  221. package/src/components/ra-forms/LongForm/LongFormTab.jsx +121 -0
  222. package/src/components/ra-forms/LongForm/LongFormTabs.jsx +63 -0
  223. package/src/components/ra-forms/LongForm/LongFormView.jsx +129 -0
  224. package/src/components/ra-forms/LongForm/index.jsx +2 -0
  225. package/src/components/ra-forms/LongForm/useFormRootPath.jsx +22 -0
  226. package/src/components/ra-forms/SimpleForm.jsx +69 -0
  227. package/src/components/ra-forms/TabbedForm.jsx +19 -0
  228. package/src/components/ra-forms/Toolbar.jsx +36 -0
  229. package/src/components/ra-forms/index.jsx +8 -0
  230. package/src/components/ra-inputs/ArrayInput.jsx +29 -0
  231. package/src/components/ra-inputs/AttachmentInput.jsx +57 -0
  232. package/src/components/ra-inputs/AutocompleteArrayInput.jsx +25 -0
  233. package/src/components/ra-inputs/AutocompleteInput.jsx +24 -0
  234. package/src/components/ra-inputs/BooleanInput.jsx +54 -0
  235. package/src/components/ra-inputs/DateInput.jsx +30 -0
  236. package/src/components/ra-inputs/FileInput.jsx +98 -0
  237. package/src/components/ra-inputs/ImageInput.jsx +44 -0
  238. package/src/components/ra-inputs/LabeledInput.jsx +80 -0
  239. package/src/components/ra-inputs/NumberInput.jsx +28 -0
  240. package/src/components/ra-inputs/RecordInput.jsx +102 -0
  241. package/src/components/ra-inputs/ReferenceArrayInput.jsx +23 -0
  242. package/src/components/ra-inputs/ReferenceInput.jsx +23 -0
  243. package/src/components/ra-inputs/ReferenceManyInput.jsx +44 -0
  244. package/src/components/ra-inputs/SearchInput.jsx +14 -0
  245. package/src/components/ra-inputs/SelectArrayInput.jsx +45 -0
  246. package/src/components/ra-inputs/SelectInput.jsx +24 -0
  247. package/src/components/ra-inputs/SmartTextInput.jsx +52 -0
  248. package/src/components/ra-inputs/TextInput.jsx +20 -0
  249. package/src/components/ra-inputs/TimeInput.jsx +46 -0
  250. package/src/components/ra-inputs/index.jsx +42 -0
  251. package/src/components/ra-lists/Datagrid.jsx +42 -0
  252. package/src/components/ra-lists/Empty.jsx +94 -0
  253. package/src/components/ra-lists/List.jsx +81 -0
  254. package/src/components/ra-lists/NotificationList/NotificationList.jsx +41 -0
  255. package/src/components/ra-lists/NotificationList/button/MarkAsReadedButton.jsx +57 -0
  256. package/src/components/ra-lists/NotificationList/button/MarkAsUnreadedButton.jsx +56 -0
  257. package/src/components/ra-lists/NotificationList/button/index.jsx +2 -0
  258. package/src/components/ra-lists/NotificationList/field/NotificationField.jsx +80 -0
  259. package/src/components/ra-lists/NotificationList/field/index.jsx +1 -0
  260. package/src/components/ra-lists/NotificationList/index.jsx +2 -0
  261. package/src/components/ra-lists/index.jsx +5 -0
  262. package/src/components/third-party/SimpleBar.jsx +61 -0
  263. package/src/components/third-party/index.jsx +3 -0
  264. package/src/contexts/AppConfigContext.jsx +54 -0
  265. package/src/contexts/MenuConfigContext.jsx +93 -0
  266. package/src/contexts/MenuPropTypes.jsx +19 -0
  267. package/src/contexts/ThemeConfigContext.jsx +138 -0
  268. package/src/contexts/index.jsx +5 -0
  269. package/src/dev/index.jsx +2 -0
  270. package/src/dev/useCliErrorCatcher.jsx +86 -0
  271. package/src/hooks/index.jsx +16 -0
  272. package/src/hooks/useAppConfig.jsx +6 -0
  273. package/src/hooks/useBreadcrumbs.jsx +68 -0
  274. package/src/hooks/useLocalStorage.jsx +31 -0
  275. package/src/hooks/useMenu.jsx +223 -0
  276. package/src/hooks/useMenuConfig.jsx +6 -0
  277. package/src/hooks/useResourceTitle.jsx +25 -0
  278. package/src/hooks/useThemeConfig.jsx +6 -0
  279. package/src/i18n/createI18nProvider.jsx +15 -0
  280. package/src/i18n/index.jsx +4 -0
  281. package/src/i18n/useI18nCatcher.jsx +71 -0
  282. package/src/i18n/useI18nLanguages.jsx +22 -0
  283. package/src/i18n/useI18nProvider.jsx +5 -0
  284. package/src/index.jsx +67 -0
  285. package/src/themes/getColors.jsx +18 -0
  286. package/src/themes/getShadow.jsx +37 -0
  287. package/src/themes/index.jsx +70 -0
  288. package/src/themes/overrides/Accordion.jsx +27 -0
  289. package/src/themes/overrides/AccordionDetails.jsx +14 -0
  290. package/src/themes/overrides/AccordionSummary.jsx +33 -0
  291. package/src/themes/overrides/Alert.jsx +72 -0
  292. package/src/themes/overrides/AlertTitle.jsx +15 -0
  293. package/src/themes/overrides/Autocomplete.jsx +23 -0
  294. package/src/themes/overrides/Badge.jsx +36 -0
  295. package/src/themes/overrides/Button.jsx +229 -0
  296. package/src/themes/overrides/ButtonBase.jsx +12 -0
  297. package/src/themes/overrides/ButtonGroup.jsx +11 -0
  298. package/src/themes/overrides/CardContent.jsx +16 -0
  299. package/src/themes/overrides/Checkbox.jsx +125 -0
  300. package/src/themes/overrides/Chip.jsx +75 -0
  301. package/src/themes/overrides/Dialog.jsx +18 -0
  302. package/src/themes/overrides/DialogContentText.jsx +14 -0
  303. package/src/themes/overrides/DialogTitle.jsx +14 -0
  304. package/src/themes/overrides/Fab.jsx +77 -0
  305. package/src/themes/overrides/IconButton.jsx +28 -0
  306. package/src/themes/overrides/InputBase.jsx +13 -0
  307. package/src/themes/overrides/InputLabel.jsx +25 -0
  308. package/src/themes/overrides/LinearProgress.jsx +17 -0
  309. package/src/themes/overrides/Link.jsx +11 -0
  310. package/src/themes/overrides/ListItemButton.jsx +18 -0
  311. package/src/themes/overrides/ListItemIcon.jsx +14 -0
  312. package/src/themes/overrides/LoadingButton.jsx +17 -0
  313. package/src/themes/overrides/OutlinedInput.jsx +54 -0
  314. package/src/themes/overrides/Pagination.jsx +11 -0
  315. package/src/themes/overrides/PaginationItem.jsx +211 -0
  316. package/src/themes/overrides/Popover.jsx +13 -0
  317. package/src/themes/overrides/Radio.jsx +121 -0
  318. package/src/themes/overrides/Slider.jsx +66 -0
  319. package/src/themes/overrides/Switch.jsx +88 -0
  320. package/src/themes/overrides/Tab.jsx +24 -0
  321. package/src/themes/overrides/TableBody.jsx +27 -0
  322. package/src/themes/overrides/TableCell.jsx +44 -0
  323. package/src/themes/overrides/TableFooter.jsx +15 -0
  324. package/src/themes/overrides/TableHead.jsx +15 -0
  325. package/src/themes/overrides/TablePagination.jsx +16 -0
  326. package/src/themes/overrides/TableRow.jsx +25 -0
  327. package/src/themes/overrides/Tabs.jsx +13 -0
  328. package/src/themes/overrides/ToggleButton.jsx +20 -0
  329. package/src/themes/overrides/Tooltip.jsx +13 -0
  330. package/src/themes/overrides/TreeItem.jsx +18 -0
  331. package/src/themes/overrides/Typography.jsx +13 -0
  332. package/src/themes/overrides/index.jsx +98 -0
  333. package/src/themes/palette.jsx +78 -0
  334. package/src/themes/shadows.jsx +27 -0
  335. package/src/themes/theme/default.jsx +98 -0
  336. package/src/themes/theme/index.jsx +44 -0
  337. package/src/themes/theme/theme1.jsx +128 -0
  338. package/src/themes/theme/theme2.jsx +128 -0
  339. package/src/themes/theme/theme3.jsx +128 -0
  340. package/src/themes/theme/theme4.jsx +128 -0
  341. package/src/themes/theme/theme5.jsx +128 -0
  342. package/src/themes/theme/theme6.jsx +128 -0
  343. package/src/themes/theme/theme7.jsx +128 -0
  344. package/src/themes/theme/theme8.jsx +128 -0
  345. package/src/themes/typography.jsx +71 -0
  346. package/src/utils/index.js +2 -0
  347. package/src/utils/lang.js +12 -0
  348. package/src/utils/time.js +13 -0
  349. package/tsconfig.json +28 -0
  350. package/vite.config.js +74 -0
@@ -0,0 +1,98 @@
1
+ export default function getPosition(arrow) {
2
+ let props
3
+
4
+ switch (arrow) {
5
+ case 'top-left':
6
+ props = {
7
+ style: { ml: -0.75 },
8
+ anchorOrigin: { vertical: 'bottom', horizontal: 'left' },
9
+ transformOrigin: { vertical: 'top', horizontal: 'left' },
10
+ }
11
+ break
12
+ case 'top-center':
13
+ props = {
14
+ style: {},
15
+ anchorOrigin: { vertical: 'bottom', horizontal: 'center' },
16
+ transformOrigin: { vertical: 'top', horizontal: 'center' },
17
+ }
18
+ break
19
+ case 'top-right':
20
+ props = {
21
+ style: { ml: 0.75 },
22
+ anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
23
+ transformOrigin: { vertical: 'top', horizontal: 'right' },
24
+ }
25
+ break
26
+ case 'bottom-left':
27
+ props = {
28
+ style: { ml: -0.75 },
29
+ anchorOrigin: { vertical: 'top', horizontal: 'left' },
30
+ transformOrigin: { vertical: 'bottom', horizontal: 'left' },
31
+ }
32
+ break
33
+ case 'bottom-center':
34
+ props = {
35
+ style: {},
36
+ anchorOrigin: { vertical: 'top', horizontal: 'center' },
37
+ transformOrigin: { vertical: 'bottom', horizontal: 'center' },
38
+ }
39
+ break
40
+ case 'bottom-right':
41
+ props = {
42
+ style: { ml: 0.75 },
43
+ anchorOrigin: { vertical: 'top', horizontal: 'right' },
44
+ transformOrigin: { vertical: 'bottom', horizontal: 'right' },
45
+ }
46
+ break
47
+ case 'left-top':
48
+ props = {
49
+ style: { mt: -0.75 },
50
+ anchorOrigin: { vertical: 'top', horizontal: 'right' },
51
+ transformOrigin: { vertical: 'top', horizontal: 'left' },
52
+ }
53
+ break
54
+ case 'left-center':
55
+ props = {
56
+ anchorOrigin: { vertical: 'center', horizontal: 'right' },
57
+ transformOrigin: { vertical: 'center', horizontal: 'left' },
58
+ }
59
+ break
60
+ case 'left-bottom':
61
+ props = {
62
+ style: { mt: 0.75 },
63
+ anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
64
+ transformOrigin: { vertical: 'bottom', horizontal: 'left' },
65
+ }
66
+ break
67
+ case 'right-top':
68
+ props = {
69
+ style: { mt: -0.75 },
70
+ anchorOrigin: { vertical: 'top', horizontal: 'left' },
71
+ transformOrigin: { vertical: 'top', horizontal: 'right' },
72
+ }
73
+ break
74
+ case 'right-center':
75
+ props = {
76
+ anchorOrigin: { vertical: 'center', horizontal: 'left' },
77
+ transformOrigin: { vertical: 'center', horizontal: 'right' },
78
+ }
79
+ break
80
+ case 'right-bottom':
81
+ props = {
82
+ style: { mt: 0.75 },
83
+ anchorOrigin: { vertical: 'bottom', horizontal: 'left' },
84
+ transformOrigin: { vertical: 'bottom', horizontal: 'right' },
85
+ }
86
+ break
87
+
88
+ // top-right
89
+ default:
90
+ props = {
91
+ style: { ml: 0.75 },
92
+ anchorOrigin: { vertical: 'bottom', horizontal: 'right' },
93
+ transformOrigin: { vertical: 'top', horizontal: 'right' },
94
+ }
95
+ }
96
+
97
+ return props
98
+ }
@@ -0,0 +1,3 @@
1
+ export { default as getPosition } from './getPosition'
2
+ export { default as MenuPopover } from './MenuPopover'
3
+ export { StyledArrow } from './styles'
@@ -0,0 +1,87 @@
1
+ import { alpha, styled } from '@mui/material/styles'
2
+
3
+ export const StyledArrow = styled('span')(({ arrow, theme }) => {
4
+ const SIZE = 12
5
+
6
+ const POSITION = -(SIZE / 2)
7
+
8
+ const borderStyle = `solid 1px ${alpha(theme.palette.grey[500], 0.12)}`
9
+
10
+ const topStyle = {
11
+ borderRadius: '0 0 3px 0',
12
+ top: POSITION,
13
+ borderBottom: borderStyle,
14
+ borderRight: borderStyle,
15
+ }
16
+
17
+ const bottomStyle = {
18
+ borderRadius: '3px 0 0 0',
19
+ bottom: POSITION,
20
+ borderTop: borderStyle,
21
+ borderLeft: borderStyle,
22
+ }
23
+
24
+ const leftStyle = {
25
+ borderRadius: '0 3px 0 0',
26
+ left: POSITION,
27
+ borderTop: borderStyle,
28
+ borderRight: borderStyle,
29
+ }
30
+
31
+ const rightStyle = {
32
+ borderRadius: '0 0 0 3px',
33
+ right: POSITION,
34
+ borderBottom: borderStyle,
35
+ borderLeft: borderStyle,
36
+ }
37
+
38
+ return {
39
+ display: 'none',
40
+ [theme.breakpoints.up('sm')]: {
41
+ zIndex: 1,
42
+ width: SIZE,
43
+ height: SIZE,
44
+ content: "''",
45
+ display: 'block',
46
+ position: 'absolute',
47
+ transform: 'rotate(-135deg)',
48
+ background: theme.palette.background.paper,
49
+ },
50
+ // Top
51
+ ...(arrow === 'top-left' && { ...topStyle, left: 20 }),
52
+ ...(arrow === 'top-center' && {
53
+ ...topStyle,
54
+ left: 0,
55
+ right: 0,
56
+ margin: 'auto',
57
+ }),
58
+ ...(arrow === 'top-right' && { ...topStyle, right: 20 }),
59
+ // Bottom
60
+ ...(arrow === 'bottom-left' && { ...bottomStyle, left: 20 }),
61
+ ...(arrow === 'bottom-center' && {
62
+ ...bottomStyle,
63
+ left: 0,
64
+ right: 0,
65
+ margin: 'auto',
66
+ }),
67
+ ...(arrow === 'bottom-right' && { ...bottomStyle, right: 20 }),
68
+ // Left
69
+ ...(arrow === 'left-top' && { ...leftStyle, top: 20 }),
70
+ ...(arrow === 'left-center' && {
71
+ ...leftStyle,
72
+ top: 0,
73
+ bottom: 0,
74
+ margin: 'auto',
75
+ }),
76
+ ...(arrow === 'left-bottom' && { ...leftStyle, bottom: 20 }),
77
+ // Right
78
+ ...(arrow === 'right-top' && { ...rightStyle, top: 20 }),
79
+ ...(arrow === 'right-center' && {
80
+ ...rightStyle,
81
+ top: 0,
82
+ bottom: 0,
83
+ margin: 'auto',
84
+ }),
85
+ ...(arrow === 'right-bottom' && { ...rightStyle, bottom: 20 }),
86
+ }
87
+ })
@@ -0,0 +1,13 @@
1
+ import { Notification as RaNotification } from 'react-admin'
2
+ import { styled } from '@mui/material/styles'
3
+
4
+ const ApplicaStyledNotification = styled(
5
+ RaNotification,
6
+ {},
7
+ )(({ theme }) => ({
8
+ '& *': {
9
+ fontSize: theme.typography.body1.fontSize,
10
+ },
11
+ }))
12
+
13
+ export default ApplicaStyledNotification
@@ -0,0 +1,24 @@
1
+ import PropTypes from 'prop-types'
2
+ import { useEffect } from 'react'
3
+ import { useLocation } from 'react-router-dom'
4
+
5
+ const ScrollTop = ({ children }) => {
6
+ const location = useLocation()
7
+ const { pathname } = location
8
+
9
+ useEffect(() => {
10
+ window.scrollTo({
11
+ top: 0,
12
+ left: 0,
13
+ behavior: 'smooth',
14
+ })
15
+ }, [pathname])
16
+
17
+ return children || null
18
+ }
19
+
20
+ ScrollTop.propTypes = {
21
+ children: PropTypes.node,
22
+ }
23
+
24
+ export default ScrollTop
@@ -0,0 +1,10 @@
1
+ // material-ui
2
+ import { styled } from '@mui/material/styles'
3
+
4
+ const ScrollX = styled('div')({
5
+ width: '100%',
6
+ overflowX: 'auto',
7
+ display: 'block',
8
+ })
9
+
10
+ export default ScrollX
@@ -0,0 +1,14 @@
1
+ import PropTypes from 'prop-types'
2
+ import { Typography } from '@mui/material'
3
+
4
+ const SmallIcon = ({ title }) => (
5
+ <Typography variant="h2" sx={{ style: 'bold' }}>
6
+ {title?.substr(0, 1).toUpperCase()}
7
+ </Typography>
8
+ )
9
+
10
+ SmallIcon.propTypes = {
11
+ title: PropTypes.string.isRequired,
12
+ }
13
+
14
+ export default SmallIcon
@@ -0,0 +1,36 @@
1
+ import ActionsMenu from './ActionsMenu'
2
+ import Layout from './Layout'
3
+ import Loadable from './Loadable'
4
+ import Loader from './Loader'
5
+ import Logo from './Logo'
6
+ import MainCard from './MainCard'
7
+ import MainIcon from './MainIcon'
8
+ import { MenuPopover } from './MenuPopover'
9
+ import Notification from './Notification'
10
+ import ScrollTop from './ScrollTop'
11
+ import ScrollX from './ScrollX'
12
+ import SmallIcon from './SmallIcon'
13
+ export {
14
+ MainIcon,
15
+ ActionsMenu,
16
+ Loadable,
17
+ Loader,
18
+ Layout,
19
+ Logo,
20
+ MainCard,
21
+ ScrollTop,
22
+ ScrollX,
23
+ MenuPopover,
24
+ Notification,
25
+ SmallIcon,
26
+ }
27
+
28
+ export * from './@extended'
29
+ export * from './third-party'
30
+
31
+ // Ra-Applica
32
+ export * from './ra-buttons'
33
+ export * from './ra-fields'
34
+ export * from './ra-inputs'
35
+ export * from './ra-lists'
36
+ export * from './ra-forms'
@@ -0,0 +1,203 @@
1
+ import {
2
+ Button,
3
+ CreateButtonClasses,
4
+ CreateContextProvider,
5
+ SaveButton,
6
+ useCreateController,
7
+ useNotify,
8
+ useRedirect,
9
+ useResourceContext,
10
+ useTranslate,
11
+ } from 'react-admin'
12
+ import { Dialog, Fab, useMediaQuery } from '@mui/material'
13
+ import React, { useCallback, useState } from 'react'
14
+
15
+ import { Add } from '@mui/icons-material'
16
+ import PropTypes from 'prop-types'
17
+ import { Toolbar } from '../ra-forms'
18
+ import clsx from 'clsx'
19
+ import { styled } from '@mui/material/styles'
20
+ import { useAppConfig } from '../../hooks'
21
+ import { useQueryClient } from 'react-query'
22
+
23
+ const updateColl = (old, data) => {
24
+ const id = data.id
25
+ if (!old) return [data]
26
+ const index = old.findIndex((record) => record.id === id)
27
+ if (index === -1) {
28
+ return [...old, data]
29
+ }
30
+
31
+ return [...old.slice(0, index), { ...old[index], ...data }, ...old.slice(index + 1)]
32
+ }
33
+ const setManyReferenceQueryData = (res, data) => {
34
+ const result = res && res.data ? { data: updateColl(res.data, data), total: res.total + 1 } : res
35
+ return result
36
+ }
37
+ const setManyQueryData = (coll, data) => (coll && coll.length > 0 ? updateColl(coll, data) : coll)
38
+ const setListQueryData = (res, data) =>
39
+ res && res.data ? { ...res, data: updateColl(res.data, data), total: res.total + 1 } : res
40
+
41
+ const CreateInDialogContent = ({ onClose, record, children, redirect: _redirect }) => {
42
+ const queryClient = useQueryClient()
43
+ const resource = useResourceContext()
44
+ const redirect = useRedirect()
45
+ const notify = useNotify()
46
+ const handleSuccess = useCallback(
47
+ (data) => {
48
+ const now = Date.now()
49
+ const updatedAt = now
50
+
51
+ queryClient.setQueryData([resource, 'getOne', { id: data.id }], data)
52
+ queryClient.setQueriesData([resource, 'getList'], (res) => setListQueryData(res, data), {
53
+ updatedAt,
54
+ })
55
+ queryClient.setQueriesData([resource, 'getMany'], (coll) => setManyQueryData(coll, data), {
56
+ updatedAt,
57
+ })
58
+ queryClient.setQueriesData(
59
+ [resource, 'getManyReference'],
60
+ (res) => setManyReferenceQueryData(res, data),
61
+ { updatedAt },
62
+ )
63
+
64
+ onClose()
65
+ notify('ra.notification.created')
66
+ if (_redirect !== undefined) {
67
+ redirect(_redirect, resource, data.id, data)
68
+ }
69
+ },
70
+ [onClose, queryClient, resource, notify, redirect, _redirect],
71
+ )
72
+ const { save, isLoading } = useCreateController({
73
+ mutationOptions: {
74
+ onSuccess: handleSuccess,
75
+ },
76
+ })
77
+ return (
78
+ <CreateContextProvider
79
+ value={{
80
+ record: record,
81
+ save: save,
82
+ saving: isLoading,
83
+ redirect: _redirect,
84
+ }}
85
+ >
86
+ {React.cloneElement(children, {
87
+ ...children.props,
88
+ toolbar: (
89
+ <Toolbar>
90
+ <Button variant="text" size="medium" label="ra.action.cancel" onClick={onClose} />
91
+ <SaveButton />
92
+ </Toolbar>
93
+ ),
94
+ })}
95
+ </CreateContextProvider>
96
+ )
97
+ }
98
+
99
+ CreateInDialogContent.propTypes = {
100
+ children: PropTypes.node,
101
+ onClose: PropTypes.func,
102
+ record: PropTypes.object,
103
+ redirect: PropTypes.oneOf(['list', 'edit', 'show', false]),
104
+ }
105
+ CreateInDialogContent.defaultProps = {
106
+ redirect: false,
107
+ }
108
+ const scrollStates = {
109
+ true: { _scrollToTop: true },
110
+ false: {},
111
+ }
112
+
113
+ const StyledFab = styled(Fab, {
114
+ name: 'RaApplicaCreateInDialogButton',
115
+ overridesResolver: (_props, styles) => styles.root,
116
+ })(({ theme }) => ({
117
+ [`&.${CreateButtonClasses.floating}`]: {
118
+ color: theme.palette.getContrastText(theme.palette.primary.main),
119
+ margin: 0,
120
+ top: 'auto',
121
+ right: 20,
122
+ bottom: 60,
123
+ left: 'auto',
124
+ position: 'fixed',
125
+ zIndex: 1000,
126
+ },
127
+ }))
128
+ const CreateInDialogButton = ({
129
+ fullWidth,
130
+ maxWidth,
131
+ label,
132
+ record,
133
+ redirect,
134
+ scrollToTop,
135
+ className,
136
+ sx,
137
+ ...props
138
+ }) => {
139
+ const [open, setOpen] = useState(false)
140
+ const translate = useTranslate()
141
+ const resource = useResourceContext()
142
+ const { openDialog, closeDialog } = useAppConfig()
143
+
144
+ const handleOpen = useCallback(
145
+ () => openDialog(resource, () => setOpen(true)),
146
+ [openDialog, resource],
147
+ )
148
+ const handleClose = useCallback(
149
+ () => closeDialog(resource, () => setOpen(false)),
150
+ [closeDialog, resource],
151
+ )
152
+ const isSmall = useMediaQuery((theme) => theme.breakpoints.down('md'))
153
+ return (
154
+ <>
155
+ {isSmall ? (
156
+ <StyledFab
157
+ {...props}
158
+ state={scrollStates[String(scrollToTop)]}
159
+ // @ts-ignore FabProps ships its own runtime palette `FabPropsColorOverrides` provoking an overlap error with `ButtonProps`
160
+ color="primary"
161
+ className={clsx(CreateButtonClasses.floating, className)}
162
+ aria-label={label && translate(label)}
163
+ onClick={handleOpen}
164
+ >
165
+ <Add />
166
+ </StyledFab>
167
+ ) : (
168
+ <Button {...props} sx={sx} label={label} onClick={handleOpen}>
169
+ <Add />
170
+ </Button>
171
+ )}
172
+ <Dialog open={open} onClose={handleClose} fullWidth={fullWidth} maxWidth={maxWidth}>
173
+ <CreateInDialogContent
174
+ {...props}
175
+ redirect={redirect}
176
+ record={record}
177
+ onClose={handleClose}
178
+ />
179
+ </Dialog>
180
+ </>
181
+ )
182
+ }
183
+
184
+ CreateInDialogButton.defaultProps = {
185
+ fullWidth: true,
186
+ maxWidth: 'md',
187
+ label: 'ra.action.create',
188
+ scrollToTop: true,
189
+ }
190
+
191
+ CreateInDialogButton.propTypes = {
192
+ ...Button.propTypes,
193
+ redirect: PropTypes.oneOf(['list', 'edit', 'show', false]),
194
+ fullWidth: PropTypes.bool,
195
+ maxWidth: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]),
196
+ label: PropTypes.string,
197
+ record: PropTypes.object,
198
+ scrollToTop: PropTypes.bool,
199
+ className: PropTypes.string,
200
+ sx: PropTypes.object,
201
+ }
202
+
203
+ export default CreateInDialogButton
@@ -0,0 +1,108 @@
1
+ /* eslint-disable camelcase */
2
+ import {
3
+ Button,
4
+ EditContextProvider,
5
+ SaveButton,
6
+ useEditController,
7
+ useGetOne,
8
+ useNotify,
9
+ useRecordContext,
10
+ useResourceContext,
11
+ } from 'react-admin'
12
+ import React, { useCallback, useState } from 'react'
13
+
14
+ import { Dialog } from '@mui/material'
15
+ import { Edit } from '@mui/icons-material'
16
+ import PropTypes from 'prop-types'
17
+ import { Toolbar } from '../ra-forms'
18
+ import { useAppConfig } from '../../hooks'
19
+
20
+ const EditInDialogContent = ({ onClose, children }) => {
21
+ const notify = useNotify()
22
+ const record = useRecordContext()
23
+ const resource = useResourceContext()
24
+ const { id } = record
25
+ const { isLoading, data } = useGetOne(resource, { id })
26
+
27
+ const handleSuccess = useCallback(() => {
28
+ notify('ra.notification.updated', {
29
+ type: 'info',
30
+ messageArgs: {
31
+ smart_count: 1,
32
+ },
33
+ })
34
+ onClose()
35
+ }, [onClose, notify])
36
+ const { save, saving } = useEditController({
37
+ resource,
38
+ id,
39
+ mutationMode: 'pessimistic',
40
+ mutationOptions: {
41
+ onSuccess: handleSuccess,
42
+ },
43
+ })
44
+
45
+ return (
46
+ <EditContextProvider
47
+ value={{
48
+ record: data,
49
+ isLoading,
50
+ save: save,
51
+ saving: saving,
52
+ }}
53
+ >
54
+ {React.cloneElement(children, {
55
+ toolbar: (
56
+ <Toolbar>
57
+ <Button variant="text" size="medium" label="ra.action.cancel" onClick={onClose} />
58
+ <SaveButton />
59
+ </Toolbar>
60
+ ),
61
+ })}
62
+ </EditContextProvider>
63
+ )
64
+ }
65
+
66
+ EditInDialogContent.propTypes = {
67
+ children: PropTypes.node,
68
+ onClose: PropTypes.func,
69
+ }
70
+
71
+ const EditInDialogButton = ({ fullWidth, maxWidth, label, ...props }) => {
72
+ const [open, setOpen] = useState(false)
73
+ const { openDialog, closeDialog } = useAppConfig()
74
+ const resource = useResourceContext()
75
+ const handleOpen = useCallback(
76
+ () => openDialog(resource, () => setOpen(true)),
77
+ [openDialog, resource],
78
+ )
79
+ const handleClose = useCallback(
80
+ () => closeDialog(resource, () => setOpen(false)),
81
+ [closeDialog, resource],
82
+ )
83
+
84
+ return (
85
+ <>
86
+ <Button label={label} onClick={handleOpen}>
87
+ <Edit />
88
+ </Button>
89
+ <Dialog open={open} onClose={handleClose} fullWidth={fullWidth} maxWidth={maxWidth}>
90
+ <EditInDialogContent {...props} onClose={handleClose} />
91
+ </Dialog>
92
+ </>
93
+ )
94
+ }
95
+
96
+ EditInDialogButton.defaultProps = {
97
+ fullWidth: true,
98
+ maxWidth: 'md',
99
+ label: 'ra.action.edit',
100
+ }
101
+
102
+ EditInDialogButton.propTypes = {
103
+ fullWidth: PropTypes.bool,
104
+ maxWidth: PropTypes.oneOf(['xs', 'sm', 'md', 'lg', 'xl', false]),
105
+ label: PropTypes.string,
106
+ }
107
+
108
+ export default EditInDialogButton
@@ -0,0 +1,41 @@
1
+ import { Button, useAuthProvider, useRecordContext } from 'react-admin'
2
+ import React, { useCallback, useState } from 'react'
3
+
4
+ import PropTypes from 'prop-types'
5
+ import { VpnKey } from '@mui/icons-material'
6
+
7
+ const ImpersonateUserButton = ({ label = 'ra.auth.sign_in', ...props }) => {
8
+ const record = useRecordContext()
9
+ const [loading, setLoading] = useState(false)
10
+ const authProvider = useAuthProvider()
11
+ const handleClick = useCallback(
12
+ (e) => {
13
+ e.stopPropagation()
14
+ e.preventDefault()
15
+ setLoading(true)
16
+ authProvider.impersonate(record?.id).then(() => {
17
+ setLoading(false)
18
+ document.location.href = '/'
19
+ })
20
+ },
21
+ [authProvider, record?.id],
22
+ )
23
+ return (
24
+ <Button
25
+ disabled={loading || authProvider.impersonate === undefined}
26
+ color="primary"
27
+ variant="text"
28
+ label={label}
29
+ onClick={handleClick}
30
+ {...props}
31
+ >
32
+ <VpnKey />
33
+ </Button>
34
+ )
35
+ }
36
+
37
+ ImpersonateUserButton.propTypes = {
38
+ label: PropTypes.string,
39
+ }
40
+
41
+ export default ImpersonateUserButton
@@ -0,0 +1,4 @@
1
+ import CreateInDialogButton from './CreateInDialogButton'
2
+ import EditInDialogButton from './EditInDialogButton'
3
+ import ImpersonateUserButton from './ImpersonateUserButton'
4
+ export { CreateInDialogButton, EditInDialogButton, ImpersonateUserButton }
@@ -0,0 +1,33 @@
1
+ import { CloneButton, DeleteWithConfirmButton, EditButton } from 'react-admin'
2
+
3
+ import ActionsMenu from '../ActionsMenu'
4
+ import PropTypes from 'prop-types'
5
+ import React from 'react'
6
+
7
+ const ActionsField = ({ canEdit, canDelete, canClone }) => {
8
+ if (!canEdit && !canDelete && !canClone) {
9
+ return null
10
+ }
11
+
12
+ return (
13
+ <ActionsMenu>
14
+ {canEdit && <EditButton />}
15
+ {canDelete && <DeleteWithConfirmButton />}
16
+ {canClone && <CloneButton />}
17
+ </ActionsMenu>
18
+ )
19
+ }
20
+
21
+ ActionsField.defaultProps = {
22
+ canEdit: true,
23
+ canDelete: true,
24
+ canClone: false,
25
+ }
26
+
27
+ ActionsField.propTypes = {
28
+ canEdit: PropTypes.bool,
29
+ canDelete: PropTypes.bool,
30
+ canClone: PropTypes.bool,
31
+ }
32
+
33
+ export default ActionsField