@dashadmin/dash-app-common 1.3.24 → 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,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dash Default i18n Translations Extension
|
|
3
|
+
*
|
|
4
|
+
* Default translations that extend the base dash-admin translations.
|
|
5
|
+
*/
|
|
6
|
+
import polyglotI18nProvider from 'ra-i18n-polyglot';
|
|
7
|
+
import { en, es } from 'dash-admin/src/providers/i18n/languages';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Dash default merged translations combining dash-admin base translations
|
|
11
|
+
*/
|
|
12
|
+
export const dashDefaultTranslations: Record<string, any> = {
|
|
13
|
+
en: {
|
|
14
|
+
...en,
|
|
15
|
+
},
|
|
16
|
+
es: {
|
|
17
|
+
...es,
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Dash default available locales configuration
|
|
23
|
+
*/
|
|
24
|
+
export const dashDefaultAvailableLocales = [
|
|
25
|
+
{ locale: 'en', name: 'English' },
|
|
26
|
+
{ locale: 'es', name: 'Español' }
|
|
27
|
+
];
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Dash default locale
|
|
31
|
+
*/
|
|
32
|
+
export const dashDefaultLocale = 'en';
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Create dash default i18n provider with merged translations
|
|
36
|
+
*/
|
|
37
|
+
export const createDashDefaultI18nProvider = (locale: string = dashDefaultLocale) => {
|
|
38
|
+
return polyglotI18nProvider(
|
|
39
|
+
(loc) => dashDefaultTranslations[loc as keyof typeof dashDefaultTranslations] || dashDefaultTranslations.en,
|
|
40
|
+
locale,
|
|
41
|
+
dashDefaultAvailableLocales
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Load dash default translations asynchronously
|
|
47
|
+
* Useful for lazy loading to reduce initial bundle size
|
|
48
|
+
*/
|
|
49
|
+
export const loadDashDefaultTranslationsAsync = async () => {
|
|
50
|
+
try {
|
|
51
|
+
const [enLang, esLang] = await Promise.all([
|
|
52
|
+
import('dash-admin').then(module => module.en),
|
|
53
|
+
import('dash-admin').then(module => module.es)
|
|
54
|
+
]);
|
|
55
|
+
|
|
56
|
+
return {
|
|
57
|
+
en: { ...enLang },
|
|
58
|
+
es: { ...esLang },
|
|
59
|
+
};
|
|
60
|
+
} catch (error) {
|
|
61
|
+
console.error('Failed to load dash default translations:', error);
|
|
62
|
+
return dashDefaultTranslations;
|
|
63
|
+
}
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* Create dash default i18n provider asynchronously
|
|
68
|
+
*/
|
|
69
|
+
export const createDashDefaultI18nProviderAsync = async (
|
|
70
|
+
locale: string = dashDefaultLocale,
|
|
71
|
+
locales?: Array<{ locale: string; name: string }>
|
|
72
|
+
) => {
|
|
73
|
+
const loadedTranslations = await loadDashDefaultTranslationsAsync();
|
|
74
|
+
|
|
75
|
+
return polyglotI18nProvider(
|
|
76
|
+
(loc) => loadedTranslations[loc as keyof typeof loadedTranslations] || loadedTranslations.en,
|
|
77
|
+
locale,
|
|
78
|
+
locales || dashDefaultAvailableLocales
|
|
79
|
+
);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
export default dashDefaultTranslations;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* i18n Extensions Index
|
|
3
|
+
*
|
|
4
|
+
* Internationalization configurations and providers.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Default Translations
|
|
8
|
+
export {
|
|
9
|
+
dashDefaultTranslations,
|
|
10
|
+
dashDefaultAvailableLocales,
|
|
11
|
+
dashDefaultLocale,
|
|
12
|
+
createDashDefaultI18nProvider,
|
|
13
|
+
loadDashDefaultTranslationsAsync,
|
|
14
|
+
createDashDefaultI18nProviderAsync
|
|
15
|
+
} from './dashDefaultTranslations';
|
|
16
|
+
|
|
17
|
+
// Default i18n Provider hook and factory
|
|
18
|
+
export {
|
|
19
|
+
useDashDefaultI18nProvider,
|
|
20
|
+
createDashDefaultI18nProviderWithSettings,
|
|
21
|
+
createDashDefaultI18nProviderFromAppState
|
|
22
|
+
} from './dashDefaultI18nProvider';
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default Extensions Index
|
|
3
|
+
*
|
|
4
|
+
* This is the main entry point for all default extensions.
|
|
5
|
+
* Applications can import what they need and override with their custom implementations.
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// ============================================================================
|
|
9
|
+
// BOOTSTRAP EXTENSIONS
|
|
10
|
+
// ============================================================================
|
|
11
|
+
export {
|
|
12
|
+
dashDefaultInitializeApp,
|
|
13
|
+
dashDefaultBootstrapApp,
|
|
14
|
+
DashDefaultErrorBoundary,
|
|
15
|
+
type DashDefaultInitializeAppConfig,
|
|
16
|
+
type DashDefaultErrorBoundaryProps,
|
|
17
|
+
type DashDefaultErrorBoundaryState
|
|
18
|
+
} from './bootstrap';
|
|
19
|
+
|
|
20
|
+
// ============================================================================
|
|
21
|
+
// COMPONENT EXTENSIONS
|
|
22
|
+
// ============================================================================
|
|
23
|
+
export {
|
|
24
|
+
DashDefaultLoader,
|
|
25
|
+
DashDefaultReactAdminNotification,
|
|
26
|
+
loadDashDefaultAutoAdminComponents,
|
|
27
|
+
dashDefaultAutoAdminComponents,
|
|
28
|
+
dashDefaultStaticComponents,
|
|
29
|
+
getDashDefaultStaticComponents,
|
|
30
|
+
dashDefaultNotificationConfig,
|
|
31
|
+
type DashDefaultLoaderProps
|
|
32
|
+
} from './components';
|
|
33
|
+
|
|
34
|
+
// ============================================================================
|
|
35
|
+
// HOOK EXTENSIONS
|
|
36
|
+
// ============================================================================
|
|
37
|
+
export {
|
|
38
|
+
useDashDefaultMountTracker,
|
|
39
|
+
useDashDefaultRoutePath,
|
|
40
|
+
useDashDefaultLazyI18nProvider,
|
|
41
|
+
useDashDefaultLazyAutoAdminComponents,
|
|
42
|
+
useDashDefaultLazyResources
|
|
43
|
+
} from './hooks';
|
|
44
|
+
|
|
45
|
+
// ============================================================================
|
|
46
|
+
// ROUTER EXTENSIONS
|
|
47
|
+
// ============================================================================
|
|
48
|
+
export {
|
|
49
|
+
dashDefaultPublicRoutes,
|
|
50
|
+
dashDefaultPrivateRoutes,
|
|
51
|
+
dashDefaultSharedRoutes,
|
|
52
|
+
DashDefaultRouterWrapper,
|
|
53
|
+
createDashDefaultRouterWrapper,
|
|
54
|
+
getDashDefaultRouterEnvVars
|
|
55
|
+
} from './router';
|
|
56
|
+
|
|
57
|
+
// ============================================================================
|
|
58
|
+
// STATE EXTENSIONS
|
|
59
|
+
// ============================================================================
|
|
60
|
+
export {
|
|
61
|
+
dashDefaultAppSettings,
|
|
62
|
+
getDashDefaultThemeType,
|
|
63
|
+
getDashDefaultAppCommon,
|
|
64
|
+
getDashDefaultAppPath,
|
|
65
|
+
getDashDefaultPanelImages,
|
|
66
|
+
DASH_DEFAULT_INITIAL_APP_STATE,
|
|
67
|
+
getDashDefaultInitialAppState,
|
|
68
|
+
dashDefaultQueryClient,
|
|
69
|
+
createDashDefaultQueryClient,
|
|
70
|
+
dashDefaultQueryClientConfig,
|
|
71
|
+
dashDefaultDevQueryClientConfig,
|
|
72
|
+
dashDefaultLayoutSettings,
|
|
73
|
+
getDashDefaultTheme,
|
|
74
|
+
getDashDefaultLightTheme,
|
|
75
|
+
getDashDefaultDarkTheme,
|
|
76
|
+
dashDefaultResourceIcons,
|
|
77
|
+
type DashDefaultLayoutSettings,
|
|
78
|
+
type IDashDefaultUser,
|
|
79
|
+
type IDashDefaultAuth
|
|
80
|
+
} from './state';
|
|
81
|
+
|
|
82
|
+
// ============================================================================
|
|
83
|
+
// I18N EXTENSIONS
|
|
84
|
+
// ============================================================================
|
|
85
|
+
export {
|
|
86
|
+
dashDefaultTranslations,
|
|
87
|
+
dashDefaultAvailableLocales,
|
|
88
|
+
dashDefaultLocale,
|
|
89
|
+
createDashDefaultI18nProvider,
|
|
90
|
+
loadDashDefaultTranslationsAsync,
|
|
91
|
+
createDashDefaultI18nProviderAsync,
|
|
92
|
+
useDashDefaultI18nProvider,
|
|
93
|
+
createDashDefaultI18nProviderWithSettings,
|
|
94
|
+
createDashDefaultI18nProviderFromAppState
|
|
95
|
+
} from './i18n';
|
|
96
|
+
|
|
97
|
+
// ============================================================================
|
|
98
|
+
// PROVIDER EXTENSIONS
|
|
99
|
+
// ============================================================================
|
|
100
|
+
export {
|
|
101
|
+
dashDefaultAuthProvider,
|
|
102
|
+
dashDefaultAuthProviderConfig,
|
|
103
|
+
dashDefaultAuthProviderOverrides,
|
|
104
|
+
dashDefaultDataProvider,
|
|
105
|
+
dashDefaultDataProviderConfig,
|
|
106
|
+
dashDefaultDataProviderOverrides,
|
|
107
|
+
dashDefaultDataProviderExtensions,
|
|
108
|
+
dashAuthProvider,
|
|
109
|
+
dashDataProvider
|
|
110
|
+
} from './providers';
|
|
111
|
+
|
|
112
|
+
// ============================================================================
|
|
113
|
+
// THEME EXTENSIONS
|
|
114
|
+
// ============================================================================
|
|
115
|
+
export {
|
|
116
|
+
dashDefaultExtendedThemeOptions,
|
|
117
|
+
dashDefaultPalette,
|
|
118
|
+
dashDefaultTypography
|
|
119
|
+
} from './theme';
|
|
120
|
+
|
|
121
|
+
// ============================================================================
|
|
122
|
+
// LAYOUT EXTENSIONS
|
|
123
|
+
// ============================================================================
|
|
124
|
+
export {
|
|
125
|
+
createDashDefaultDomainAppLayout,
|
|
126
|
+
createDashDefaultDomainAppLayoutWithIPC,
|
|
127
|
+
useDashDefaultDomainAppLayout,
|
|
128
|
+
useDashDefaultDomainAppLayoutWithIPC
|
|
129
|
+
} from './layout';
|
|
130
|
+
|
|
131
|
+
// ============================================================================
|
|
132
|
+
// ELECTRON EXTENSIONS
|
|
133
|
+
// ============================================================================
|
|
134
|
+
export {
|
|
135
|
+
useDashDefaultIPCListeners,
|
|
136
|
+
setupDashDefaultIPCListeners
|
|
137
|
+
} from './electron';
|
|
138
|
+
|
|
139
|
+
// ============================================================================
|
|
140
|
+
// MANAGER EXTENSIONS
|
|
141
|
+
// ============================================================================
|
|
142
|
+
export {
|
|
143
|
+
DashDefaultWSMessagesManager
|
|
144
|
+
} from './managers';
|
|
145
|
+
|
|
146
|
+
// ============================================================================
|
|
147
|
+
// UTILITY EXTENSIONS
|
|
148
|
+
// ============================================================================
|
|
149
|
+
export {
|
|
150
|
+
dashDefaultLogoutFromStorage,
|
|
151
|
+
dashDefaultIsAuthenticated,
|
|
152
|
+
dashDefaultGetCurrentUser,
|
|
153
|
+
dashDefaultGetToken,
|
|
154
|
+
dashDefaultGetResourceConfig,
|
|
155
|
+
dashDefaultSetResourceConfigs,
|
|
156
|
+
dashDefaultProcessPostData,
|
|
157
|
+
dashDefaultProcessFormData,
|
|
158
|
+
dashDefaultBuildQueryString,
|
|
159
|
+
dashDefaultIsFormDataResource,
|
|
160
|
+
DashIPCMessageBrokerContext,
|
|
161
|
+
DashIPCMessageBrokerProvider,
|
|
162
|
+
useDashIPCMessageBroker,
|
|
163
|
+
processDashDefaultNotification,
|
|
164
|
+
playDashDefaultNotificationSound,
|
|
165
|
+
playDashDefaultDigitalWatchAlarm,
|
|
166
|
+
requestDashDefaultNotificationPermission,
|
|
167
|
+
type DashLogMessage,
|
|
168
|
+
type DashSubprocessOutput,
|
|
169
|
+
type DashIPCMessageBrokerContextType,
|
|
170
|
+
type DashIPCMessageBrokerConfig
|
|
171
|
+
} from './utils';
|
|
172
|
+
|
|
173
|
+
// ============================================================================
|
|
174
|
+
// STYLES (Side-effect import)
|
|
175
|
+
// ============================================================================
|
|
176
|
+
// Note: Import this in your app's entry point to load default styles
|
|
177
|
+
// import 'dash-app-common/src/defaults/extensions/styles';
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dash Default Domain App Layout Extension
|
|
3
|
+
*
|
|
4
|
+
* Dash default app layout wrapper that includes window controls for Electron.
|
|
5
|
+
*/
|
|
6
|
+
import React, { useCallback, Suspense } from 'react';
|
|
7
|
+
import DASHAppLayout from 'dash-admin/src/default-theme/DomainAppLayout';
|
|
8
|
+
import { IDomainAppLayout } from 'dash-admin/src/default-theme/DomainAppLayout';
|
|
9
|
+
import { getEnv } from 'dash-constants';
|
|
10
|
+
|
|
11
|
+
// Lazy load components
|
|
12
|
+
const IPCMessageBrokerProvider = React.lazy(() =>
|
|
13
|
+
import('dash-utils').then(m => ({ default: m.IPCMessageBrokerProvider }))
|
|
14
|
+
);
|
|
15
|
+
|
|
16
|
+
// Simple loading fallback
|
|
17
|
+
const DashDefaultLayoutLoadingFallback = () => (
|
|
18
|
+
<div style={{
|
|
19
|
+
display: 'flex',
|
|
20
|
+
justifyContent: 'center',
|
|
21
|
+
alignItems: 'center',
|
|
22
|
+
minHeight: '200px'
|
|
23
|
+
}}>
|
|
24
|
+
Loading...
|
|
25
|
+
</div>
|
|
26
|
+
);
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Check if running in Electron
|
|
30
|
+
*/
|
|
31
|
+
const isElectron = (): boolean => {
|
|
32
|
+
try {
|
|
33
|
+
return JSON.parse(getEnv('IS_ELECTRON') || 'false');
|
|
34
|
+
} catch {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Create Dash Default Domain App Layout component (sync version)
|
|
41
|
+
* Wraps the default DASHAppLayout
|
|
42
|
+
*/
|
|
43
|
+
export const createDashDefaultDomainAppLayout = () => {
|
|
44
|
+
const DashDefaultDomainAppLayout = <U, A>(props: IDomainAppLayout<U, A>): React.JSX.Element => {
|
|
45
|
+
const { ThemeComponent, children } = props;
|
|
46
|
+
return (
|
|
47
|
+
<DASHAppLayout ThemeComponent={ThemeComponent}>
|
|
48
|
+
{children}
|
|
49
|
+
</DASHAppLayout>
|
|
50
|
+
);
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
return DashDefaultDomainAppLayout;
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Create Dash Default Domain App Layout with Electron IPC support
|
|
58
|
+
* Wraps with IPCMessageBrokerProvider when in Electron
|
|
59
|
+
*/
|
|
60
|
+
export const createDashDefaultDomainAppLayoutWithIPC = () => {
|
|
61
|
+
const DashDefaultDomainAppLayout = <U, A>(props: IDomainAppLayout<U, A>): React.JSX.Element => {
|
|
62
|
+
const { ThemeComponent, children } = props;
|
|
63
|
+
const inElectron = isElectron();
|
|
64
|
+
|
|
65
|
+
const LayoutContent = inElectron ? (
|
|
66
|
+
<Suspense fallback={<DashDefaultLayoutLoadingFallback />}>
|
|
67
|
+
<IPCMessageBrokerProvider>
|
|
68
|
+
{children}
|
|
69
|
+
</IPCMessageBrokerProvider>
|
|
70
|
+
</Suspense>
|
|
71
|
+
) : (
|
|
72
|
+
children
|
|
73
|
+
);
|
|
74
|
+
|
|
75
|
+
return (
|
|
76
|
+
<DASHAppLayout ThemeComponent={ThemeComponent}>
|
|
77
|
+
{LayoutContent}
|
|
78
|
+
</DASHAppLayout>
|
|
79
|
+
);
|
|
80
|
+
};
|
|
81
|
+
|
|
82
|
+
return DashDefaultDomainAppLayout;
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Hook to get memoized Dash Default DomainAppLayout
|
|
87
|
+
*/
|
|
88
|
+
export const useDashDefaultDomainAppLayout = () => {
|
|
89
|
+
return useCallback(<U, A>(props: IDomainAppLayout<U, A>): React.JSX.Element => {
|
|
90
|
+
const { ThemeComponent, children } = props;
|
|
91
|
+
return (
|
|
92
|
+
<DASHAppLayout ThemeComponent={ThemeComponent}>
|
|
93
|
+
{children}
|
|
94
|
+
</DASHAppLayout>
|
|
95
|
+
);
|
|
96
|
+
}, []);
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Hook to get memoized Dash Default DomainAppLayout with Electron IPC support
|
|
101
|
+
*/
|
|
102
|
+
export const useDashDefaultDomainAppLayoutWithIPC = () => {
|
|
103
|
+
const inElectron = isElectron();
|
|
104
|
+
|
|
105
|
+
return useCallback(<U, A>(props: IDomainAppLayout<U, A>): React.JSX.Element => {
|
|
106
|
+
const { ThemeComponent, children } = props;
|
|
107
|
+
|
|
108
|
+
const LayoutContent = inElectron ? (
|
|
109
|
+
<Suspense fallback={<DashDefaultLayoutLoadingFallback />}>
|
|
110
|
+
<IPCMessageBrokerProvider>
|
|
111
|
+
{children}
|
|
112
|
+
</IPCMessageBrokerProvider>
|
|
113
|
+
</Suspense>
|
|
114
|
+
) : (
|
|
115
|
+
children
|
|
116
|
+
);
|
|
117
|
+
|
|
118
|
+
return (
|
|
119
|
+
<DASHAppLayout ThemeComponent={ThemeComponent}>
|
|
120
|
+
{LayoutContent}
|
|
121
|
+
</DASHAppLayout>
|
|
122
|
+
);
|
|
123
|
+
}, [inElectron]);
|
|
124
|
+
};
|
|
125
|
+
|
|
126
|
+
export default createDashDefaultDomainAppLayout;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Layout Extensions Index
|
|
3
|
+
*
|
|
4
|
+
* Layout-related configurations and components.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
export {
|
|
8
|
+
createDashDefaultDomainAppLayout,
|
|
9
|
+
createDashDefaultDomainAppLayoutWithIPC,
|
|
10
|
+
useDashDefaultDomainAppLayout,
|
|
11
|
+
useDashDefaultDomainAppLayoutWithIPC
|
|
12
|
+
} from './dashDefaultDomainAppLayout';
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { useContext, useEffect, useState } from 'react';
|
|
2
|
+
import { Notification } from 'react-admin';
|
|
3
|
+
import type { ILaravelEchoManager } from 'dash-admin/src/contexts/com/LaravelEchoMgr';
|
|
4
|
+
import useLaravelEcho from 'dash-admin/src/contexts/com/useLaravelEcho';
|
|
5
|
+
import { useAuthContext } from 'dash-admin/src/contexts/auth/AuthContext';
|
|
6
|
+
import type { IAuthContext } from 'dash-admin/src/contexts/auth';
|
|
7
|
+
import { IDashNotificationPayloadBase } from 'dash-admin/src/interfaces/communication/INotification';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
export const DashDefaultReactAdminNotification = () => {
|
|
11
|
+
return <Notification
|
|
12
|
+
className='dash-notification'
|
|
13
|
+
autoHideDuration={8000}
|
|
14
|
+
multiLine={true}
|
|
15
|
+
anchorOrigin={{ vertical: 'top', horizontal: 'right' }}
|
|
16
|
+
/>
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const DashDefaultWSMessagesManager = (): ILaravelEchoManager => {
|
|
20
|
+
|
|
21
|
+
const [events, setEvents] = useState<IDashNotificationPayloadBase[]>([]);
|
|
22
|
+
const [lastEvent, setLastEvent] = useState<IDashNotificationPayloadBase>(null);
|
|
23
|
+
const authContext: IAuthContext = useAuthContext();
|
|
24
|
+
|
|
25
|
+
const [userId, setUserId] = useState(null);
|
|
26
|
+
const [tenantId, setTenantId] = useState(null);
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
useEffect(() => {
|
|
30
|
+
|
|
31
|
+
if (!authContext?.user) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
setUserId(authContext.user.id);
|
|
37
|
+
setTenantId(authContext.user.tenant_id);
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
}, [authContext])
|
|
42
|
+
|
|
43
|
+
const clear = () => {
|
|
44
|
+
setLastEvent(null);
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
const { echoChannel: channel2,
|
|
49
|
+
isConnected: isConnected2,
|
|
50
|
+
lastEvent: event2,
|
|
51
|
+
ping: pingConnection2,
|
|
52
|
+
addListener: addListener2,
|
|
53
|
+
removeListener: reoveListener2 } = useLaravelEcho({
|
|
54
|
+
type: 'private',
|
|
55
|
+
channel: userId ? `user.${userId}` : null,
|
|
56
|
+
enabled: !!userId // Only enable if userId exists
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const { echoChannel: channel3,
|
|
60
|
+
isConnected: isConnected3,
|
|
61
|
+
lastEvent: event3,
|
|
62
|
+
ping: pingConnection3,
|
|
63
|
+
addListener: addListener3,
|
|
64
|
+
removeListener: reoveListener3 } = useLaravelEcho({
|
|
65
|
+
type: 'private',
|
|
66
|
+
channel: tenantId ? `tenant.${tenantId}.system` : null,
|
|
67
|
+
enabled: !!tenantId // Only enable if tenantId exists
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
useEffect(() => {
|
|
71
|
+
console.log("Private Tenant Message", event2);
|
|
72
|
+
const _lastEvent = event3?.data;
|
|
73
|
+
console.log(_lastEvent);
|
|
74
|
+
setLastEvent(_lastEvent);
|
|
75
|
+
|
|
76
|
+
}, [event3]);
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
console.log("Private User Message", event2);
|
|
81
|
+
const _lastEvent = event2?.data;
|
|
82
|
+
console.log(_lastEvent);
|
|
83
|
+
setLastEvent(_lastEvent);
|
|
84
|
+
|
|
85
|
+
}, [event2]);
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
|
|
90
|
+
setEvents((prev) => [...prev, lastEvent])
|
|
91
|
+
}, [lastEvent])
|
|
92
|
+
|
|
93
|
+
return {
|
|
94
|
+
events,
|
|
95
|
+
lastEvent,
|
|
96
|
+
clear
|
|
97
|
+
};
|
|
98
|
+
};
|
|
99
|
+
export default DashDefaultWSMessagesManager;
|