@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,23 +0,0 @@
1
- import * as React from 'react';
2
- import { resolveBrowserLocale } from 'react-admin';
3
- import polyglotI18nProvider from 'ra-i18n-polyglot';
4
- import englishMessages from './i18n/en';
5
- import spanishMessages from './i18n/es';
6
-
7
- const messages = {
8
- es: spanishMessages,
9
- en: englishMessages,
10
- };
11
-
12
- const availableLocales = [
13
- { locale: 'en', name: 'English' },
14
- { locale: 'es', name: 'Español' },
15
- ];
16
-
17
- // ra-i18n-polyglot signature: (getMessages, initialLocale, availableLocales, polyglotOptions)
18
- export default polyglotI18nProvider(
19
- (locale) => (messages[locale] ? messages[locale] : messages.es),
20
- resolveBrowserLocale(),
21
- availableLocales, // 3rd param: availableLocales array
22
- { allowMissing: true } // 4th param: polyglotOptions
23
- );
@@ -1,240 +0,0 @@
1
- import { useContext, useEffect } from 'react';
2
- import { useGetIdentity, useResourceDefinitions } from 'react-admin';
3
- import { useAuthContext } from '../contexts/auth';
4
- import { useDialog } from 'dash-dialog';
5
- import { useLocation, useNavigate } from 'react-router-dom';
6
- import { useSelector } from 'react-redux';
7
- import { dashStorage } from 'dash-utils';
8
- declare global {
9
- interface Window {
10
- __DASH_DEBUG__: any;
11
- }
12
- }
13
-
14
- // Debugging logic moved to a custom hook
15
- function useRADashDebug({
16
- location,
17
- resourceDefinitions,
18
- reduxState,
19
- authContext,
20
- identity,
21
- identityLoading,
22
- dialog,
23
- navigate,
24
- }) {
25
- useEffect(() => {
26
- // Enhanced route debugging
27
- const debugInfo = {
28
- timestamp: new Date().toISOString(),
29
- location: {
30
- pathname: location.pathname,
31
- search: location.search,
32
- hash: location.hash,
33
- state: location.state,
34
- key: location.key
35
- },
36
- reactAdminResources: Object.keys(resourceDefinitions || {}),
37
- resourceDefinitionsDetails: resourceDefinitions,
38
- reduxResources: reduxState.resources.map(r => ({
39
- model: r.model,
40
- label: r.label,
41
- roles: r.roles,
42
- group: r.group
43
- })),
44
- authContext: {
45
- authenticated: authContext.authenticated,
46
- user: authContext.user ? {
47
- id: authContext.user.id,
48
- roles: authContext.user.roles,
49
- tenant_id: authContext.user.tenant_id
50
- } : null
51
- },
52
- localStorage: {
53
- currentAppPath: dashStorage.getItem('currentAppPath'),
54
- currentMallSlug: dashStorage.getItem('currentMallSlug'),
55
- currentMallPath: dashStorage.getItem('currentMallPath'),
56
- tenant_id: dashStorage.getItem('tenant_id'),
57
- userData: dashStorage.getItem('userData')
58
- },
59
- windowLocation: {
60
- href: window.location.href,
61
- origin: window.location.origin,
62
- pathname: window.location.pathname,
63
- search: window.location.search,
64
- hash: window.location.hash
65
- }
66
- };
67
-
68
- console.group('🔍 RADashComponent Route Debug');
69
- console.log('📍 Current Location:', debugInfo.location);
70
- console.log('🌐 Window Location:', debugInfo.windowLocation);
71
- console.log('📦 React Admin Resources:', debugInfo.reactAdminResources);
72
- console.log('📋 Resource Definitions:', debugInfo.resourceDefinitionsDetails);
73
- console.log('🏪 Redux Resources:', debugInfo.reduxResources);
74
- console.log('🔐 Auth Context:', debugInfo.authContext);
75
- console.log('💾 Local Storage:', debugInfo.localStorage);
76
-
77
- // Check for route matches
78
- const currentPath = location.pathname;
79
- const matchingResources = reduxState.resources.filter(resource => {
80
- const resourcePath = resource.model;
81
- const matches = currentPath.includes(resourcePath) || resourcePath === '/' && currentPath === '/';
82
- return matches;
83
- });
84
-
85
- console.log('🎯 Matching Resources for current path:', matchingResources);
86
-
87
- // Check if current path should match any resource
88
- const pathSegments = currentPath.split('/').filter(Boolean);
89
- console.log('📂 Path Segments:', pathSegments);
90
-
91
- // Analyze potential routing issues
92
- const routingIssues = [];
93
-
94
- if (reduxState.resources.length === 0) {
95
- routingIssues.push('No resources loaded in Redux state');
96
- }
97
-
98
- if (Object.keys(resourceDefinitions || {}).length === 0) {
99
- routingIssues.push('No React Admin resource definitions found');
100
- }
101
-
102
- if (matchingResources.length === 0 && currentPath !== '/') {
103
- routingIssues.push(`No resources match current path: ${currentPath}`);
104
- }
105
-
106
- if (!authContext.authenticated && reduxState.resources.some(r => !r.roles?.includes('Public'))) {
107
- routingIssues.push('User not authenticated but trying to access protected resources');
108
- }
109
-
110
- if (routingIssues.length > 0) {
111
- console.warn('⚠️ Potential Routing Issues:', routingIssues);
112
- }
113
-
114
- console.groupEnd();
115
-
116
- // Store debug info globally for inspection
117
- window.__DASH_DEBUG__ = {
118
- ...window.__DASH_DEBUG__,
119
- lastRouteDebug: debugInfo,
120
- routingIssues
121
- };
122
-
123
- }, [location, resourceDefinitions, reduxState, authContext]);
124
-
125
- useEffect(() => {
126
- // Debug resource changes
127
- console.group('📦 Resource Definitions Changed');
128
- console.log('Available Resources:', Object.keys(resourceDefinitions || {}));
129
- console.log('Resource Details:', resourceDefinitions);
130
- console.groupEnd();
131
- }, [resourceDefinitions]);
132
-
133
- useEffect(() => {
134
- // Debug auth changes
135
- console.group('🔐 Auth Context Changed');
136
- console.log('Authenticated:', authContext.authenticated);
137
- console.log('User:', authContext.user);
138
- console.log('Identity Loading:', identityLoading);
139
- console.log('Identity:', identity);
140
- console.groupEnd();
141
- }, [authContext.authenticated, authContext.user, identityLoading, identity]);
142
-
143
- useEffect(() => {
144
- // Global axios error handler
145
- const handleGlobalAxiosError = (event) => {
146
- console.error('🚨 Global Axios Error:', event.data);
147
- dialog({
148
- variant: 'danger',
149
- title: event.data?.name || "Error",
150
- content: event.data?.message || "Error desconocido",
151
- confirmText: 'Volver',
152
- closeText: 'Cerrar',
153
- onConfirm: () => {},
154
- onClose: () => {},
155
- });
156
- };
157
-
158
- window.addEventListener('global-axios-error', handleGlobalAxiosError);
159
- return () => {
160
- window.removeEventListener('global-axios-error', handleGlobalAxiosError);
161
- };
162
- }, [dialog]);
163
-
164
- useEffect(() => {
165
- // Debug React Admin routing errors
166
- const handleReactAdminError = (error) => {
167
- console.error('🚨 React Admin Error:', error);
168
- // Check if it's a routing error
169
- if (error.message?.includes('404') || error.message?.includes('not found')) {
170
- console.group('🔍 Route Not Found Debug');
171
- console.log('Current path:', location.pathname);
172
- console.log('Available resources:', Object.keys(resourceDefinitions || {}));
173
- console.log('Redux resources:', reduxState.resources.map(r => r.model));
174
- console.log('Suggested fixes:');
175
- console.log('1. Check if resource model matches the URL path');
176
- console.log('2. Verify resource permissions/roles');
177
- console.log('3. Ensure resource is properly registered');
178
- console.groupEnd();
179
- }
180
- };
181
-
182
- window.addEventListener('error', handleReactAdminError);
183
- window.addEventListener('unhandledrejection', (event) => {
184
- handleReactAdminError(event.reason);
185
- });
186
-
187
- return () => {
188
- window.removeEventListener('error', handleReactAdminError);
189
- window.removeEventListener('unhandledrejection', handleReactAdminError);
190
- };
191
- }, [location.pathname, resourceDefinitions, reduxState.resources]);
192
-
193
- useEffect(() => {
194
- // Add a helper function to manually trigger route analysis
195
- window.__DASH_DEBUG__ = {
196
- ...window.__DASH_DEBUG__,
197
- analyzeCurrentRoute: () => {
198
- console.group('🔍 Manual Route Analysis');
199
- console.log('Current pathname:', location.pathname);
200
- console.log('React Admin resources:', Object.keys(resourceDefinitions || {}));
201
- console.log('Redux resources:', reduxState.resources);
202
-
203
- // Try to find why route is not matching
204
- const pathWithoutLeadingSlash = location.pathname.replace(/^\//, '');
205
- const pathSegments = pathWithoutLeadingSlash.split('/').filter(Boolean);
206
-
207
- console.log('Path segments:', pathSegments);
208
-
209
- // Check each resource for potential matches
210
- reduxState.resources.forEach(resource => {
211
- const resourceModel = resource.model.replace(/^\//, '');
212
- const matches = pathSegments[0] === resourceModel ||
213
- (resource.model === '/' && location.pathname === '/');
214
-
215
- console.log(`Resource "${resource.model}" matches:`, matches, {
216
- resourceModel,
217
- firstPathSegment: pathSegments[0],
218
- roles: resource.roles,
219
- authenticated: authContext.authenticated
220
- });
221
- });
222
-
223
- console.groupEnd();
224
- },
225
- navigateToResource: (resourceName) => {
226
- console.log(`Navigating to resource: ${resourceName}`);
227
- navigate(`/${resourceName}`);
228
- }
229
- };
230
- }, [location, resourceDefinitions, reduxState, authContext, navigate]);
231
- }
232
-
233
- const RADashComponent = () => {
234
-
235
-
236
-
237
- return null;
238
- };
239
-
240
- export default RADashComponent;
@@ -1,77 +0,0 @@
1
- import * as React from 'react';
2
- import { ComponentType, ReactElement, isValidElement, Children } from 'react';
3
- import { Route, Routes } from 'react-router-dom';
4
- import { isValidElementType } from 'react-is';
5
- import { ResourceContextProvider, ResourceProps, RestoreScrollPosition } from 'react-admin';
6
-
7
- export const Resource = (props: ResourceProps) => {
8
- const { create, edit, list, name, show } = props;
9
-
10
- // Note: In React Router v7, we cannot pass arbitrary children to Routes.
11
- // The trash route and other custom routes should be handled via CustomRoutes
12
- // at the parent level, not as children of Resource.
13
-
14
- return (
15
- <ResourceContextProvider value={name}>
16
- <Routes>
17
- {create ? (
18
- <Route path="create/*" element={getElement(create)} />
19
- ) : null}
20
- {show ? <Route path=":id/show/*" element={getElement(show)} /> : null}
21
- {edit ? <Route path=":id/*" element={getElement(edit)} /> : null}
22
- {list ? (
23
- <Route
24
- path="/*"
25
- element={
26
- <RestoreScrollPosition
27
- storeKey={`${name}.list.scrollPosition`}
28
- >
29
- {getElement(list)}
30
- </RestoreScrollPosition>
31
- }
32
- />
33
- ) : null}
34
- </Routes>
35
- </ResourceContextProvider>
36
- );
37
- };
38
-
39
- const getElement = (ElementOrComponent: ComponentType<any> | ReactElement) => {
40
-
41
- if (isValidElement(ElementOrComponent)) {
42
- return ElementOrComponent;
43
- }
44
-
45
- if (isValidElementType(ElementOrComponent)) {
46
- const Element = ElementOrComponent as ComponentType<any>;
47
- return <Element />;
48
- }
49
-
50
- return null;
51
- };
52
-
53
- Resource.raName = 'Resource';
54
-
55
- Resource.registerResource = ({
56
- create,
57
- edit,
58
- icon,
59
- list,
60
- name,
61
- options,
62
- show,
63
- recordRepresentation,
64
- hasCreate,
65
- hasEdit,
66
- hasShow,
67
- }: ResourceProps) => ({
68
- name,
69
- options,
70
- hasList: !!list,
71
- hasCreate: !!create || !!hasCreate,
72
- hasEdit: !!edit || !!hasEdit,
73
- hasShow: !!show || !!hasShow,
74
- icon,
75
- recordRepresentation,
76
- });
77
-
@@ -1,130 +0,0 @@
1
- import { Resource, TabbedShowLayout } from 'react-admin';
2
- import { Show } from 'react-admin';
3
- // @ts-ignore - Layout may not exist
4
- import ApplicationLayout from '../../layouts/ApplicationLayout';
5
- import { IAppResourceConfig } from '../../interfaces/IAppResourceConfig';
6
- import { useNotify } from 'react-admin';
7
- import { useRedirect } from 'react-admin';
8
- // @ts-ignore - Dialog service may not exist
9
- import { useDialog } from '../../components/Dialog/DialogService';
10
- import { TopToolbar } from 'react-admin';
11
- import { EditButton } from 'react-admin';
12
- import { CustomRoutes } from 'react-admin';
13
- import { Route } from 'react-router';
14
- import TrashTemplate from '../Trash/TrashTemplate';
15
- // @ts-ignore - dash-auto-admin imports may not be available
16
- import AutoCreate from 'dash-auto-admin/AutoCreate';
17
- // @ts-ignore - dash-auto-admin imports may not be available
18
- import AutoEdit from 'dash-auto-admin/AutoEdit';
19
- // @ts-ignore - dash-auto-admin imports may not be available
20
- import DashAutoList from 'dash-auto-admin/DashAutoList';
21
- // @ts-ignore - dash-auto-admin imports may not be available
22
- import AutoReferenceTab from 'dash-auto-admin/AutoReferenceTab';
23
- // @ts-ignore - dash-auto-admin imports may not be available
24
- import AutoTabs from 'dash-auto-admin/AutoTabs';
25
- // @ts-ignore - dash-auto-admin imports may not be available
26
- import { AutoTitle } from 'dash-auto-admin';
27
-
28
- export const BrandResource = (resourceConfig: IAppResourceConfig) => {
29
- const beforeSubmut = (data: any) => {
30
- data.input_brand_mappings = data.input_brand_mappings.map(
31
- (ele) => ele.text,
32
- );
33
- return data;
34
- };
35
-
36
- return (
37
- <>
38
- <CustomRoutes>{TrashTemplate(resourceConfig)}</CustomRoutes>
39
- <Resource
40
- options={{ label: resourceConfig.label, group: resourceConfig.group }}
41
- name={resourceConfig.model}
42
- list={() => {
43
- return (
44
- <ApplicationLayout resourceConfig={resourceConfig}>
45
- <DashAutoList
46
- /*sx={{
47
- flexGrow: 1
48
- }}*/
49
- /*search={resourceConfig.search} schema={resourceConfig.listSchema ? resourceConfig.listSchema : resourceConfig.schema} BulkActions={resourceConfig.BulkActions} create={resourceConfig.create}*/ resourceConfig={
50
- resourceConfig
51
- }
52
- />
53
- </ApplicationLayout>
54
- );
55
- }}
56
- edit={() => (
57
- <ApplicationLayout resourceConfig={resourceConfig}>
58
- <AutoEdit
59
- beforeSubmit={beforeSubmut}
60
- //schema={resourceConfig.editSchema ? resourceConfig.editSchema : resourceConfig.schema}
61
- resourceConfig={resourceConfig}
62
- />
63
- </ApplicationLayout>
64
- )}
65
- create={() => {
66
- const notify = useNotify();
67
- const redirect = useRedirect();
68
- const dialog = useDialog();
69
- const onCreate = (data: any) => {
70
- notify(`Recurso Creado`,{type:'success'});
71
- dialog({
72
- variant: 'info',
73
- title: 'Recurso Creado',
74
- description: 'Se ha creado el recurso ' + resourceConfig.label,
75
- onConfirm: () => {
76
- redirect('/' + resourceConfig.model);
77
- },
78
- onClose: () => {},
79
- });
80
- };
81
- const onError = (error: any) => {
82
- notify(`Error!`);
83
- };
84
- return (
85
- <ApplicationLayout resourceConfig={resourceConfig}>
86
- <AutoCreate
87
- beforeSubmit={beforeSubmut}
88
- //schema={resourceConfig.createSchema ? resourceConfig.createSchema : resourceConfig.schema}
89
- onError={onError}
90
- onSubmit={onCreate}
91
- /*toolbar={<ResourceCreateToolbar />}*/ resourceConfig={
92
- resourceConfig
93
- } /*toolbar={<ResourceCreateToolbar />}*/
94
- />
95
- </ApplicationLayout>
96
- );
97
- }}
98
- show={() => {
99
- const ShowActions = ({ edit }) => (
100
- <TopToolbar sx={{mb:2}} >{edit !== false && <EditButton />}</TopToolbar>
101
- );
102
- return (
103
- <ApplicationLayout resourceConfig={resourceConfig}>
104
- <Show
105
- title={
106
- <AutoTitle
107
- //schema={resourceConfig.showSchema ? resourceConfig.showSchema : resourceConfig.schema} />}
108
- //actions={<ShowActions edit={resourceConfig.edit}
109
- resourceConfig={resourceConfig}
110
- />
111
- }
112
- >
113
- <TabbedShowLayout>
114
- {AutoTabs(resourceConfig.schema)}
115
- {resourceConfig.references &&
116
- resourceConfig.references.map((reference) =>
117
- AutoReferenceTab(reference),
118
- )}
119
- </TabbedShowLayout>
120
- </Show>
121
- </ApplicationLayout>
122
- );
123
- }}
124
- // @ts-ignore - icon type compatibility issue
125
- icon={resourceConfig.icon}
126
- />
127
- </>
128
- );
129
- };
130
- export default BrandResource;
@@ -1,180 +0,0 @@
1
- /**
2
- * DASH Resource Loader
3
- *
4
- * Dynamic resource loading system that loads resources from a JSON manifest.
5
- * Supports caching to prevent redundant imports and can be configured with
6
- * a custom manifest path.
7
- *
8
- * @packageDocumentation
9
- */
10
- import { IDashAutoAdminResourceConfig } from 'dash-auto-admin';
11
-
12
- /**
13
- * Resource manifest entry interface
14
- */
15
- export interface IResourceManifestEntry {
16
- /** Unique name identifier for the resource */
17
- name: string;
18
- /** Import path for the resource module */
19
- path: string;
20
- }
21
-
22
- /**
23
- * Resource loader configuration options
24
- */
25
- export interface IDASHResourceLoaderConfig {
26
- /** Path to the resource manifest JSON file */
27
- manifestPath?: string;
28
- /** Whether to enable caching of loaded resources */
29
- enableCache?: boolean;
30
- /** Custom manifest entries to use instead of loading from file */
31
- customManifest?: IResourceManifestEntry[];
32
- }
33
-
34
- /**
35
- * Cache for loaded resources to prevent redundant imports
36
- */
37
- let resourceCache: IDashAutoAdminResourceConfig[] | null = null;
38
-
39
- /**
40
- * Clear the resource cache
41
- * Useful when you need to reload resources
42
- */
43
- export const clearResourceCache = (): void => {
44
- resourceCache = null;
45
- };
46
-
47
- /**
48
- * Get cached resources if available
49
- */
50
- export const getCachedResources = (): IDashAutoAdminResourceConfig[] | null => {
51
- return resourceCache;
52
- };
53
-
54
- /**
55
- * Load resources from a manifest
56
- *
57
- * @param manifest - Array of resource manifest entries
58
- * @returns Promise resolving to array of resource configurations
59
- */
60
- export const loadResourcesFromManifest = async (
61
- manifest: IResourceManifestEntry[]
62
- ): Promise<IDashAutoAdminResourceConfig[]> => {
63
- const resources: IDashAutoAdminResourceConfig[] = [];
64
-
65
- const loadedModules = await Promise.all(
66
- manifest.map(async (item) => {
67
- try {
68
- // Dynamic import of the resource module
69
- const module = await import(/* @vite-ignore */ item.path);
70
- return {
71
- name: item.name,
72
- module: module.default || module,
73
- };
74
- } catch (error) {
75
- console.error(`Failed to load resource "${item.name}" from "${item.path}":`, error);
76
- return null;
77
- }
78
- })
79
- );
80
-
81
- loadedModules.forEach((loaded) => {
82
- if (loaded && loaded.module) {
83
- // Handle both single resource and array of resources
84
- if (Array.isArray(loaded.module)) {
85
- resources.push(...loaded.module);
86
- } else {
87
- resources.push(loaded.module);
88
- }
89
- }
90
- });
91
-
92
- return resources;
93
- };
94
-
95
- /**
96
- * Default manifest loader that imports the manifest from a path
97
- *
98
- * @param manifestPath - Path to the manifest JSON file
99
- * @returns Promise resolving to array of manifest entries
100
- */
101
- export const loadManifest = async (
102
- manifestPath: string
103
- ): Promise<IResourceManifestEntry[]> => {
104
- try {
105
- const manifestModule = await import(/* @vite-ignore */ manifestPath);
106
- return manifestModule.default || manifestModule;
107
- } catch (error) {
108
- console.error(`Failed to load manifest from "${manifestPath}":`, error);
109
- return [];
110
- }
111
- };
112
-
113
- /**
114
- * Create a resource loader function with configuration
115
- *
116
- * @param config - Resource loader configuration
117
- * @returns Async function that returns loaded resources
118
- *
119
- * @example
120
- * ```tsx
121
- * // Using manifest file path
122
- * const getResources = createDASHResourceLoader({
123
- * manifestPath: '@app/resourceManifest.json'
124
- * });
125
- *
126
- * // Using custom manifest array
127
- * const getResources = createDASHResourceLoader({
128
- * customManifest: [
129
- * { name: 'todoResource', path: '@app/resources/todoResource' }
130
- * ]
131
- * });
132
- *
133
- * // Then use it
134
- * const resources = await getResources();
135
- * ```
136
- */
137
- export const createDASHResourceLoader = (
138
- config: IDASHResourceLoaderConfig = {}
139
- ): (() => Promise<IDashAutoAdminResourceConfig[]>) => {
140
- const { manifestPath, enableCache = true, customManifest } = config;
141
-
142
- return async (): Promise<IDashAutoAdminResourceConfig[]> => {
143
- // Return cached resources if caching is enabled and cache exists
144
- if (enableCache && resourceCache) {
145
- return resourceCache;
146
- }
147
-
148
- let manifest: IResourceManifestEntry[];
149
-
150
- if (customManifest) {
151
- // Use custom manifest if provided
152
- manifest = customManifest;
153
- } else if (manifestPath) {
154
- // Load manifest from file path
155
- manifest = await loadManifest(manifestPath);
156
- } else {
157
- console.warn('No manifest path or custom manifest provided to resource loader');
158
- return [];
159
- }
160
-
161
- const resources = await loadResourcesFromManifest(manifest);
162
-
163
- // Cache the results if caching is enabled
164
- if (enableCache) {
165
- resourceCache = resources;
166
- }
167
-
168
- return resources;
169
- };
170
- };
171
-
172
- /**
173
- * Default resource loader using @app/resourceManifest.json
174
- * This is a convenience export for the most common use case.
175
- */
176
- export const getDASHResources = createDASHResourceLoader({
177
- manifestPath: '@app/resourceManifest.json',
178
- });
179
-
180
- export default createDASHResourceLoader;