fix: CB-1452 navigation

This commit is contained in:
Wroud
2021-11-19 20:43:25 +03:00
parent abe09a9476
commit cd2a7b7e0a
5 changed files with 53 additions and 29 deletions
@@ -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;
@@ -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
@@ -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)(
@@ -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,
@@ -57,6 +57,7 @@ export class UsersAdministrationService extends Bootstrap {
},
},
],
defaultSub: EUsersAdministrationSub.Users,
getContentComponent: () => UsersAdministration,
getDrawerComponent: () => UsersDrawerItem,
});