mirror of
https://github.com/dbeaver/cloudbeaver.git
synced 2026-09-24 16:04:36 +08:00
fix: CB-1452 navigation
This commit is contained in:
@@ -94,6 +94,8 @@ export interface IAdministrationItemOptions {
|
||||
isHidden?: ((configurationWizard: boolean) => boolean) | boolean;
|
||||
isOnlyActive?: ((configurationWizard: boolean) => boolean) | boolean;
|
||||
replace?: IAdministrationItemReplaceOptions;
|
||||
defaultSub?: string;
|
||||
defaultParam?: string;
|
||||
getDrawerComponent: () => AdministrationItemDrawerComponent;
|
||||
getContentComponent: () => AdministrationItemContentComponent;
|
||||
onLoad?: AdministrationItemEvent;
|
||||
|
||||
+43
-25
@@ -97,6 +97,32 @@ export class AdministrationScreenService {
|
||||
});
|
||||
}
|
||||
|
||||
getRouteName(item?: string, sub?: string, param?: string) {
|
||||
if (this.isConfigurationMode) {
|
||||
if (item) {
|
||||
if (sub) {
|
||||
if (param) {
|
||||
return AdministrationScreenService.setupItemSubParamRouteName;
|
||||
}
|
||||
return AdministrationScreenService.setupItemSubRouteName;
|
||||
}
|
||||
return AdministrationScreenService.setupItemRouteName;
|
||||
}
|
||||
return AdministrationScreenService.setupName;
|
||||
} else {
|
||||
if (item) {
|
||||
if (sub) {
|
||||
if (param) {
|
||||
return AdministrationScreenService.itemSubParamRouteName;
|
||||
}
|
||||
return AdministrationScreenService.itemSubRouteName;
|
||||
}
|
||||
return AdministrationScreenService.itemRouteName;
|
||||
}
|
||||
return AdministrationScreenService.screenName;
|
||||
}
|
||||
}
|
||||
|
||||
getScreen(state?: RouterState): IAdministrationItemRoute | null {
|
||||
if (!state || !this.isAdministrationRouteActive(state.name)) {
|
||||
return null;
|
||||
@@ -106,11 +132,7 @@ export class AdministrationScreenService {
|
||||
}
|
||||
|
||||
navigateToRoot(): void {
|
||||
if (this.isConfigurationMode) {
|
||||
this.screenService.navigateToScreen(AdministrationScreenService.setupName);
|
||||
} else {
|
||||
this.screenService.navigateToScreen(AdministrationScreenService.screenName);
|
||||
}
|
||||
this.screenService.navigateToScreen(this.getRouteName());
|
||||
}
|
||||
|
||||
navigateTo(item: string, params?: IRouteParams): void {
|
||||
@@ -121,28 +143,24 @@ export class AdministrationScreenService {
|
||||
}
|
||||
}
|
||||
|
||||
navigateToItem(item: string): void {
|
||||
if (this.isConfigurationMode) {
|
||||
this.screenService.navigateToScreen(AdministrationScreenService.setupItemRouteName, item);
|
||||
} else {
|
||||
this.screenService.navigateToScreen(AdministrationScreenService.itemRouteName, item);
|
||||
}
|
||||
navigateToItem(itemName: string): void {
|
||||
const item = this.administrationItemService.getItem(itemName, this.isConfigurationMode);
|
||||
|
||||
this.screenService.navigateToScreen(
|
||||
this.getRouteName(itemName, item?.defaultSub, item?.defaultParam),
|
||||
itemName,
|
||||
item?.defaultSub,
|
||||
item?.defaultParam
|
||||
);
|
||||
}
|
||||
|
||||
navigateToItemSub(item: string, sub: string, param?: string | null): void {
|
||||
if (!param) {
|
||||
if (this.isConfigurationMode) {
|
||||
this.screenService.navigateToScreen(AdministrationScreenService.setupItemSubRouteName, item, sub);
|
||||
} else {
|
||||
this.screenService.navigateToScreen(AdministrationScreenService.itemSubRouteName, item, sub);
|
||||
}
|
||||
return;
|
||||
}
|
||||
if (this.isConfigurationMode) {
|
||||
this.screenService.navigateToScreen(AdministrationScreenService.setupItemSubParamRouteName, item, sub, param);
|
||||
} else {
|
||||
this.screenService.navigateToScreen(AdministrationScreenService.itemSubParamRouteName, item, sub, param);
|
||||
}
|
||||
navigateToItemSub(item: string, sub: string, param?: string): void {
|
||||
this.screenService.navigateToScreen(
|
||||
this.getRouteName(item, sub, param),
|
||||
item,
|
||||
sub,
|
||||
param
|
||||
);
|
||||
}
|
||||
|
||||
getItemState<T>(name: string): T | undefined
|
||||
|
||||
+6
-3
@@ -48,10 +48,13 @@ export const UsersAdministration: AdministrationItemContentComponent = observer(
|
||||
const style = useStyles(ADMINISTRATION_TOOLS_PANEL_STYLES, tabStyle);
|
||||
|
||||
function openSub({ tabId }: ITabData) {
|
||||
if (sub?.name !== tabId) {
|
||||
param = null;
|
||||
if (subName === tabId) {
|
||||
return;
|
||||
}
|
||||
usersAdministrationNavigationService.navToSub(tabId as EUsersAdministrationSub, param);
|
||||
|
||||
param = null;
|
||||
|
||||
usersAdministrationNavigationService.navToSub(tabId as EUsersAdministrationSub, param || undefined);
|
||||
}
|
||||
|
||||
return styled(style)(
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@ export class UsersAdministrationNavigationService {
|
||||
this.navToSub(EUsersAdministrationSub.Users, 'create');
|
||||
}
|
||||
|
||||
navToSub(sub: EUsersAdministrationSub, param?: string | null): void {
|
||||
navToSub(sub: EUsersAdministrationSub, param?: string): void {
|
||||
this.administrationScreenService.navigateToItemSub(
|
||||
UsersAdministrationNavigationService.ItemName,
|
||||
sub,
|
||||
|
||||
+1
@@ -57,6 +57,7 @@ export class UsersAdministrationService extends Bootstrap {
|
||||
},
|
||||
},
|
||||
],
|
||||
defaultSub: EUsersAdministrationSub.Users,
|
||||
getContentComponent: () => UsersAdministration,
|
||||
getDrawerComponent: () => UsersDrawerItem,
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user