@dashadmin/dash-admin 1.3.72 → 1.3.74-srcfree.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (289) hide show
  1. package/dist/components/tenant/TenancyPlan.js +307 -0
  2. package/dist/systemResources.js +18 -2
  3. package/package.json +25 -22
  4. package/src/AppAsyncWrapper.tsx +0 -42
  5. package/src/AppWrapper.tsx +0 -45
  6. package/src/DASHAdmin.tsx +0 -502
  7. package/src/DASHAdmin.tsx.old +0 -456
  8. package/src/RoutingWrapper.tsx +0 -143
  9. package/src/classes/DASHStorageClass.tsx +0 -8
  10. package/src/components/Input/RichTextField.tsx +0 -27
  11. package/src/components/Redirect.tsx +0 -46
  12. package/src/components/avatar/Avatar.tsx +0 -71
  13. package/src/components/avatar/SingleImageUploader.tsx +0 -107
  14. package/src/components/currency/Format.tsx +0 -79
  15. package/src/components/custom/Redirect.tsx +0 -23
  16. package/src/components/error/Error.tsx +0 -168
  17. package/src/components/geocoding/GeocodingField.tsx +0 -167
  18. package/src/components/i18n/BridgedLocalesMenuButton.tsx +0 -160
  19. package/src/components/i18n/LangSwitcher.tsx +0 -204
  20. package/src/components/loader/GlobalLoader.tsx +0 -49
  21. package/src/components/logs/LogFile.tsx +0 -88
  22. package/src/components/logs/LogFileById.tsx +0 -68
  23. package/src/components/logs/LogViewer.tsx +0 -43
  24. package/src/components/menu/AppMenu.tsx +0 -22
  25. package/src/components/menu/CustomMenuItemLink.tsx +0 -61
  26. package/src/components/menu/DarkToggleMode.tsx +0 -65
  27. package/src/components/menu/LanguageToggleMode.tsx +0 -120
  28. package/src/components/misc/CustomImageInput.tsx +0 -62
  29. package/src/components/misc/DASHGlobalErrorHandler.tsx +0 -194
  30. package/src/components/misc/DarkModeSwitcher.tsx +0 -112
  31. package/src/components/misc/HorizontalScroller.tsx +0 -225
  32. package/src/components/misc/LanguageSwitcher.tsx +0 -199
  33. package/src/components/misc/MUIHtmlToolTip.tsx +0 -15
  34. package/src/components/misc/MuiSimpleJsonTable.tsx +0 -279
  35. package/src/components/misc/MultiLevelTable.tsx +0 -229
  36. package/src/components/misc/NoResults.tsx +0 -28
  37. package/src/components/misc/PDFViewer.tsx +0 -85
  38. package/src/components/navigation/Breadcrumbs.tsx +0 -220
  39. package/src/components/navigation/BreadcrumbsManager.tsx +0 -310
  40. package/src/components/navigation/index.tsx +0 -5
  41. package/src/components/panel/Error.tsx +0 -168
  42. package/src/components/permission/AvailablePermissionsContext.tsx +0 -173
  43. package/src/components/permission/PermissionsSelector.tsx +0 -834
  44. package/src/components/permission/PermissionsSelectorList.tsx +0 -473
  45. package/src/components/permission/tsx +0 -0
  46. package/src/components/racustombuttons/CustomRAButton.tsx +0 -87
  47. package/src/components/racustombuttons/QuickButton.tsx +0 -117
  48. package/src/components/racustombuttons/QuickEditButton.tsx +0 -115
  49. package/src/components/racustombuttons/QuickIconButton.tsx +0 -122
  50. package/src/components/scrollbar/Scrollbar.tsx +0 -31
  51. package/src/components/selects/MultiSelect.tsx +0 -53
  52. package/src/components/selects/RASearchableSelect.tsx +0 -282
  53. package/src/components/selects/RASearchableSelectChips.tsx +0 -308
  54. package/src/components/selects/SearchableSelect.tsx +0 -139
  55. package/src/components/serviceAccount/ApiKeyRevealDialog.tsx +0 -129
  56. package/src/components/serviceAccount/ServiceAccountStatusSwitch.tsx +0 -99
  57. package/src/components/subscription/BillingCycleSelectInput.tsx +0 -68
  58. package/src/components/subscription/PlanAddonsSettings.tsx +0 -563
  59. package/src/components/subscription/PlanAuditLog.tsx +0 -453
  60. package/src/components/subscription/PlanFeaturesSettings.tsx +0 -243
  61. package/src/components/subscription/PlanLimitsSettings.tsx +0 -230
  62. package/src/components/subscription/PlanMetadataSettings.tsx +0 -306
  63. package/src/components/subscription/PlanPricesSettings.tsx +0 -307
  64. package/src/components/subscription/index.ts +0 -7
  65. package/src/components/svgelements/SvgLoading.tsx +0 -229
  66. package/src/components/svgelements/SvgLogo.tsx +0 -53
  67. package/src/components/svgelements/SvgLogoMin.tsx +0 -64
  68. package/src/components/svgelements/SvgShipping.tsx +0 -673
  69. package/src/components/tenancy/GlobalTenantWrapper.tsx +0 -84
  70. package/src/components/tenancy/TenantSwitcher.tsx +0 -514
  71. package/src/components/tenant/AvailablePermissionsContext.tsx +0 -0
  72. package/src/components/tenant/SettingsSections.tsx +0 -151
  73. package/src/components/tenant/TenancySettings.tsx +0 -122
  74. package/src/components/tenant/TenantAttributes.tsx +0 -153
  75. package/src/components/tenant/TenantAttributesContext.tsx +0 -163
  76. package/src/components/tenant/TenantSelector.tsx +0 -142
  77. package/src/components/tenant/TenantSettings.tsx +0 -184
  78. package/src/components/tenant/TenantSettingsContext.tsx +0 -165
  79. package/src/components/tenant/TenantTheme.tsx +0 -172
  80. package/src/components/user/AvatarComponent.tsx +0 -317
  81. package/src/components/user/TenantAvatarComponent.tsx +0 -99
  82. package/src/components/user/UserPreferences.tsx +0 -677
  83. package/src/config/ACTIONS.tsx +0 -26
  84. package/src/config/ConstantsService.tsx +0 -44
  85. package/src/config/DASHAdminSystemConstants.tsx +0 -183
  86. package/src/config/PARSERS.tsx +0 -9
  87. package/src/contexts/DashQueryClientContext.tsx +0 -113
  88. package/src/contexts/DashResourceContext.tsx +0 -34
  89. package/src/contexts/I18nBridgeContext.tsx +0 -156
  90. package/src/contexts/I18nBridgeSetter.tsx +0 -39
  91. package/src/contexts/I18nReduxSync.tsx +0 -27
  92. package/src/contexts/SubscriptionPlanFormatsProvider.tsx +0 -217
  93. package/src/contexts/SystemRequestsCache.tsx +0 -215
  94. package/src/contexts/auth/AuthContext.tsx +0 -567
  95. package/src/contexts/auth/AuthContextLocalStorage.tsx +0 -140
  96. package/src/contexts/auth/DASHAuthenticationService.tsx +0 -915
  97. package/src/contexts/auth/WindowContext.tsx +0 -15
  98. package/src/contexts/auth/index.tsx +0 -3
  99. package/src/contexts/com/FCMContext.tsx +0 -415
  100. package/src/contexts/com/LaravelEchoContext.tsx +0 -41
  101. package/src/contexts/com/LaravelEchoMgr.tsx +0 -155
  102. package/src/contexts/com/components/DefaultNotificationComponent.tsx +0 -20
  103. package/src/contexts/com/components/EchoNotificationsCenter.tsx +0 -65
  104. package/src/contexts/com/components/NotificationAttributesTable.tsx +0 -54
  105. package/src/contexts/com/components/NotificationRenderer.tsx +0 -42
  106. package/src/contexts/com/components/NotificationsWidget.tsx +0 -182
  107. package/src/contexts/com/components/notificationFormats.tsx +0 -50
  108. package/src/contexts/com/useLaravelEcho.tsx +0 -432
  109. package/src/contexts/dictionary/DictionaryContext.tsx +0 -94
  110. package/src/declarations.d.ts +0 -17
  111. package/src/default-theme/DASHAppProviders.tsx +0 -117
  112. package/src/default-theme/DashThemeContext.tsx +0 -209
  113. package/src/default-theme/DashThemeContext.tsx.fast +0 -143
  114. package/src/default-theme/DashThemeContext.tsx.old +0 -306
  115. package/src/default-theme/DashThemeHelperProvider.tsx +0 -98
  116. package/src/default-theme/DomainAppLayout.tsx +0 -166
  117. package/src/default-theme/DomainHeader.tsx +0 -162
  118. package/src/default-theme/DomainTheme.tsx +0 -59
  119. package/src/default-theme/FullLayoutMarkup.tsx +0 -231
  120. package/src/default-theme/StaticLayout.tsx +0 -47
  121. package/src/default-theme/index.tsx +0 -11
  122. package/src/default-theme/menu/AppDashboardGrid.tsx +0 -279
  123. package/src/default-theme/menu/AppMaterialMenu.tsx +0 -546
  124. package/src/default-theme/menu/AppMenuComponents/SubmenuPortal.tsx +0 -61
  125. package/src/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItem.tsx +0 -264
  126. package/src/default-theme/menu/AppMenuComponents/collapsed/CollapsedSidebarItems.tsx +0 -31
  127. package/src/default-theme/menu/AppMenuComponents/expanded/CollapsableSidebarMenu.tsx +0 -293
  128. package/src/default-theme/menu/AppMenuComponents/expanded/SidebarItem.tsx +0 -92
  129. package/src/default-theme/menu/AppMenuComponents/getItem.tsx +0 -17
  130. package/src/default-theme/menu/AppMenuComponents/interfaces.tsx +0 -41
  131. package/src/default-theme/menu/AppMenuComponents/submenuConstants.ts +0 -90
  132. package/src/default-theme/menu/AppSidebarMaterial.tsx +0 -339
  133. package/src/default-theme/menu/SidebarActions.tsx +0 -84
  134. package/src/default-theme/updateDomCssVariables.tsx +0 -176
  135. package/src/helpers/checkRole.tsx +0 -66
  136. package/src/helpers/parseAxiosError.tsx +0 -41
  137. package/src/hooks/audio/useAudio.tsx +0 -39
  138. package/src/hooks/axios.tsx +0 -165
  139. package/src/hooks/data/useDashboardStats.tsx +0 -65
  140. package/src/hooks/data/usePackageByClientsStats.tsx +0 -44
  141. package/src/hooks/data/usePackageByCommunesStats.tsx +0 -44
  142. package/src/hooks/data/usePackageStats.tsx +0 -69
  143. package/src/hooks/data/usePackageWithdrawDetails.tsx +0 -61
  144. package/src/hooks/data/useStats.tsx +0 -86
  145. package/src/hooks/isCurrentPath.tsx +0 -22
  146. package/src/hooks/notifications/WSMessagesManager.tsx +0 -152
  147. package/src/hooks/notifications/WSPusherManager.tsx +0 -92
  148. package/src/hooks/useBreadcrumbs.tsx +0 -329
  149. package/src/hooks/useClickOutside.tsx +0 -57
  150. package/src/hooks/useFormPersistance.tsx +0 -150
  151. package/src/hooks/useGlobalErrorMediator.tsx +0 -43
  152. package/src/hooks/useGlobalLoaderMgr.tsx +0 -21
  153. package/src/hooks/useHash.tsx +0 -27
  154. package/src/hooks/useLocalStorage.tsx +0 -196
  155. package/src/hooks/usePolyglotTranslation.tsx +0 -62
  156. package/src/hooks/usePrevious.tsx +0 -9
  157. package/src/hooks/usePrintSelected.tsx +0 -37
  158. package/src/hooks/useVirtualHash.tsx +0 -33
  159. package/src/hooks/window/useWindowSize.tsx +0 -36
  160. package/src/index.tsx +0 -134
  161. package/src/interfaces/IAppResourceConfig.tsx +0 -20
  162. package/src/interfaces/Log.tsx +0 -16
  163. package/src/interfaces/Tenant.tsx +0 -25
  164. package/src/interfaces/communication/IActions.tsx +0 -5
  165. package/src/interfaces/communication/INotification.tsx +0 -21
  166. package/src/interfaces/communication/IPayload.tsx +0 -3
  167. package/src/interfaces/communication/IRequestAction.tsx +0 -10
  168. package/src/interfaces/communication/IRequestPayload.tsx +0 -7
  169. package/src/interfaces/communication/IResponseAction.tsx +0 -7
  170. package/src/interfaces/misc/IAny.tsx +0 -3
  171. package/src/interfaces/misc/IFlashMessage.tsx +0 -10
  172. package/src/interfaces/navigation/IAppMenu.ts +0 -14
  173. package/src/interfaces/navigation/ICollapsableSidebarMenu.ts +0 -12
  174. package/src/interfaces/navigation/IMenuItem.ts +0 -16
  175. package/src/interfaces/notifications/IModel.tsx +0 -6
  176. package/src/interfaces/notifications/IModelField.tsx +0 -8
  177. package/src/interfaces/notifications/IUserNotification.tsx +0 -12
  178. package/src/interfaces/notifications/IUserNotificationData.tsx +0 -13
  179. package/src/interfaces/notifications/IUserNotificationPayload.tsx +0 -8
  180. package/src/interfaces/user/IGetAuth.tsx +0 -92
  181. package/src/interfaces/user/ITenantSettings.tsx +0 -3
  182. package/src/interfaces/user/IUser.tsx +0 -60
  183. package/src/interfaces/user/IUserSettings.tsx +0 -43
  184. package/src/interfaces.tsx +0 -6
  185. package/src/layout/AppLayout.tsx +0 -112
  186. package/src/layout/ApplicationLayout.tsx +0 -197
  187. package/src/layout/MotionWrapper.original.tsx +0 -236
  188. package/src/layout/MotionWrapper.tsx +0 -236
  189. package/src/layout/ResourceMenu.tsx +0 -164
  190. package/src/layout/ResoureLayout.tsx +0 -105
  191. package/src/layout/TransitionWrapper.tsx +0 -125
  192. package/src/pages/ChangePassword.tsx +0 -179
  193. package/src/pages/DASHLanding.tsx +0 -22
  194. package/src/pages/DASHLightWeightLogin.tsx +0 -611
  195. package/src/pages/DASHSimpleLogin.tsx +0 -260
  196. package/src/pages/Login.tsx +0 -111
  197. package/src/pages/Profile.tsx +0 -357
  198. package/src/pages/RecoverPassword.tsx +0 -175
  199. package/src/pages/SingleImageUploader.tsx +0 -55
  200. package/src/pages/VerifyAccount.tsx +0 -128
  201. package/src/providers/authProvider.tsx +0 -217
  202. package/src/providers/dataProvider.tsx +0 -672
  203. package/src/providers/i18n/en.ts +0 -646
  204. package/src/providers/i18n/es.ts +0 -652
  205. package/src/providers/i18n/languages.tsx +0 -8
  206. package/src/providers/i18n/mergeTranslations.ts +0 -53
  207. package/src/providers/i18nProvider.tsx +0 -23
  208. package/src/react-admin-dash/RADashComponent.tsx +0 -240
  209. package/src/react-admin-dash/Resource.tsx +0 -77
  210. package/src/resources/Brand/BrandResource.tsx +0 -130
  211. package/src/resources/DASHResourceLoader.ts +0 -180
  212. package/src/resources/Log/LogResource.tsx +0 -73
  213. package/src/resources/Tenant/ImpersonateTenantResource.tsx +0 -113
  214. package/src/resources/Trash/TrashTemplate.tsx +0 -180
  215. package/src/resources/User/components/AvatarUploadField.tsx +0 -57
  216. package/src/resources/User/components/PasswordFields.tsx +0 -73
  217. package/src/resources/User/getProfileMenu.ts +0 -57
  218. package/src/resources/User/profileResource.tsx +0 -51
  219. package/src/resources/User/userLayout.tsx +0 -62
  220. package/src/resources/User/userResource.tsx +0 -111
  221. package/src/resources/User/userSchema.tsx +0 -213
  222. package/src/resources/User/usersFilters.tsx +0 -21
  223. package/src/resources.tsx +0 -280
  224. package/src/schemas/log.tsx +0 -45
  225. package/src/schemas/notification.tsx +0 -42
  226. package/src/schemas/permissions.tsx +0 -44
  227. package/src/schemas/roles.tsx +0 -48
  228. package/src/schemas/rolesDataGrid.tsx +0 -48
  229. package/src/schemas/subscription/components/SubscriptionActions.tsx +0 -153
  230. package/src/schemas/subscription/components/SubscriptionPaymentHistory.tsx +0 -127
  231. package/src/schemas/subscription/components/SubscriptionPlanFeatures.tsx +0 -162
  232. package/src/schemas/subscription/components/SubscriptionPlanPreview.tsx +0 -141
  233. package/src/schemas/subscription/components/SubscriptionPlanStats.tsx +0 -318
  234. package/src/schemas/subscription/components/SubscriptionStatusIndicator.tsx +0 -72
  235. package/src/schemas/subscription/subscriptionPlanSchema.tsx +0 -185
  236. package/src/schemas/subscription/subscriptionSchema.tsx +0 -152
  237. package/src/schemas/subscriptionPlan.ts +0 -422
  238. package/src/schemas/tenant.tsx +0 -129
  239. package/src/schemas/tenantUser.tsx +0 -96
  240. package/src/schemas/tenant_superadmin.tsx +0 -119
  241. package/src/schemas/user.tsx +0 -26
  242. package/src/systemResources.old.tsx +0 -928
  243. package/src/systemResources.tsx +0 -1369
  244. package/src/templates/ResourceTemplate.tsx +0 -240
  245. package/src/templates/ResourceTemplate.tsx.memoized_experiment +0 -350
  246. package/src/templates/ResourceTemplate.tsx.original +0 -396
  247. package/src/templates/ResourceTemplateCreate.tsx +0 -182
  248. package/src/templates/ResourceTemplateEdit.tsx +0 -176
  249. package/src/templates/ResourceTemplateFull.tsx +0 -581
  250. package/src/templates/ResourceTemplateList.tsx +0 -340
  251. package/src/templates/ResourceTemplateOld.tsx.bkup +0 -567
  252. package/src/templates/ResourceTemplateShow.tsx +0 -88
  253. package/src/templates/TrashTemplate.tsx +0 -179
  254. package/src/tenantResources.tsx +0 -223
  255. package/src/test_portal_bubbles.tsx +0 -40
  256. package/src/theme/AppHeader.tsx +0 -52
  257. package/src/theme/AppLayoutSetting.tsx +0 -33
  258. package/src/theme/AppLogo.tsx +0 -13
  259. package/src/theme/AppSidebar.tsx +0 -12
  260. package/src/theme/AppSidebarContent.tsx +0 -105
  261. package/src/theme/AppSidebarLogo.tsx +0 -48
  262. package/src/theme/components/PageTitle.tsx +0 -37
  263. package/src/utils/cache/CacheInvalidatorContext.tsx +0 -125
  264. package/src/utils/cache/CacheInvalidatorListenerComponent.tsx +0 -10
  265. package/src/utils/cache/useCacheInvalidatorListener.tsx +0 -27
  266. package/src/utils/convertFileToBase64.tsx +0 -9
  267. package/src/utils/convertToFile.tsx +0 -14
  268. package/src/utils/cookies.tsx +0 -33
  269. package/src/utils/dashDefaultQueryClient.tsx +0 -34
  270. package/src/utils/dataUrlToBlob.tsx +0 -30
  271. package/src/utils/deepReplace.tsx +0 -19
  272. package/src/utils/getProfileMenu.tsx +0 -41
  273. package/src/utils/getTenantSettings.tsx +0 -9
  274. package/src/utils/getType.tsx +0 -8
  275. package/src/utils/getUserSettings.tsx +0 -8
  276. package/src/utils/hasCode.tsx +0 -14
  277. package/src/utils/index.ts +0 -19
  278. package/src/utils/injectTenantStyles.ts +0 -28
  279. package/src/utils/isComponent.tsx +0 -45
  280. package/src/utils/navEvents.tsx +0 -91
  281. package/src/utils/prototypes.tsx +0 -5
  282. package/src/utils/regexp.tsx +0 -4
  283. package/src/utils/resolveObjectPath.tsx +0 -4
  284. package/src/utils/setNativeValue.tsx +0 -24
  285. package/src/utils/slugify.tsx +0 -11
  286. package/src/utils/validators/emailValidator.tsx +0 -6
  287. package/src/utils/validators/requiredValidator.tsx +0 -5
  288. package/src/utils/validators/rutValidator.tsx +0 -31
  289. package/src/utils/validators.tsx +0 -96
@@ -1,456 +0,0 @@
1
- /* eslint-disable @typescript-eslint/indent */
2
- /* eslint-disable no-mixed-spaces-and-tabs */
3
- /**
4
- * TODO: Customize the error page
5
- * TODO: Implement MemoryHistory instead of history.
6
- */
7
- import * as React from 'react';
8
- import { Route, Routes, useLocation, useNavigate } from 'react-router-dom';
9
- import { appTheme } from 'dash-styles';
10
-
11
- import RoutingWrapper from './RoutingWrapper';
12
- import DomainAppLayout from 'dash-default-theme/src/DomainAppLayout';
13
-
14
- import MyLoginPage from './pages/Login';
15
- import Profile from './pages/Profile';
16
-
17
- import { useDispatch, useSelector } from 'react-redux';
18
- import { getCookie, setCookie } from './utils/cookies';
19
- import { AuthContext, IAuthContext, useAuthContext } from './contexts/auth';
20
- import { IDASHAppState } from 'dash-admin-state';
21
- import { Error } from './components/error/Error';
22
- //import { lightTheme } from './themes';
23
- import coreResources from './resources';
24
-
25
- import { CustomRoutes, useTheme, AdminUI, AdminContext, AdminUIProps, Resource } from 'react-admin';
26
-
27
- export interface IAppResourceGroupsIcon {
28
- [x: string]: JSX.Element;
29
- }
30
-
31
- /**
32
- * Defines the interface for the DASHAdmin application, which includes various configuration options for customizing the application's behavior.
33
- *
34
- * @template U - The interface for the application's user data.
35
- * @template A - The interface for the application's authentication data.
36
- * @template R - The interface for the application's resource data, which must be an extension of `IAutoResourceConfig`.
37
- * @template C - The interface for the application's constants.
38
- *
39
- * @property {C} [initialAppConstants] - The initial app constants for the application.
40
- * @property {IDASHAppState<U, A, R>} [initialAppState] - The initial app state for the application.
41
- * @property {any} [customDataProvider] - A custom data provider to replace the default one.
42
- * @property {R[]} [customResources] - The custom resources for the application.
43
- * @property {React.FC<any>} [customLoginPage] - A custom login page to replace the default one.
44
- * @property {React.FC<IAppLayout>} [customLayout] - A custom layout to replace the default one.
45
- * @property {() => JSX.Element} [customNotification] - A custom notification component to replace the default one.
46
- * @property {any} [customErrorPage] - A custom error page to replace the default one.
47
- * @property {any} [customAuthProvider] - A custom auth provider to replace the default one.
48
- * @property {any} [customI18nProvider] - A custom i18n provider to replace the default one.
49
- * @property {boolean} [useCoreResources] - Whether to use the default core resources or not.
50
- * @property {JSX.Element | false} [customProfilePage] - A custom profile page or `false` to disable the default one.
51
- * @property {JSX.Element | false} [customRecoverPassword] - A custom recover password page or `false` to disable the default one.
52
- * @property {JSX.Element | false} [customVerifyAccount] - A custom verify account page or `false` to disable the default one.
53
- * @property {JSX.Element | false} [customChangePassword] - A custom change password page or `false` to disable the default one.
54
- * @property {any} [customThemeConfig] - A custom Material UI theme configuration.
55
- * @property {Route[]} [customAuthRoutes] - Custom authentication routes.
56
- * @property {Route[]} [customRoutes] - Custom routes.
57
- * @property {QueryClient} [customQueryClient] - A custom QueryClient.
58
- * @property {any} [history] - The history object (deprecated).
59
- * @property {{ [x: string]: string }} [customDict] - Custom dictionary translations.
60
- * @property {{ [x: string]: string }} [customReplacements] - Custom string replacements.
61
- * @property {JSX.Element} [children] - The child components of the DASHAdmin application.
62
- */
63
- export interface IDASHAdmin<U, A, R, C> {
64
- /**
65
- * DASHAdmin application default app state; you can specify the User <U> interface, the Auth <A> interface and the Resources <R> interface
66
- * U: App User Interface
67
- * A: App Auth Interface (Auth is for system config for an auth user)
68
- * R: Resource items interface, always will be an IAutoResourceConfig extension class.
69
- * C: Interface for app constants
70
- */
71
- initialAppConstants?: C;
72
- //initialAppState?: IDASHAppState<U, A, R>;
73
- //dashAdminState?: S;
74
- /** A default data provider is included, replaces the entire data provider */
75
- customDataProvider?: any;
76
- /** Your application resources */
77
- customResources?: R[];
78
- /** replaces the login page */
79
- customLoginPage?: React.FC<any>;
80
- /** replaces the layout */
81
- customLayout?: React.FC<IAppLayout>;
82
- /** replaces the default notification; https://marmelab.com/react-admin/Admin.html#notification */
83
- customNotification?: () => React.JSX.Element;
84
- /** replaces the default error page */
85
- customErrorPage?: any;
86
- /** replaces the default data provider*/
87
- customAuthProvider?: any;
88
- /** replaces the I18n provider*/
89
- customI18nProvider?: any;
90
- /** Default resources for system/admin model to work with the default backend api are included, if set to false, no system resources will be appended */
91
- useCoreResources?: boolean;
92
- /** false to disable and handle your own route */
93
- customProfilePage?: JSX.Element | false;
94
- /** false to disable and handle your own route */
95
- customRecoverPassword?: JSX.Element | false;
96
- /** false to disable and handle your own route */
97
- customVerifyAccount?: JSX.Element | false;
98
- /** false to disable and handle your own route */
99
- customChangePassword?: JSX.Element | false;
100
- /** Material UI theme */
101
- customThemeConfig?: any;
102
- /** Custom Auth Routes */
103
- customAuthRoutes?: React.ReactElement[] /*React.ReactElement[];*/
104
- /** Custom Not Authenticated Routes */
105
- customRoutes?: React.ReactElement[] /*React.ReactElement[];*/
106
- /** QueryClient */
107
- customQueryClient?: QueryClient;
108
- /** History. @deprecated notice */
109
- history?: any; // TODO: MemoryHistory
110
- // error={{errorComponent:Error}} // TODO as defined in the header of this file.
111
- customDict?: { [x: string]: string }
112
- customReplacements?: { [x: string]: string }
113
- children?: JSX.Element;
114
- }
115
-
116
- import authProvider from './providers/authProvider';
117
- import dataProvider from './providers/dataProvider';
118
- import i18nProvider from './providers/i18nProvider';
119
-
120
- import DASHStorageClass from './classes/DASHStorageClass';
121
-
122
- import { QueryClient } from '@tanstack/react-query';
123
-
124
-
125
- import checkRole from './helpers/checkRole';
126
-
127
- import { Provider } from 'react-redux';
128
-
129
- import ConstantsProvider, { ConstantsContext } from './config/ConstantsService';
130
-
131
- import AppLayout, { IAppLayout } from './layout/AppLayout';
132
- import VerifyAccount from './pages/VerifyAccount';
133
- import RecoverPassword from './pages/RecoverPassword';
134
- import ChangePassword from './pages/ChangePassword';
135
-
136
- import { setResources } from 'dash-admin-state/src/redux/actions/Resources';
137
- //import configureStore from 'dash-admin-state/src/redux/store';
138
- import {
139
- DictionaryProvider,
140
- } from './contexts/dictionary/DictionaryContext';
141
- import { IDashAutoAdminResourceConfig } from 'dash-auto-admin';
142
- import ResourceTemplate from './templates/ResourceTemplate';
143
- import { JSX, useEffect } from 'react';
144
- import RADashComponent from './react-admin-dash/RADashComponent';
145
- import DASHAuthenticationService from './contexts/auth/DASHAuthenticationService';
146
-
147
-
148
- interface IAsyncResources extends AdminUIProps {
149
- resources: any;
150
- }
151
-
152
-
153
- const DASHAdminApp: React.FC<IDASHAdmin<unknown, unknown, unknown, unknown>> = (props) => {
154
- const {
155
- customLoginPage = MyLoginPage,
156
- customLayout = AppLayout,
157
- customNotification,
158
- customErrorPage,
159
- customDataProvider,
160
- customAuthProvider,
161
- customI18nProvider,
162
- customResources,
163
- useCoreResources = true,
164
- customProfilePage,
165
- customRecoverPassword,
166
- customChangePassword,
167
- customVerifyAccount,
168
- customThemeConfig,
169
- customAuthRoutes,
170
- customRoutes,
171
- customQueryClient,
172
- customDict,
173
- customReplacements,
174
- history,
175
- children,
176
- } = props;
177
-
178
- //Locale
179
- const ReactLocale = useSelector(
180
- (state: IDASHAppState<unknown, unknown, IDashAutoAdminResourceConfig>) =>
181
- state.settings.locale,
182
- );
183
- const resources = useSelector(
184
- (state: IDASHAppState<unknown, unknown, IDashAutoAdminResourceConfig>) =>
185
- state.resources.items,
186
- );
187
-
188
- const dispatch = useDispatch();
189
- //const currentAppLocale = AppLocale[locale.locale];
190
-
191
-
192
- //Roles
193
- const _checkRole = (permissions, roles) => {
194
- return checkRole(permissions, roles);
195
- };
196
-
197
- //const a = useSelector((state: IDASHAppState) => state.settings.locale);
198
- /** The auth context watches for auth changes */
199
- //const { authenticated, user }: IAuthContext = React.useContext(AuthContext);
200
- const { authenticated, user } = useAuthContext();
201
- // Concatenate default system resources (coreResources) with the AppResouces (customResources):
202
- const calculateResources = () => {
203
- const _resources = !children
204
- ? customResources
205
- ? customResources && useCoreResources === false
206
- ? customResources
207
- : [...coreResources, ...customResources]
208
- : coreResources
209
- : [];
210
- if (_resources && _resources.length > 0) {
211
- dispatch<any>(setResources(_resources));
212
- }
213
- };
214
-
215
- /** When the application loads, process the resources, and dispatch the redux setter. */
216
- /*React.useEffect(() => {
217
- console.log("calculateResources on refresh")
218
- calculateResources();
219
- }, []);*/
220
-
221
- /** When the authcontext changes, update the resources; this is necessary to render different menus, if the user log out, then log in with a different role. */
222
- React.useEffect(() => {
223
- //console.log("calculateResources on auth")
224
- if(authenticated ) calculateResources();
225
- }, [authenticated]);
226
-
227
- /** When the redux resources are updated, store them in an ES6 Class, in order to be accessible in the data-provider without redux */
228
- React.useEffect(() => {
229
- //console.log("updating resources")
230
- // DASHStorageClass is required to be access the current Resources in the dataProvider;
231
- // TODO: store just a simplified serialized version.
232
- DASHStorageClass.resources = resources;
233
- }, [resources]);
234
-
235
- /**
236
- * DASH Admin AuthContext
237
- * AuthContext from RA can't be used because this happens before RA initialization
238
- */
239
- React.useEffect(() => {
240
- if (authenticated && resources) {
241
- if (!children) {
242
- try {
243
- if (user?.tenant_id) {
244
-
245
-
246
- dashStorage.setItem('tenant_id', user.tenant_id.toString());
247
- setCookie('tenant_id', user.tenant_id.toString());
248
-
249
-
250
- }
251
- } catch (e) {
252
- console.error(e);
253
- }
254
- }
255
- }
256
- }, [authenticated, user, resources]);
257
-
258
- /* Sets the application auth and no auth custom routes */
259
- /* @ts-ignore */
260
- const getCustomAuthRoutes = (): Route[] => customAuthRoutes ?? [];
261
-
262
- /* @ts-ignore */
263
- const getCustomRoutes = (): Route[] => customRoutes ?? [];
264
- const navigate = useNavigate();
265
- useEffect(() =>{
266
- const redirect = DASHAuthenticationService.getPendingRedirect();
267
- if(redirect) {
268
- DASHAuthenticationService.clearPendingRedirect();
269
- navigate(redirect)
270
- }
271
- },[authenticated])
272
-
273
- const AsyncResources: React.FC<IAsyncResources> = (p) => {
274
- const { resources: res, ...rest } = p;
275
-
276
- const _resources = res.map((originalResource:any /*IDashAutoAdminResourceConfig)*/) => {
277
-
278
- /* Deprecated
279
-
280
- if (_checkRole(permissions, resource.roles) && resource.component) {
281
- _resources.push(resource.component && resource.component(resource));
282
- }
283
-
284
- */
285
-
286
-
287
- const { component: InputResourceTemplate, ...restProps } = originalResource;
288
- const ResourceComponent = InputResourceTemplate || ResourceTemplate;
289
- return ResourceComponent(restProps);
290
- });
291
-
292
- return (
293
- <>
294
- <AdminUI {...rest} /*ready={Loading}*/>
295
-
296
- {_resources.map((parsedResource) => parsedResource)}
297
-
298
- <CustomRoutes>
299
- {(authenticated) && customProfilePage !== false ? (
300
- <Route
301
- key={'/profile'}
302
- path='/profile'
303
- element={customProfilePage || <Profile />}
304
- />
305
- ) : <></>}
306
-
307
- {(authenticated) && getCustomAuthRoutes()
308
- .filter(route => !route.props['data-layout']?.toString().includes('no-layout'))
309
- .map((route, index) => {
310
-
311
- //console.log('Auth Route Key:', route.props.get)
312
- return <Route key={`auth-route-${index}`} {...route.props} />
313
- })}
314
-
315
-
316
- {getCustomRoutes()
317
- .filter(route => {
318
-
319
- if ((authenticated ) && getCustomAuthRoutes().some(authRoute => authRoute.props.path === route.props.path)) {
320
- return false
321
- }
322
- return !route.props['data-layout']?.toString().includes('no-layout')
323
- })
324
- .map((route, index) => {
325
-
326
- //console.log('Normal Route Key:', route.props)
327
- return <Route key={`custom-auth-route-${index}`} {...route.props}>
328
- {route.props.children || <></>}
329
- </Route>
330
-
331
- })}
332
-
333
- </CustomRoutes>
334
-
335
- <CustomRoutes noLayout>
336
-
337
- {authenticated ? getCustomAuthRoutes()
338
- .filter(route => route.props['data-layout']?.toString().includes('no-layout'))
339
- .map((route, index) => {
340
-
341
- //console.log('No layout Auth Route Key:', route.props.get)
342
- return <Route key={`auth-route-${index}`} {...route.props} />
343
- }) : <></>}
344
-
345
- {getCustomRoutes()
346
- .filter(route => {
347
-
348
- if (authenticated && getCustomAuthRoutes().some(authRoute => authRoute.props.path === route.props.path)) {
349
- return false
350
- }
351
- return route.props['data-layout']?.toString().includes('no-layout')
352
- })
353
- .map((route, index) => {
354
-
355
- //console.log('No layout Normal Route Key:', route.props)
356
- return <Route key={`custom-auth-route-${index}`} {...route.props}>
357
- {route.props.children || <></>}
358
- </Route>
359
-
360
- })}
361
-
362
-
363
- </CustomRoutes>
364
-
365
- </AdminUI></>
366
- );
367
- };
368
-
369
- const constants = React.useContext(ConstantsContext);
370
-
371
- return children ? (
372
- <DictionaryProvider
373
- dictionary={customDict ? { ...constants.systemConstants.dict, ...customDict } : constants.systemConstants.dict}
374
- replacements={customReplacements ? { ...constants.systemConstants.replacements, ...customReplacements } : constants.systemConstants.replacements}
375
- >
376
- <AdminContext
377
- dataProvider={customDataProvider || dataProvider}
378
- i18nProvider={customI18nProvider || i18nProvider}
379
- authProvider={customAuthProvider || authProvider}
380
- {...(customThemeConfig && { theme:customThemeConfig })}
381
- {...(customQueryClient && { queryClient: customQueryClient as QueryClient })}
382
- {...((history !== null || history !== undefined) && { history })}
383
- //store={store} //TODO implement the store override
384
- // error={{ errorComponent: Error }} // TODO ¿how to customize the error page?
385
- >
386
-
387
- <AdminUI
388
- {...(customNotification && { notification: customNotification })}
389
- layout={customLayout}
390
- /* @ts-ignore Known issue type mismatch */
391
- loginPage={customLoginPage}
392
- {...(customErrorPage && { catchAll: customErrorPage })}
393
- {...(Error && { error: Error })}
394
- //error={Error} // TODO ¿how to customize the error page?
395
- >
396
- {children}
397
- </AdminUI>
398
- <RADashComponent />
399
- </AdminContext>
400
- </DictionaryProvider>
401
- ) : (
402
- <DictionaryProvider
403
- dictionary={customDict ? { ...constants.systemConstants.dict, ...customDict } : constants.systemConstants.dict}
404
- replacements={customReplacements ? { ...constants.systemConstants.replacements, ...customReplacements } : constants.systemConstants.replacements}
405
- >
406
-
407
- <AdminContext
408
- dataProvider={customDataProvider || dataProvider}
409
- i18nProvider={customI18nProvider || i18nProvider}
410
- authProvider={customAuthProvider || authProvider}
411
- {...(customThemeConfig && { theme:customThemeConfig })}
412
- {...(customQueryClient && { queryClient: customQueryClient as QueryClient })}
413
- {...(history && { history: history })}
414
- // error={{ errorComponent: Error }} // TODO how to customize the error page
415
- >
416
-
417
- <AsyncResources
418
- {...(customNotification && { notification: customNotification })}
419
- /* @ts-ignore type mismatch */
420
- loginPage={customLoginPage}
421
- layout={customLayout}
422
- {...(customErrorPage && { catchAll: customErrorPage })}
423
- {...(Error && { error: Error })}
424
- resources={resources}
425
- />
426
- <RADashComponent />
427
- </AdminContext>
428
-
429
- </DictionaryProvider>
430
- );
431
- };
432
-
433
- /**
434
- * The main DASHAdmin component
435
- *
436
- * @param props - The props object containing the initial app state, initial app constants, and optional children components.
437
- * @returns A React component that renders the DASHAdminApp with the provided props and context.
438
- */
439
-
440
-
441
- const DASHAdmin = <U, A, R, C, S>(props: IDASHAdmin<U, A, R, C>): JSX.Element => {
442
-
443
- const { initialAppConstants, children, ...rest } = props;
444
-
445
- return (
446
- /* @ts-ignore */
447
-
448
- <ConstantsProvider<C> initialAppConstants={initialAppConstants}>
449
- {children ? <DASHAdminApp {...rest}>{children}</DASHAdminApp> : <DASHAdminApp {...rest} />}
450
- </ConstantsProvider>
451
-
452
- );
453
- };
454
- export default React.memo(
455
- DASHAdmin as React.ComponentType<IDASHAdmin<unknown, unknown, unknown, unknown>>
456
- ) as typeof DASHAdmin;
@@ -1,143 +0,0 @@
1
- import { PropsWithChildren, useEffect, useState, useRef } from "react";
2
- import { BrowserRouter, Route, Routes, useLocation } from "react-router-dom";
3
-
4
- import { AnimatePresence } from "framer-motion";
5
- import { DASHAdminSystemConstants } from "dash-constants";
6
- import MotionWrapper from "./layout/MotionWrapper";
7
-
8
- /**
9
- * Interface for the DASH Routing Wrapper component
10
- * @interface IDASHRoutingWrapper
11
- * @extends {PropsWithChildren}
12
- * @property {any} [Wrapper] - Optional wrapper component to wrap around children
13
- * @property {any} [BrowserRouterComponent] - Optional custom router component to replace default BrowserRouter
14
- * @property {any} [LayoutComponent] - Optional layout component to wrap around the routing system
15
- * @property {boolean} [wrapLayout] - Whether to wrap the layout around the entire routing system
16
- */
17
- export interface IDASHRoutingWrapper extends PropsWithChildren{
18
- Wrapper?:any
19
- BrowserRouterComponent?:any
20
- LayoutComponent?:any
21
- wrapLayout?: boolean
22
- }
23
-
24
- /**
25
- * A wrapper component that provides routing functionality
26
- * @param {IDASHRoutingWrapper['Wrapper']} Wrapper - Custom Wrapper component to wrap around routes
27
- * @param {IDASHRoutingWrapper['BrowserRouterComponent']} BrowserRouterComponent - Browser Router Component, such as BrowserRouter.
28
- * @param {IDASHRoutingWrapper['LayoutComponent']} LayoutComponent - Layout component to wrap around routing system
29
- * @returns {JSX.Element} Rendered component
30
- */
31
- const RoutingWrapper: React.FC<IDASHRoutingWrapper> = ({
32
- Wrapper,
33
- BrowserRouterComponent,
34
- LayoutComponent,
35
- children
36
- }) => {
37
-
38
- const RouterComponent = BrowserRouterComponent ? BrowserRouterComponent : BrowserRouter;
39
-
40
- // If wrapLayout is true, wrap the layout around the entire routing system
41
- if (LayoutComponent) {
42
- return (
43
- <RouterComponent>
44
-
45
- <LayoutComponent>
46
- {Wrapper ? (
47
- <Wrapper>
48
- {children}
49
- </Wrapper>
50
- ) : (
51
- children
52
- )}
53
- </LayoutComponent>
54
- </RouterComponent>
55
- );
56
- }
57
-
58
- // Default behavior - layout is handled by react-admin
59
- return (
60
- <RouterComponent>
61
-
62
- {Wrapper ? (
63
- <Wrapper>
64
- {children}
65
- </Wrapper>
66
- ) : (
67
- children
68
- )}
69
- </RouterComponent>
70
- );
71
- };
72
-
73
- export const AnimatedRoutesWrapper: React.FC<PropsWithChildren> = ({ children }) => {
74
- const location = useLocation();
75
- let method = "wait";
76
- // Driven by env: DASHAdminSystemConstants.system.PAGE_TRANSITIONS reads
77
- // `<PREFIX>PAGE_TRANSITIONS` (default true). Set to false for Raspberry Pi
78
- // / low-powered terminals to skip framer-motion route animations.
79
- let transitionEnabled = DASHAdminSystemConstants.system.PAGE_TRANSITIONS;
80
- const pathParts = location.pathname.split('/');
81
- const lastPart = pathParts[pathParts.length - 1];
82
- const [show, setShow] = useState(true); // Initialize as true
83
- const isMountedRef = useRef(true);
84
-
85
- if (!isNaN(parseInt(lastPart))) { method = 'sync'; }
86
-
87
- useEffect(() => {
88
- // Only update if component is still mounted
89
- if (isMountedRef.current) {
90
- setShow(true);
91
- }
92
- }, [location.pathname]);
93
-
94
- useEffect(() => {
95
- // Set mounted ref to true on mount
96
- isMountedRef.current = true;
97
-
98
- // Cleanup only on actual unmount
99
- return () => {
100
- isMountedRef.current = false;
101
- };
102
- }, []); // Empty dependency array - only runs on mount/unmount
103
-
104
- return transitionEnabled ? (
105
- <AnimatePresence
106
- mode={method as "wait" | "sync" | "popLayout"}
107
-
108
- onExitComplete={() => {
109
-
110
-
111
-
112
- // Only set show to false if component is still mounted
113
- if (isMountedRef.current) {
114
- setShow(false);
115
- }
116
- }}
117
- >
118
- <Routes location={location} key={location.pathname}>
119
- <Route
120
- element={
121
- <MotionWrapper
122
- pageTransition={true}
123
- loadingSpinner={true}
124
- transitionDuration={0.5}
125
- initialShow={show}
126
- maxTimeOut={8000} // Match this with your animation needs
127
- usePortalForBackground={true}
128
- portalTarget={".dash-app-layout-content"}
129
- usePortalForSpinner={true}
130
- spinnerPortalTarget={"body"}
131
- />
132
- }
133
- >
134
- {children}
135
- </Route>
136
- </Routes>
137
- </AnimatePresence>
138
- ) : (
139
- <Routes location={location} key={location.pathname}>{children}</Routes>
140
- );
141
- }
142
-
143
- export default RoutingWrapper;
@@ -1,8 +0,0 @@
1
- class DASHStorageClass {
2
- static resources: any[] = [];
3
- //static headerComponents:any[] = [];
4
- //static panelSettings:any = {};
5
- //static setResources(resources) { DASHStorageClass.resources = resources }
6
- static constants: any; // It should be IAppConstants
7
- }
8
- export default DASHStorageClass;
@@ -1,27 +0,0 @@
1
- import React from 'react';
2
- import { RichTextInput } from 'ra-input-rich-text';
3
- import { RichTextField } from 'react-admin';
4
- import { IDashAutoAdminCustomFieldComponent } from 'dash-auto-admin';
5
-
6
- const RichTextFieldEdit: React.FC<IDashAutoAdminCustomFieldComponent> = ({
7
- method,
8
- attribute,
9
- }) => {
10
- return <RichTextInput label={attribute.label} source={attribute.attribute} />;
11
- };
12
-
13
- const RichTextFieldWrapper = ({
14
- method,
15
- attribute,
16
- resourceConfig,
17
- }: IDashAutoAdminCustomFieldComponent) => {
18
- switch (method) {
19
- case 'edit':
20
- case 'create':
21
- return <RichTextFieldEdit attribute={attribute} method={method} resourceConfig={resourceConfig} />;
22
- case 'view':
23
- return <RichTextField source={attribute.attribute} />;
24
- }
25
- };
26
-
27
- export default RichTextFieldWrapper;
@@ -1,46 +0,0 @@
1
- import { IDashAutoAdminResourceConfig } from "dash-auto-admin";
2
- import { useEffect } from "react";
3
- import { useRedirect, Loading } from "react-admin";
4
- import { useParams } from "react-router";
5
- import {DASHAdminSystemConstants} from 'dash-constants';
6
-
7
- interface IRedirect {
8
- method: 'edit' | 'list' | 'create' | 'show';
9
- drawerMethod: 'edit' | 'list' | 'create' | 'show';
10
- resourceConfig: IDashAutoAdminResourceConfig;
11
- stateHashPattern?: string;
12
- }
13
-
14
- const URL_PREFIX = DASHAdminSystemConstants.system.URL_PREFIX;
15
- const Redirect: React.FC<IRedirect> = ({
16
- method,
17
- resourceConfig,
18
- stateHashPattern = URL_PREFIX,
19
- drawerMethod = 'edit',
20
- ..._props
21
- }) => {
22
- const params = useParams();
23
- const redirect = useRedirect();
24
-
25
- const idParamName = resourceConfig?.idParamName || 'id';
26
-
27
- useEffect(() => {
28
- let _stateHash = stateHashPattern.replace(
29
- `:${idParamName}`,
30
- params[idParamName],
31
- );
32
- _stateHash = _stateHash.replace(':method', drawerMethod);
33
-
34
- redirect(
35
- method,
36
- resourceConfig.model,
37
- method === 'edit' ? params.id : null,
38
- null,
39
- { hash: _stateHash },
40
- );
41
- }, []);
42
-
43
- return <Loading />;
44
- };
45
-
46
- export default Redirect;