@dashadmin/dash-app-common 1.3.25 → 1.3.26
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.
- package/dist/DashApp.js +176 -1
- package/dist/DashAppLoader.js +348 -3
- package/dist/DashDefaultResources.js +10 -1
- package/dist/components/DashDefaultPrivateApp.js +150 -1
- package/dist/components/DashDefaultPrivateResources.js +10 -1
- package/dist/components/DashDefaultPublicApp.js +20 -1
- package/dist/components/DashResourceLoader.js +245 -1
- package/dist/defaults/extensions/bootstrap/DashDefaultErrorBoundary.js +78 -1
- package/dist/defaults/extensions/bootstrap/dashDefaultInitializeApp.js +59 -1
- package/dist/defaults/extensions/bootstrap/index.js +24 -1
- package/dist/defaults/extensions/components/DashDefaultLoader.js +43 -2
- package/dist/defaults/extensions/components/dashDefaultAutoAdminComponents.js +67 -1
- package/dist/defaults/extensions/components/dashDefaultNotification.js +28 -1
- package/dist/defaults/extensions/components/dashDefaultStaticComponents.js +15 -1
- package/dist/defaults/extensions/components/index.js +13 -1
- package/dist/defaults/extensions/electron/dashDefaultIpcListeners.js +38 -1
- package/dist/defaults/extensions/electron/index.js +5 -1
- package/dist/defaults/extensions/hooks/index.js +12 -1
- package/dist/defaults/extensions/hooks/useDashDefaultLazyAutoAdminComponents.js +17 -1
- package/dist/defaults/extensions/hooks/useDashDefaultLazyI18nProvider.js +51 -1
- package/dist/defaults/extensions/hooks/useDashDefaultLazyResources.js +19 -1
- package/dist/defaults/extensions/hooks/useDashDefaultMountTracker.js +22 -1
- package/dist/defaults/extensions/hooks/useDashDefaultRoutePath.js +17 -1
- package/dist/defaults/extensions/i18n/dashDefaultI18nProvider.js +44 -1
- package/dist/defaults/extensions/i18n/dashDefaultTranslations.js +87 -1
- package/dist/defaults/extensions/i18n/index.js +24 -1
- package/dist/defaults/extensions/index.js +190 -1
- package/dist/defaults/extensions/layout/dashDefaultDomainAppLayout.js +58 -1
- package/dist/defaults/extensions/layout/index.js +12 -1
- package/dist/defaults/extensions/managers/DashDefaultWSMessagesManager.js +84 -1
- package/dist/defaults/extensions/managers/index.js +5 -1
- package/dist/defaults/extensions/providers/dashDefaultAuthProvider.js +220 -1
- package/dist/defaults/extensions/providers/dashDefaultDataProvider.js +395 -1
- package/dist/defaults/extensions/providers/index.js +24 -1
- package/dist/defaults/extensions/router/DashDefaultLanding.js +46 -1
- package/dist/defaults/extensions/router/dashDefaultPrivateRoutes.js +38 -1
- package/dist/defaults/extensions/router/dashDefaultPublicRoutes.js +65 -1
- package/dist/defaults/extensions/router/dashDefaultRouter.js +39 -1
- package/dist/defaults/extensions/router/dashDefaultSharedRoutes.js +40 -1
- package/dist/defaults/extensions/router/index.js +12 -1
- package/dist/defaults/extensions/state/dashDefaultAppCommon.js +57 -1
- package/dist/defaults/extensions/state/dashDefaultAppSettings.js +38 -1
- package/dist/defaults/extensions/state/dashDefaultInitialAppState.js +31 -1
- package/dist/defaults/extensions/state/dashDefaultLayoutSettings.js +48 -1
- package/dist/defaults/extensions/state/dashDefaultQueryClient.js +58 -1
- package/dist/defaults/extensions/state/dashDefaultResourcesIcons.js +24 -1
- package/dist/defaults/extensions/state/index.js +29 -1
- package/dist/defaults/extensions/styles/index.js +2 -1
- package/dist/defaults/extensions/theme/dashDefaultThemeOptions.js +74 -1
- package/dist/defaults/extensions/theme/index.js +6 -1
- package/dist/defaults/extensions/utils/IPCMessageBrokerContext.js +12 -1
- package/dist/defaults/extensions/utils/dashDefaultAuthProviderUtils.js +29 -1
- package/dist/defaults/extensions/utils/dashDefaultDataProviderUtils.js +37 -1
- package/dist/defaults/extensions/utils/dashDefaultNotificationsProcessor.js +149 -1
- package/dist/defaults/extensions/utils/index.js +44 -1
- package/dist/defaults/filters/demo/dashDefaultDemoFilters.js +36 -1
- package/dist/defaults/filters/demo/index.js +4 -1
- package/dist/defaults/filters/index.js +5 -1
- package/dist/defaults/index.js +14 -1
- package/dist/defaults/pages/Account/DashDefaultRegister.js +282 -1
- package/dist/defaults/pages/Account/DashDefaultSignUp.js +420 -1
- package/dist/defaults/pages/Account/DashDefaultSignUpSuccess.js +101 -1
- package/dist/defaults/pages/Account/index.js +8 -1
- package/dist/defaults/pages/DashDefaultLogin.js +218 -1
- package/dist/defaults/pages/Misc/DashDefaultNotFound.js +74 -1
- package/dist/defaults/pages/Misc/DashDefaultServerError.js +79 -1
- package/dist/defaults/pages/Misc/DashDefaultUnauthorized.js +90 -1
- package/dist/defaults/pages/Misc/index.js +8 -1
- package/dist/defaults/pages/Static/DashDefaultPrivacyPage.js +48 -1
- package/dist/defaults/pages/Static/DashDefaultStaticPage.js +55 -1
- package/dist/defaults/pages/Static/DashDefaultTermsPage.js +52 -1
- package/dist/defaults/pages/Static/index.js +8 -1
- package/dist/defaults/pages/index.js +25 -1
- package/dist/defaults/schemas/dashDefaultSchema.js +14 -1
- package/dist/defaults/schemas/demo/dashDefaultTodoSchema.js +24 -1
- package/dist/defaults/schemas/demo/index.js +4 -1
- package/dist/defaults/schemas/index.js +7 -1
- package/dist/filters/demo/todoFilters.js +36 -1
- package/dist/index.js +56 -5975
- package/dist/resources/demo/todoResource.js +58 -1
- package/dist/schemas/defaultSchema.js +14 -1
- package/dist/schemas/demo/todoSchema.js +24 -1
- package/package.json +132 -77
- package/src/DashApp.tsx +294 -0
- package/src/DashAppLoader.tsx +717 -0
- package/src/DashDefaultResources.tsx +10 -0
- package/src/components/DashDefaultPrivateApp.tsx +358 -0
- package/src/components/DashDefaultPrivateResources.tsx +10 -0
- package/src/components/DashDefaultPublicApp.tsx +40 -0
- package/src/components/DashResourceLoader.tsx +564 -0
- package/src/defaults/extensions/bootstrap/DashDefaultErrorBoundary.tsx +113 -0
- package/src/defaults/extensions/bootstrap/dashDefaultInitializeApp.ts +81 -0
- package/src/defaults/extensions/bootstrap/index.ts +32 -0
- package/src/defaults/extensions/components/DashDefaultLoader.tsx +59 -0
- package/src/defaults/extensions/components/dashDefaultAutoAdminComponents.tsx +49 -0
- package/src/defaults/extensions/components/dashDefaultNotification.tsx +37 -0
- package/src/defaults/extensions/components/dashDefaultStaticComponents.tsx +34 -0
- package/src/defaults/extensions/components/index.ts +17 -0
- package/src/defaults/extensions/electron/dashDefaultIpcListeners.ts +62 -0
- package/src/defaults/extensions/electron/index.ts +7 -0
- package/src/defaults/extensions/hooks/index.ts +11 -0
- package/src/defaults/extensions/hooks/useDashDefaultLazyAutoAdminComponents.ts +25 -0
- package/src/defaults/extensions/hooks/useDashDefaultLazyI18nProvider.ts +38 -0
- package/src/defaults/extensions/hooks/useDashDefaultLazyResources.ts +29 -0
- package/src/defaults/extensions/hooks/useDashDefaultMountTracker.ts +28 -0
- package/src/defaults/extensions/hooks/useDashDefaultRoutePath.ts +27 -0
- package/src/defaults/extensions/i18n/dashDefaultI18nProvider.ts +66 -0
- package/src/defaults/extensions/i18n/dashDefaultTranslations.ts +82 -0
- package/src/defaults/extensions/i18n/index.ts +22 -0
- package/src/defaults/extensions/index.ts +177 -0
- package/src/defaults/extensions/layout/dashDefaultDomainAppLayout.tsx +126 -0
- package/src/defaults/extensions/layout/index.ts +12 -0
- package/src/defaults/extensions/managers/DashDefaultWSMessagesManager.tsx +99 -0
- package/src/defaults/extensions/managers/index.ts +7 -0
- package/src/defaults/extensions/providers/dashDefaultAuthProvider.ts +256 -0
- package/src/defaults/extensions/providers/dashDefaultDataProvider.ts +513 -0
- package/src/defaults/extensions/providers/index.ts +25 -0
- package/src/defaults/extensions/router/DashDefaultLanding.tsx +51 -0
- package/src/defaults/extensions/router/dashDefaultPrivateRoutes.tsx +50 -0
- package/src/defaults/extensions/router/dashDefaultPublicRoutes.tsx +86 -0
- package/src/defaults/extensions/router/dashDefaultRouter.tsx +54 -0
- package/src/defaults/extensions/router/dashDefaultSharedRoutes.tsx +56 -0
- package/src/defaults/extensions/router/index.ts +13 -0
- package/src/defaults/extensions/state/dashDefaultAppCommon.ts +54 -0
- package/src/defaults/extensions/state/dashDefaultAppSettings.ts +29 -0
- package/src/defaults/extensions/state/dashDefaultInitialAppState.ts +75 -0
- package/src/defaults/extensions/state/dashDefaultLayoutSettings.ts +59 -0
- package/src/defaults/extensions/state/dashDefaultQueryClient.ts +59 -0
- package/src/defaults/extensions/state/dashDefaultResourcesIcons.tsx +23 -0
- package/src/defaults/extensions/state/index.ts +29 -0
- package/src/defaults/extensions/styles/index.ts +17 -0
- package/src/defaults/extensions/theme/dashDefaultThemeOptions.ts +89 -0
- package/src/defaults/extensions/theme/index.ts +7 -0
- package/src/defaults/extensions/utils/IPCMessageBrokerContext.tsx +22 -0
- package/src/defaults/extensions/utils/dashDefaultAuthProviderUtils.ts +36 -0
- package/src/defaults/extensions/utils/dashDefaultDataProviderUtils.ts +46 -0
- package/src/defaults/extensions/utils/dashDefaultNotificationsProcessor.tsx +208 -0
- package/src/defaults/extensions/utils/index.ts +42 -0
- package/src/defaults/filters/demo/dashDefaultDemoFilters.tsx +50 -0
- package/src/defaults/filters/demo/index.ts +6 -0
- package/src/defaults/filters/index.ts +11 -0
- package/src/defaults/index.ts +27 -0
- package/src/defaults/pages/Account/DashDefaultRegister.tsx +281 -0
- package/src/defaults/pages/Account/DashDefaultSignUp.tsx +492 -0
- package/src/defaults/pages/Account/DashDefaultSignUpSuccess.tsx +113 -0
- package/src/defaults/pages/Account/index.ts +8 -0
- package/src/defaults/pages/DashDefaultLogin.tsx +224 -0
- package/src/defaults/pages/Misc/DashDefaultNotFound.tsx +96 -0
- package/src/defaults/pages/Misc/DashDefaultServerError.tsx +102 -0
- package/src/defaults/pages/Misc/DashDefaultUnauthorized.tsx +116 -0
- package/src/defaults/pages/Misc/index.ts +8 -0
- package/src/defaults/pages/Static/DashDefaultPrivacyPage.tsx +85 -0
- package/src/defaults/pages/Static/DashDefaultStaticPage.tsx +75 -0
- package/src/defaults/pages/Static/DashDefaultTermsPage.tsx +69 -0
- package/src/defaults/pages/Static/index.ts +8 -0
- package/src/defaults/pages/index.ts +28 -0
- package/src/defaults/schemas/dashDefaultSchema.tsx +25 -0
- package/src/defaults/schemas/demo/dashDefaultTodoSchema.tsx +39 -0
- package/src/defaults/schemas/demo/index.ts +6 -0
- package/src/defaults/schemas/index.ts +14 -0
- package/src/filters/demo/todoFilters.tsx +39 -0
- package/src/index.ts +131 -0
- package/src/resources/demo/todoResource.tsx +68 -0
- package/src/schemas/defaultSchema.tsx +14 -0
- package/src/schemas/demo/todoSchema.tsx +27 -0
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IDashAutoAdminResourceConfig } from 'dash-auto-admin';
|
|
2
|
+
import todoResource from './resources/demo/todoResource';
|
|
3
|
+
import systemResources from 'dash-admin/src/systemResources';
|
|
4
|
+
|
|
5
|
+
const DASHDefaultResources: IDashAutoAdminResourceConfig[] = [
|
|
6
|
+
...systemResources,
|
|
7
|
+
todoResource,
|
|
8
|
+
];
|
|
9
|
+
|
|
10
|
+
export default DASHDefaultResources;
|
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DefaultPrivateApp
|
|
3
|
+
*
|
|
4
|
+
* A minimal authenticated admin application.
|
|
5
|
+
* Used as the default fallback when no custom privateAppImport is provided.
|
|
6
|
+
*
|
|
7
|
+
* This provides a basic admin shell with:
|
|
8
|
+
* - DASHAdmin with default configuration
|
|
9
|
+
* - Default data and auth providers from dash-admin
|
|
10
|
+
* - Minimal routing setup
|
|
11
|
+
*
|
|
12
|
+
* NOTE: This is a minimal fallback. For full functionality, apps should
|
|
13
|
+
* provide their own privateAppImport with proper provider configuration.
|
|
14
|
+
*/
|
|
15
|
+
import React, { Suspense, useMemo, PropsWithChildren, ReactElement } from 'react';
|
|
16
|
+
import { Route } from 'react-router-dom';
|
|
17
|
+
import { useSelector } from 'react-redux';
|
|
18
|
+
import { DashRouterComponent, MinimalLayout, RouterComponent } from 'dash-utils';
|
|
19
|
+
import { NotFound } from 'dash-components';
|
|
20
|
+
import AppLoadingFallback from 'dash-components/src/components/theme/AppLoadingFallback';
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
// Import default providers from dash-admin (these are already configured)
|
|
24
|
+
import authProvider from 'dash-admin/src/providers/authProvider';
|
|
25
|
+
import dataProvider from 'dash-admin/src/providers/dataProvider';
|
|
26
|
+
import DefaultPrivateResources from './DashDefaultPrivateResources';
|
|
27
|
+
import DomainAppLayout from 'dash-admin/src/default-theme/DomainAppLayout';
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
// Lazy load DASHAdmin components
|
|
32
|
+
const DASHAdmin = React.lazy(() => import('dash-admin').then(module => ({ default: module.DASHAdmin })));
|
|
33
|
+
const DASHAppProviders = React.lazy(() => import('dash-admin').then(module => ({ default: module.DASHAppProviders })));
|
|
34
|
+
const RoutingWrapper = React.lazy(() => import('dash-admin').then(module => ({ default: module.RoutingWrapper })));
|
|
35
|
+
const AnimatedRoutesWrapper = React.lazy(() => import('dash-admin').then(module => ({ default: module.AnimatedRoutesWrapper })));
|
|
36
|
+
|
|
37
|
+
// Default loading fallback
|
|
38
|
+
const LoadingFallback: React.FC<{ message?: string }> = ({ message }) => (
|
|
39
|
+
<AppLoadingFallback message={message || "Loading..."} />
|
|
40
|
+
);
|
|
41
|
+
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// TYPES
|
|
44
|
+
// ============================================================================
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Props for DefaultPrivateApp
|
|
48
|
+
*
|
|
49
|
+
* Includes all DASHAdmin props plus app-specific configuration.
|
|
50
|
+
* Props are passed through to DASHAdmin with sensible defaults.
|
|
51
|
+
*/
|
|
52
|
+
interface DefaultPrivateAppProps extends PropsWithChildren {
|
|
53
|
+
// ========================================================================
|
|
54
|
+
// APP CONFIGURATION PROPS
|
|
55
|
+
// ========================================================================
|
|
56
|
+
/**
|
|
57
|
+
* Base path for the admin app
|
|
58
|
+
*/
|
|
59
|
+
appPath?: string;
|
|
60
|
+
|
|
61
|
+
/**
|
|
62
|
+
* Custom resources configuration
|
|
63
|
+
*/
|
|
64
|
+
resources?: any[];
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Whether to use the internal router
|
|
68
|
+
*/
|
|
69
|
+
useOwnRouter?: boolean;
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Global hook component (for global side effects)
|
|
73
|
+
*/
|
|
74
|
+
GlobalHook?: React.ComponentType<any>;
|
|
75
|
+
|
|
76
|
+
// ========================================================================
|
|
77
|
+
// DASHADMIN PROPS (passed through to DASHAdmin)
|
|
78
|
+
// ========================================================================
|
|
79
|
+
/**
|
|
80
|
+
* Admin hook component (wraps admin content)
|
|
81
|
+
*/
|
|
82
|
+
AdminHook?: React.ComponentType<any>;
|
|
83
|
+
|
|
84
|
+
/**
|
|
85
|
+
* Custom layout component for the admin
|
|
86
|
+
*/
|
|
87
|
+
customLayout?: React.FC<any>;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Custom login page component
|
|
91
|
+
*/
|
|
92
|
+
customLoginPage?: React.FC<any>;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Custom notification component
|
|
96
|
+
*/
|
|
97
|
+
customNotification?: () => React.JSX.Element;
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Custom error/catch-all page component
|
|
101
|
+
*/
|
|
102
|
+
customErrorPage?: any;
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Custom data provider
|
|
106
|
+
*/
|
|
107
|
+
customDataProvider?: any;
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* Custom auth provider
|
|
111
|
+
*/
|
|
112
|
+
customAuthProvider?: any;
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Custom i18n provider
|
|
116
|
+
*/
|
|
117
|
+
customI18nProvider?: any;
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* Whether to use core resources (default: false)
|
|
121
|
+
*/
|
|
122
|
+
useCoreResources?: boolean;
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Custom profile page component (false to disable)
|
|
126
|
+
*/
|
|
127
|
+
customProfilePage?: React.JSX.Element | false;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Custom recover password page (false to disable)
|
|
131
|
+
*/
|
|
132
|
+
customRecoverPassword?: React.JSX.Element | false;
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* Custom change password page (false to disable)
|
|
136
|
+
*/
|
|
137
|
+
customChangePassword?: React.JSX.Element | false;
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Custom verify account page (false to disable)
|
|
141
|
+
*/
|
|
142
|
+
customVerifyAccount?: React.JSX.Element | false;
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* Custom theme configuration
|
|
146
|
+
*/
|
|
147
|
+
customThemeConfig?: any;
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Custom authenticated routes (passed directly to DASHAdmin)
|
|
151
|
+
*/
|
|
152
|
+
customAuthRoutes?: React.ReactElement[];
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Custom public routes (passed directly to DASHAdmin)
|
|
156
|
+
*/
|
|
157
|
+
customRoutes?: React.ReactElement[];
|
|
158
|
+
|
|
159
|
+
/**
|
|
160
|
+
* Custom public routes (returns array, legacy support)
|
|
161
|
+
*/
|
|
162
|
+
customPublicRoutes?: () => ReactElement[];
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* Custom private routes (returns array, legacy support)
|
|
166
|
+
*/
|
|
167
|
+
customPrivateRoutes?: () => ReactElement[];
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* Custom React Query client
|
|
171
|
+
*/
|
|
172
|
+
customQueryClient?: any;
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* Custom dictionary for translations
|
|
176
|
+
*/
|
|
177
|
+
customDict?: { [x: string]: string };
|
|
178
|
+
|
|
179
|
+
/**
|
|
180
|
+
* Custom string replacements
|
|
181
|
+
*/
|
|
182
|
+
customReplacements?: { [x: string]: string };
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Custom history object
|
|
186
|
+
*/
|
|
187
|
+
history?: any;
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* Initial app constants
|
|
191
|
+
*/
|
|
192
|
+
initialAppConstants?: any;
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* WebSocket messages manager for real-time notifications
|
|
196
|
+
*/
|
|
197
|
+
wsMessagesManager?: any;
|
|
198
|
+
}
|
|
199
|
+
|
|
200
|
+
// ============================================================================
|
|
201
|
+
// COMPONENT
|
|
202
|
+
// ============================================================================
|
|
203
|
+
const DefaultPrivateApp: React.FC<DefaultPrivateAppProps> = ({
|
|
204
|
+
// App configuration props
|
|
205
|
+
appPath = null,
|
|
206
|
+
resources = DefaultPrivateResources,
|
|
207
|
+
useOwnRouter = true,
|
|
208
|
+
GlobalHook = () => <></>,
|
|
209
|
+
|
|
210
|
+
// DASHAdmin props with defaults
|
|
211
|
+
AdminHook = (props) => props.children,
|
|
212
|
+
customLayout = DomainAppLayout,
|
|
213
|
+
customLoginPage,
|
|
214
|
+
customNotification,
|
|
215
|
+
customErrorPage = NotFound,
|
|
216
|
+
customDataProvider = null,
|
|
217
|
+
customAuthProvider = null,
|
|
218
|
+
customI18nProvider,
|
|
219
|
+
useCoreResources = false,
|
|
220
|
+
customProfilePage,
|
|
221
|
+
customRecoverPassword,
|
|
222
|
+
customChangePassword,
|
|
223
|
+
customVerifyAccount,
|
|
224
|
+
customThemeConfig,
|
|
225
|
+
customAuthRoutes,
|
|
226
|
+
customRoutes,
|
|
227
|
+
customPublicRoutes = null,
|
|
228
|
+
customPrivateRoutes = null,
|
|
229
|
+
customQueryClient,
|
|
230
|
+
customDict,
|
|
231
|
+
customReplacements,
|
|
232
|
+
history,
|
|
233
|
+
initialAppConstants,
|
|
234
|
+
wsMessagesManager,
|
|
235
|
+
|
|
236
|
+
children
|
|
237
|
+
}) => {
|
|
238
|
+
// Get common state for route path calculation
|
|
239
|
+
const common = useSelector((state: any) => state?.common || {});
|
|
240
|
+
|
|
241
|
+
// Calculate route path
|
|
242
|
+
const routePath = useMemo(() => {
|
|
243
|
+
return appPath || common?.appPath || '/';
|
|
244
|
+
}, [appPath, common?.appPath]);
|
|
245
|
+
|
|
246
|
+
// Create router component wrapper
|
|
247
|
+
const RouterWrapper = useMemo(() => {
|
|
248
|
+
const Wrapper: React.FC<{ children: React.ReactNode }> = ({ children: c }) => (
|
|
249
|
+
<DashRouterComponent basename={routePath}>
|
|
250
|
+
{c}
|
|
251
|
+
</DashRouterComponent>
|
|
252
|
+
);
|
|
253
|
+
return Wrapper;
|
|
254
|
+
}, [routePath]);
|
|
255
|
+
|
|
256
|
+
// Routes configuration - support both direct arrays and function-based routes
|
|
257
|
+
// Direct arrays (customRoutes, customAuthRoutes) take precedence over function-based
|
|
258
|
+
const resolvedCustomRoutes = useMemo(
|
|
259
|
+
() => customRoutes || (customPublicRoutes ? customPublicRoutes() : []),
|
|
260
|
+
[customRoutes, customPublicRoutes]
|
|
261
|
+
);
|
|
262
|
+
|
|
263
|
+
const resolvedAuthRoutes = useMemo(
|
|
264
|
+
() => customAuthRoutes || (customPrivateRoutes ? customPrivateRoutes() : []),
|
|
265
|
+
[customAuthRoutes, customPrivateRoutes]
|
|
266
|
+
);
|
|
267
|
+
|
|
268
|
+
// State for lazy-loaded providers - use defaults from dash-admin
|
|
269
|
+
const resolvedDataProvider = customDataProvider || dataProvider;
|
|
270
|
+
const resolvedAuthProvider = customAuthProvider || authProvider;
|
|
271
|
+
|
|
272
|
+
return (
|
|
273
|
+
<Suspense fallback={<LoadingFallback message="Loading admin providers..." />}>
|
|
274
|
+
<DASHAppProviders wsMessagesManager={wsMessagesManager}>
|
|
275
|
+
<GlobalHook />
|
|
276
|
+
|
|
277
|
+
{useOwnRouter ? (
|
|
278
|
+
<Suspense fallback={<LoadingFallback message="Loading routing..." />}>
|
|
279
|
+
<RoutingWrapper
|
|
280
|
+
BrowserRouterComponent={RouterWrapper}
|
|
281
|
+
Wrapper={AnimatedRoutesWrapper}
|
|
282
|
+
LayoutComponent={MinimalLayout}
|
|
283
|
+
>
|
|
284
|
+
<Route
|
|
285
|
+
path={routePath + "/*"}
|
|
286
|
+
element={
|
|
287
|
+
<Suspense fallback={<LoadingFallback message="Loading admin..." />}>
|
|
288
|
+
{children}
|
|
289
|
+
<DASHAdmin
|
|
290
|
+
basePath={routePath}
|
|
291
|
+
customDataProvider={resolvedDataProvider}
|
|
292
|
+
customAuthProvider={resolvedAuthProvider}
|
|
293
|
+
customResources={resources}
|
|
294
|
+
useCoreResources={useCoreResources}
|
|
295
|
+
customLayout={customLayout}
|
|
296
|
+
customLoginPage={customLoginPage}
|
|
297
|
+
customNotification={customNotification}
|
|
298
|
+
customErrorPage={customErrorPage}
|
|
299
|
+
customI18nProvider={customI18nProvider}
|
|
300
|
+
customProfilePage={customProfilePage}
|
|
301
|
+
customRecoverPassword={customRecoverPassword}
|
|
302
|
+
customChangePassword={customChangePassword}
|
|
303
|
+
customVerifyAccount={customVerifyAccount}
|
|
304
|
+
customThemeConfig={customThemeConfig}
|
|
305
|
+
customAuthRoutes={resolvedAuthRoutes}
|
|
306
|
+
customRoutes={resolvedCustomRoutes}
|
|
307
|
+
customQueryClient={customQueryClient}
|
|
308
|
+
customDict={customDict}
|
|
309
|
+
customReplacements={customReplacements}
|
|
310
|
+
history={history}
|
|
311
|
+
initialAppConstants={initialAppConstants}
|
|
312
|
+
AdminHook={AdminHook}
|
|
313
|
+
/>
|
|
314
|
+
</Suspense>
|
|
315
|
+
}
|
|
316
|
+
/>
|
|
317
|
+
</RoutingWrapper>
|
|
318
|
+
</Suspense>
|
|
319
|
+
) : (
|
|
320
|
+
<Suspense fallback={<LoadingFallback message="Loading layout..." />}>
|
|
321
|
+
<MinimalLayout>
|
|
322
|
+
<Suspense fallback={<LoadingFallback message="Loading admin..." />}>
|
|
323
|
+
{children}
|
|
324
|
+
<DASHAdmin
|
|
325
|
+
basePath={routePath}
|
|
326
|
+
customDataProvider={resolvedDataProvider}
|
|
327
|
+
customAuthProvider={resolvedAuthProvider}
|
|
328
|
+
customResources={resources}
|
|
329
|
+
useCoreResources={useCoreResources}
|
|
330
|
+
customLayout={customLayout}
|
|
331
|
+
customLoginPage={customLoginPage}
|
|
332
|
+
customNotification={customNotification}
|
|
333
|
+
customErrorPage={customErrorPage}
|
|
334
|
+
customI18nProvider={customI18nProvider}
|
|
335
|
+
customProfilePage={customProfilePage}
|
|
336
|
+
customRecoverPassword={customRecoverPassword}
|
|
337
|
+
customChangePassword={customChangePassword}
|
|
338
|
+
customVerifyAccount={customVerifyAccount}
|
|
339
|
+
customThemeConfig={customThemeConfig}
|
|
340
|
+
customAuthRoutes={resolvedAuthRoutes}
|
|
341
|
+
customRoutes={resolvedCustomRoutes}
|
|
342
|
+
customQueryClient={customQueryClient}
|
|
343
|
+
customDict={customDict}
|
|
344
|
+
customReplacements={customReplacements}
|
|
345
|
+
history={history}
|
|
346
|
+
initialAppConstants={initialAppConstants}
|
|
347
|
+
AdminHook={AdminHook}
|
|
348
|
+
/>
|
|
349
|
+
</Suspense>
|
|
350
|
+
</MinimalLayout>
|
|
351
|
+
</Suspense>
|
|
352
|
+
)}
|
|
353
|
+
</DASHAppProviders>
|
|
354
|
+
</Suspense>
|
|
355
|
+
);
|
|
356
|
+
};
|
|
357
|
+
|
|
358
|
+
export default DefaultPrivateApp;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { systemResources } from 'dash-admin';
|
|
2
|
+
import { IDashAutoAdminResourceConfig } from 'dash-auto-admin';
|
|
3
|
+
import todoResource from '../resources/demo/todoResource';
|
|
4
|
+
|
|
5
|
+
const DefaultPrivateResources: IDashAutoAdminResourceConfig[] = [
|
|
6
|
+
...systemResources,
|
|
7
|
+
todoResource,
|
|
8
|
+
];
|
|
9
|
+
|
|
10
|
+
export default DefaultPrivateResources;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DefaultPublicApp
|
|
3
|
+
*
|
|
4
|
+
* A minimal public-facing application shell for unauthenticated users.
|
|
5
|
+
* Used as the default fallback when no custom publicAppImport is provided.
|
|
6
|
+
*
|
|
7
|
+
* Renders default public routes (login, password recovery, etc.)
|
|
8
|
+
* using the DashRouterComponent from dash-utils.
|
|
9
|
+
*/
|
|
10
|
+
import React from 'react';
|
|
11
|
+
import { DashRouterComponent } from 'dash-utils';
|
|
12
|
+
import AppLoadingFallback from 'dash-components/src/components/theme/AppLoadingFallback';
|
|
13
|
+
import defaultPublicRoutes from "../defaults/extensions/router/dashDefaultPublicRoutes";
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
interface DefaultPublicAppProps {
|
|
18
|
+
/**
|
|
19
|
+
* Optional custom public routes to use instead of defaults
|
|
20
|
+
*/
|
|
21
|
+
customPublicRoutes?: () => React.ReactNode[];
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const DefaultPublicApp: React.FC<DefaultPublicAppProps> = ({
|
|
25
|
+
customPublicRoutes
|
|
26
|
+
}) => {
|
|
27
|
+
// IMPORTANT: Pass the routes FUNCTION, not the result of calling it
|
|
28
|
+
// This ensures routes are created INSIDE the Router context
|
|
29
|
+
// where useNavigate and other Router hooks are available
|
|
30
|
+
const routesProvider = customPublicRoutes || defaultPublicRoutes;
|
|
31
|
+
|
|
32
|
+
return (
|
|
33
|
+
<DashRouterComponent
|
|
34
|
+
loader={<AppLoadingFallback message="Loading..." />}
|
|
35
|
+
publicRoutes={routesProvider}
|
|
36
|
+
/>
|
|
37
|
+
);
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export default DefaultPublicApp;
|