@dashadmin/dash-app-common 1.3.25 → 1.3.28
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/README.md +35 -0
- 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,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default Static Page
|
|
3
|
+
*
|
|
4
|
+
* Generic static page component that can be used for terms, privacy policy, etc.
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import { useNavigate } from 'react-router-dom';
|
|
8
|
+
import {
|
|
9
|
+
Box,
|
|
10
|
+
Typography,
|
|
11
|
+
Button,
|
|
12
|
+
Container,
|
|
13
|
+
Paper
|
|
14
|
+
} from '@mui/material';
|
|
15
|
+
import ArrowBackIcon from '@mui/icons-material/ArrowBack';
|
|
16
|
+
|
|
17
|
+
interface DefaultStaticPageProps {
|
|
18
|
+
title?: string;
|
|
19
|
+
content?: string | React.ReactNode;
|
|
20
|
+
showBackButton?: boolean;
|
|
21
|
+
maxWidth?: 'xs' | 'sm' | 'md' | 'lg' | 'xl';
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const DefaultStaticPage: React.FC<DefaultStaticPageProps> = ({
|
|
25
|
+
title = 'Static Page',
|
|
26
|
+
content,
|
|
27
|
+
showBackButton = true,
|
|
28
|
+
maxWidth = 'md',
|
|
29
|
+
}) => {
|
|
30
|
+
const navigate = useNavigate();
|
|
31
|
+
|
|
32
|
+
const handleGoBack = () => {
|
|
33
|
+
navigate(-1);
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
return (
|
|
37
|
+
<Container maxWidth={maxWidth}>
|
|
38
|
+
<Paper
|
|
39
|
+
elevation={0}
|
|
40
|
+
sx={{
|
|
41
|
+
p: 4,
|
|
42
|
+
my: 4
|
|
43
|
+
}}
|
|
44
|
+
>
|
|
45
|
+
{showBackButton && (
|
|
46
|
+
<Box sx={{ mb: 3 }}>
|
|
47
|
+
<Button
|
|
48
|
+
variant="text"
|
|
49
|
+
startIcon={<ArrowBackIcon />}
|
|
50
|
+
onClick={handleGoBack}
|
|
51
|
+
>
|
|
52
|
+
Back
|
|
53
|
+
</Button>
|
|
54
|
+
</Box>
|
|
55
|
+
)}
|
|
56
|
+
|
|
57
|
+
<Typography variant="h4" component="h1" gutterBottom>
|
|
58
|
+
{title}
|
|
59
|
+
</Typography>
|
|
60
|
+
|
|
61
|
+
{typeof content === 'string' ? (
|
|
62
|
+
<Typography
|
|
63
|
+
variant="body1"
|
|
64
|
+
component="div"
|
|
65
|
+
dangerouslySetInnerHTML={{ __html: content }}
|
|
66
|
+
/>
|
|
67
|
+
) : (
|
|
68
|
+
content
|
|
69
|
+
)}
|
|
70
|
+
</Paper>
|
|
71
|
+
</Container>
|
|
72
|
+
);
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export default DefaultStaticPage;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default Terms Page
|
|
3
|
+
*
|
|
4
|
+
* Terms of service page template.
|
|
5
|
+
*/
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import DashDefaultStaticPage from './DashDefaultStaticPage';
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
interface DefaultTermsPageProps {
|
|
11
|
+
companyName?: string;
|
|
12
|
+
effectiveDate?: string;
|
|
13
|
+
content?: string | React.ReactNode;
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const DefaultTermsPage: React.FC<DefaultTermsPageProps> = ({
|
|
17
|
+
companyName = 'Our Company',
|
|
18
|
+
effectiveDate = new Date().toLocaleDateString(),
|
|
19
|
+
content,
|
|
20
|
+
}) => {
|
|
21
|
+
const defaultContent = (
|
|
22
|
+
<div>
|
|
23
|
+
<p><strong>Effective Date:</strong> {effectiveDate}</p>
|
|
24
|
+
|
|
25
|
+
<h2>1. Acceptance of Terms</h2>
|
|
26
|
+
<p>
|
|
27
|
+
By accessing and using this service, you accept and agree to be bound by the terms
|
|
28
|
+
and provision of this agreement.
|
|
29
|
+
</p>
|
|
30
|
+
|
|
31
|
+
<h2>2. Use License</h2>
|
|
32
|
+
<p>
|
|
33
|
+
Permission is granted to temporarily access the materials (information or software)
|
|
34
|
+
on {companyName}'s website for personal, non-commercial transitory viewing only.
|
|
35
|
+
</p>
|
|
36
|
+
|
|
37
|
+
<h2>3. Disclaimer</h2>
|
|
38
|
+
<p>
|
|
39
|
+
The materials on {companyName}'s website are provided on an 'as is' basis.
|
|
40
|
+
{companyName} makes no warranties, expressed or implied, and hereby disclaims and
|
|
41
|
+
negates all other warranties including, without limitation, implied warranties or
|
|
42
|
+
conditions of merchantability, fitness for a particular purpose, or non-infringement
|
|
43
|
+
of intellectual property or other violation of rights.
|
|
44
|
+
</p>
|
|
45
|
+
|
|
46
|
+
<h2>4. Limitations</h2>
|
|
47
|
+
<p>
|
|
48
|
+
In no event shall {companyName} or its suppliers be liable for any damages
|
|
49
|
+
(including, without limitation, damages for loss of data or profit, or due to
|
|
50
|
+
business interruption) arising out of the use or inability to use the materials
|
|
51
|
+
on {companyName}'s website.
|
|
52
|
+
</p>
|
|
53
|
+
|
|
54
|
+
<h2>5. Contact Information</h2>
|
|
55
|
+
<p>
|
|
56
|
+
If you have any questions about these Terms, please contact us.
|
|
57
|
+
</p>
|
|
58
|
+
</div>
|
|
59
|
+
);
|
|
60
|
+
|
|
61
|
+
return (
|
|
62
|
+
<DashDefaultStaticPage
|
|
63
|
+
title="Terms of Service"
|
|
64
|
+
content={content || defaultContent}
|
|
65
|
+
/>
|
|
66
|
+
);
|
|
67
|
+
};
|
|
68
|
+
|
|
69
|
+
export default DefaultTermsPage;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Static Pages Module
|
|
3
|
+
*
|
|
4
|
+
* Exports all default static pages.
|
|
5
|
+
*/
|
|
6
|
+
export { default as DashDefaultStaticPage } from './DashDefaultStaticPage';
|
|
7
|
+
export { default as DashDefaultTermsPage } from './DashDefaultTermsPage';
|
|
8
|
+
export { default as DashDefaultPrivacyPage } from './DashDefaultPrivacyPage';
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default Pages Index
|
|
3
|
+
*
|
|
4
|
+
* Default page components for common application pages.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
// Auth pages (standalone - no react-admin dependency)
|
|
8
|
+
export { default as DashDefaultLogin } from './DashDefaultLogin';
|
|
9
|
+
|
|
10
|
+
// Account pages
|
|
11
|
+
export { default as DashDefaultRegisterPage } from './Account/DashDefaultRegister';
|
|
12
|
+
export { default as DashDefaultSignUpPage } from './Account/DashDefaultSignUp';
|
|
13
|
+
export { default as DashDefaultSignUpSuccessPage } from './Account/DashDefaultSignUpSuccess';
|
|
14
|
+
|
|
15
|
+
// Misc pages (Error pages)
|
|
16
|
+
export { default as DashDefaultNotFoundPage } from './Misc/DashDefaultNotFound';
|
|
17
|
+
export { default as DashDefaultUnauthorizedPage } from './Misc/DashDefaultUnauthorized';
|
|
18
|
+
export { default as DashDefaultServerErrorPage } from './Misc/DashDefaultServerError';
|
|
19
|
+
|
|
20
|
+
// Static pages
|
|
21
|
+
export { default as DashDefaultStaticPage } from './Static/DashDefaultStaticPage';
|
|
22
|
+
export { default as DashDefaultTermsPage } from './Static/DashDefaultTermsPage';
|
|
23
|
+
export { default as DashDefaultPrivacyPage } from './Static/DashDefaultPrivacyPage';
|
|
24
|
+
|
|
25
|
+
// Re-export modules
|
|
26
|
+
export * from './Account';
|
|
27
|
+
export * from './Misc';
|
|
28
|
+
export * from './Static';
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dash Default Base Schema
|
|
3
|
+
*
|
|
4
|
+
* Base schema configuration with common attributes.
|
|
5
|
+
* This schema can be extended or merged with resource-specific schemas.
|
|
6
|
+
*/
|
|
7
|
+
import { IDashAutoAdminAttribute } from 'dash-auto-admin';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Dash default schema with basic ID field
|
|
11
|
+
* Most resources will need an ID field, so this provides
|
|
12
|
+
* a sensible default configuration.
|
|
13
|
+
*/
|
|
14
|
+
const dashDefaultSchema: IDashAutoAdminAttribute[] = [
|
|
15
|
+
{
|
|
16
|
+
attribute: 'id',
|
|
17
|
+
label: 'ID',
|
|
18
|
+
type: String,
|
|
19
|
+
sortable: true,
|
|
20
|
+
inEdit: false,
|
|
21
|
+
inCreate: false,
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
|
|
25
|
+
export default dashDefaultSchema;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dash Default Demo Schema (Todo)
|
|
3
|
+
*
|
|
4
|
+
* Example schema configuration for a Todo resource.
|
|
5
|
+
* Demonstrates common field types and configurations.
|
|
6
|
+
*/
|
|
7
|
+
import { IDashAutoAdminAttribute } from "dash-auto-admin";
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* Dash default demo Todo schema
|
|
11
|
+
*
|
|
12
|
+
* Demonstrates:
|
|
13
|
+
* - String fields (name)
|
|
14
|
+
* - Textarea fields (description)
|
|
15
|
+
* - Boolean fields (completed)
|
|
16
|
+
* - Tab grouping
|
|
17
|
+
*/
|
|
18
|
+
const dashDefaultTodoSchema: IDashAutoAdminAttribute[] = [
|
|
19
|
+
{
|
|
20
|
+
tab: 'Details',
|
|
21
|
+
attribute: 'name',
|
|
22
|
+
label: 'Name',
|
|
23
|
+
type: String,
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
tab: 'Details',
|
|
27
|
+
attribute: 'description',
|
|
28
|
+
label: 'Description',
|
|
29
|
+
type: 'textarea',
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
tab: 'Status',
|
|
33
|
+
attribute: 'completed',
|
|
34
|
+
label: 'Completed',
|
|
35
|
+
type: Boolean,
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
export default dashDefaultTodoSchema;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Default Schemas Index
|
|
3
|
+
*
|
|
4
|
+
* Default schema configurations for resources.
|
|
5
|
+
* These schemas provide common field configurations that can be
|
|
6
|
+
* customized or extended for specific resources.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
// Base schema
|
|
10
|
+
export { default as dashDefaultSchema } from './dashDefaultSchema';
|
|
11
|
+
|
|
12
|
+
// Demo schemas
|
|
13
|
+
export * from './demo';
|
|
14
|
+
export { default as dashDefaultTodoSchema } from './demo/dashDefaultTodoSchema';
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import Dot from "@mui/icons-material/FiberManualRecord";
|
|
2
|
+
import React from "react";
|
|
3
|
+
import IReferenceFilter from "dash-auto-admin/src/interfaces/IReferenceFilter";
|
|
4
|
+
import { SelectInput } from "react-admin";
|
|
5
|
+
|
|
6
|
+
const demoFilters: IReferenceFilter[] = [
|
|
7
|
+
{
|
|
8
|
+
id: 'name',
|
|
9
|
+
label: 'Nombre',
|
|
10
|
+
source: 'name',
|
|
11
|
+
alwaysOn: true,
|
|
12
|
+
reference: null,
|
|
13
|
+
optionText: null,
|
|
14
|
+
},
|
|
15
|
+
|
|
16
|
+
{
|
|
17
|
+
id: 'description',
|
|
18
|
+
label: 'Descripción',
|
|
19
|
+
source: 'description',
|
|
20
|
+
alwaysOn: true,
|
|
21
|
+
reference: null,
|
|
22
|
+
optionText: null,
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
{
|
|
26
|
+
id: 'completed',
|
|
27
|
+
label: 'Status',
|
|
28
|
+
source: 'completed',
|
|
29
|
+
reference: [
|
|
30
|
+
{ id: '1', name: 'Completado' },
|
|
31
|
+
{ id: '0', name: 'Incompleto' },
|
|
32
|
+
],
|
|
33
|
+
optionText: 'completed', // field from the model
|
|
34
|
+
alwaysOn: true,
|
|
35
|
+
referenceComponent: SelectInput,
|
|
36
|
+
}
|
|
37
|
+
];
|
|
38
|
+
|
|
39
|
+
export default demoFilters;
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* dash-app-common
|
|
3
|
+
*
|
|
4
|
+
* This package provides a simplified application shell for Dash applications.
|
|
5
|
+
*
|
|
6
|
+
* Main Components:
|
|
7
|
+
* - DashApp: Simple app shell that handles Router + Auth + Public/Private rendering
|
|
8
|
+
* - DashAppLoader: Legacy/advanced loader (wraps DashBootstrap for complex scenarios)
|
|
9
|
+
*
|
|
10
|
+
* Recommended Usage (Simple):
|
|
11
|
+
* ```tsx
|
|
12
|
+
* import { DashApp } from 'dash-app-common';
|
|
13
|
+
*
|
|
14
|
+
* // Zero-config (uses default routes)
|
|
15
|
+
* <DashApp />
|
|
16
|
+
*
|
|
17
|
+
* // With custom private app
|
|
18
|
+
* <DashApp PrivateApp={MyAdminApp} />
|
|
19
|
+
*
|
|
20
|
+
* // With custom routes
|
|
21
|
+
* <DashApp
|
|
22
|
+
* publicRoutes={myPublicRoutes}
|
|
23
|
+
* privateRoutes={myPrivateRoutes}
|
|
24
|
+
* />
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* Legacy Usage (DashAppLoader):
|
|
28
|
+
* ```tsx
|
|
29
|
+
* import DashAppLoader from 'dash-app-common';
|
|
30
|
+
*
|
|
31
|
+
* <DashAppLoader
|
|
32
|
+
* publicAppImport={() => import('./PublicApp')}
|
|
33
|
+
* privateAppImport={() => import('./PrivateApp')}
|
|
34
|
+
* />
|
|
35
|
+
* ```
|
|
36
|
+
*
|
|
37
|
+
* @packageDocumentation
|
|
38
|
+
*/
|
|
39
|
+
|
|
40
|
+
// ============================================================================
|
|
41
|
+
// NEW SIMPLIFIED API
|
|
42
|
+
// ============================================================================
|
|
43
|
+
|
|
44
|
+
// Main simplified component
|
|
45
|
+
export { DashApp, default as DashAppSimple } from './DashApp';
|
|
46
|
+
|
|
47
|
+
// ============================================================================
|
|
48
|
+
// LEGACY/ADVANCED API (DashAppLoader)
|
|
49
|
+
// ============================================================================
|
|
50
|
+
|
|
51
|
+
// Re-export base DashAppLoader for backward compatibility
|
|
52
|
+
export {
|
|
53
|
+
DashAppLoader,
|
|
54
|
+
createDashAppLoader,
|
|
55
|
+
type DashAppLoaderProps,
|
|
56
|
+
type DashAppLoaderConfig,
|
|
57
|
+
type IDashAuthState,
|
|
58
|
+
type IDashAppState,
|
|
59
|
+
type IDashAuthService,
|
|
60
|
+
type IDashReduxActions,
|
|
61
|
+
// Default fallback components
|
|
62
|
+
DefaultLoadingFallback,
|
|
63
|
+
DefaultErrorFallback,
|
|
64
|
+
} from './DashAppLoader';
|
|
65
|
+
|
|
66
|
+
// Re-export framework services for advanced customization
|
|
67
|
+
export {
|
|
68
|
+
DASHAuthenticationService,
|
|
69
|
+
DASH_REDUX_ACTIONS,
|
|
70
|
+
ACTION_UPDATE_AUTH,
|
|
71
|
+
AppLoadingFallback,
|
|
72
|
+
} from './DashAppLoader';
|
|
73
|
+
|
|
74
|
+
// Re-export default apps and routes for customization
|
|
75
|
+
export {
|
|
76
|
+
DashDefaultPublicApp,
|
|
77
|
+
DashDefaultPrivateApp,
|
|
78
|
+
} from './DashAppLoader';
|
|
79
|
+
|
|
80
|
+
// ============================================================================
|
|
81
|
+
// RESOURCE MANIFEST LOADING
|
|
82
|
+
// ============================================================================
|
|
83
|
+
|
|
84
|
+
// Resource loader for manifest-based dynamic resource loading
|
|
85
|
+
export {
|
|
86
|
+
DashPrivateAppWithManifest,
|
|
87
|
+
DashPrivateApp,
|
|
88
|
+
useDashResourceManifest,
|
|
89
|
+
loadResourcesFromManifest,
|
|
90
|
+
clearResourceCache,
|
|
91
|
+
isResourceManifest,
|
|
92
|
+
isResourceArray,
|
|
93
|
+
type ResourceImportFn,
|
|
94
|
+
type ResourceManifest,
|
|
95
|
+
type UseDashResourceManifestResult,
|
|
96
|
+
type DashPrivateAppWithManifestProps,
|
|
97
|
+
type DashPrivateAppProps,
|
|
98
|
+
} from './components/DashResourceLoader';
|
|
99
|
+
|
|
100
|
+
// ============================================================================
|
|
101
|
+
// DEFAULT ROUTES
|
|
102
|
+
// ============================================================================
|
|
103
|
+
|
|
104
|
+
export { dashDefaultPublicRoutes } from './defaults/extensions/router/dashDefaultPublicRoutes';
|
|
105
|
+
export { dashDefaultPrivateRoutes } from './defaults/extensions/router/dashDefaultPrivateRoutes';
|
|
106
|
+
|
|
107
|
+
// ============================================================================
|
|
108
|
+
// DEFAULTS (extensions, pages, filters, schemas)
|
|
109
|
+
// ============================================================================
|
|
110
|
+
|
|
111
|
+
// Re-export all defaults
|
|
112
|
+
export * from './defaults';
|
|
113
|
+
|
|
114
|
+
// Re-export default extensions by category
|
|
115
|
+
export * from './defaults/extensions';
|
|
116
|
+
|
|
117
|
+
// Re-export default pages
|
|
118
|
+
export * from './defaults/pages';
|
|
119
|
+
|
|
120
|
+
// Re-export default filters
|
|
121
|
+
export * from './defaults/filters';
|
|
122
|
+
|
|
123
|
+
// Re-export default schemas
|
|
124
|
+
export * from './defaults/schemas';
|
|
125
|
+
|
|
126
|
+
// ============================================================================
|
|
127
|
+
// DEFAULT EXPORT
|
|
128
|
+
// ============================================================================
|
|
129
|
+
|
|
130
|
+
// Default export is the legacy DashAppLoader for backward compatibility
|
|
131
|
+
export { default } from './DashAppLoader';
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import ResourceTemplate from 'dash-admin/src/templates/ResourceTemplate';
|
|
2
|
+
import { IDashAutoAdminResourceConfig } from 'dash-auto-admin';
|
|
3
|
+
import Dot from "@mui/icons-material/FiberManualRecord";
|
|
4
|
+
import React from "react";
|
|
5
|
+
import {DASHAppConstants} from "dash-constants";
|
|
6
|
+
import todoSchema from '../../schemas/demo/todoSchema';
|
|
7
|
+
import todoFilters from '../../filters/demo/todoFilters';
|
|
8
|
+
|
|
9
|
+
const Icon = Dot as unknown as React.FC;
|
|
10
|
+
|
|
11
|
+
const enableTrash = true;
|
|
12
|
+
const TodoResource: IDashAutoAdminResourceConfig =
|
|
13
|
+
{
|
|
14
|
+
roles:[DASHAppConstants.system.SYSTEM_ROLE],
|
|
15
|
+
component: ResourceTemplate,
|
|
16
|
+
//trash: true,
|
|
17
|
+
model: "example/todo",
|
|
18
|
+
label: "Todo",
|
|
19
|
+
schema: todoSchema,
|
|
20
|
+
icon: <Icon />,
|
|
21
|
+
group: "Example",
|
|
22
|
+
trash: enableTrash,
|
|
23
|
+
menu: [
|
|
24
|
+
{
|
|
25
|
+
title: "List",
|
|
26
|
+
redirect: "/example/todo",
|
|
27
|
+
},
|
|
28
|
+
...(enableTrash ? [{
|
|
29
|
+
title: "Trash",
|
|
30
|
+
redirect: "/example/todo/trash",
|
|
31
|
+
}] : []),
|
|
32
|
+
],
|
|
33
|
+
|
|
34
|
+
referenceFilters: todoFilters,
|
|
35
|
+
|
|
36
|
+
mainAction: {
|
|
37
|
+
title: "Crear Todo",
|
|
38
|
+
mode: "create",
|
|
39
|
+
fn:"virtualhash",
|
|
40
|
+
redirect: "inline/create",
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
view: true,
|
|
44
|
+
create: true,
|
|
45
|
+
edit: true,
|
|
46
|
+
|
|
47
|
+
drawer: true,
|
|
48
|
+
drawerOptions: {
|
|
49
|
+
create: true,
|
|
50
|
+
edit: true,
|
|
51
|
+
view: true
|
|
52
|
+
},
|
|
53
|
+
|
|
54
|
+
isFormData: true,
|
|
55
|
+
formGroupMode: "tabs",
|
|
56
|
+
|
|
57
|
+
postFormatter: (params) => {
|
|
58
|
+
return params;
|
|
59
|
+
},
|
|
60
|
+
|
|
61
|
+
mutationMode: "pessimistic",
|
|
62
|
+
saveButtonAlwaysEnabled: true,
|
|
63
|
+
listProps: {storeKey: false},
|
|
64
|
+
resetSelectedIdsOnLoad: true,
|
|
65
|
+
|
|
66
|
+
};
|
|
67
|
+
|
|
68
|
+
export default TodoResource;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { IDashAutoAdminAttribute } from 'dash-auto-admin';
|
|
2
|
+
|
|
3
|
+
const defaultSchema: IDashAutoAdminAttribute[] = [
|
|
4
|
+
{
|
|
5
|
+
attribute: 'id',
|
|
6
|
+
label: 'Id',
|
|
7
|
+
type: String,
|
|
8
|
+
sortable: true,
|
|
9
|
+
inEdit: false,
|
|
10
|
+
inCreate: false,
|
|
11
|
+
},
|
|
12
|
+
];
|
|
13
|
+
|
|
14
|
+
export default defaultSchema;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
|
|
2
|
+
import { IDashAutoAdminAttribute } from "dash-auto-admin";
|
|
3
|
+
|
|
4
|
+
const todoSchema: IDashAutoAdminAttribute[] = [
|
|
5
|
+
{
|
|
6
|
+
tab: 'Todo',
|
|
7
|
+
attribute: 'name',
|
|
8
|
+
label: 'Nombre',
|
|
9
|
+
type: String,
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
tab: 'Todo',
|
|
13
|
+
attribute: 'description',
|
|
14
|
+
label: 'Description',
|
|
15
|
+
type: 'textarea',
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
tab: 'Todo',
|
|
19
|
+
attribute: 'completed',
|
|
20
|
+
label: 'Completed',
|
|
21
|
+
type: Boolean,
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
];
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
export default todoSchema;
|