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