[ACA-2746] Side Navigation - conditionally render group of items (#1197)

* filter groups based on rule

* test

* update docs
This commit is contained in:
Cilibiu Bogdan
2019-09-06 17:16:43 +03:00
committed by GitHub
parent edf1e52e94
commit 1091c6fe86
3 changed files with 140 additions and 54 deletions

View File

@@ -235,71 +235,73 @@ export class AppExtensionService implements RuleContext {
}
getApplicationNavigation(elements) {
return elements.map(group => {
return {
...group,
items: (group.items || [])
.filter(entry => !entry.disabled)
.filter(item => this.filterVisible(item))
.sort(sortByOrder)
.map(item => {
if (item.children && item.children.length > 0) {
item.children = item.children
.filter(entry => !entry.disabled)
.filter(child => this.filterVisible(child))
.sort(sortByOrder)
.map(child => {
if (child.component) {
return {
...child
};
}
return elements
.filter(group => this.filterVisible(group))
.map(group => {
return {
...group,
items: (group.items || [])
.filter(entry => !entry.disabled)
.filter(item => this.filterVisible(item))
.sort(sortByOrder)
.map(item => {
if (item.children && item.children.length > 0) {
item.children = item.children
.filter(entry => !entry.disabled)
.filter(child => this.filterVisible(child))
.sort(sortByOrder)
.map(child => {
if (child.component) {
return {
...child
};
}
if (!child.click) {
const childRouteRef = this.extensions.getRouteById(
child.route
);
const childUrl = `/${
childRouteRef ? childRouteRef.path : child.route
}`;
return {
...child,
url: childUrl
};
}
if (!child.click) {
const childRouteRef = this.extensions.getRouteById(
child.route
);
const childUrl = `/${
childRouteRef ? childRouteRef.path : child.route
}`;
return {
...child,
url: childUrl
action: child.click
};
}
});
return {
...child,
action: child.click
};
});
return {
...item
};
}
return {
...item
};
}
if (item.component) {
return { ...item };
}
if (item.component) {
return { ...item };
}
if (!item.click) {
const routeRef = this.extensions.getRouteById(item.route);
const url = `/${routeRef ? routeRef.path : item.route}`;
return {
...item,
url
};
}
if (!item.click) {
const routeRef = this.extensions.getRouteById(item.route);
const url = `/${routeRef ? routeRef.path : item.route}`;
return {
...item,
url
action: item.click
};
}
return {
...item,
action: item.click
};
})
.reduce(reduceEmptyMenus, [])
};
});
})
.reduce(reduceEmptyMenus, [])
};
});
}
loadContentMetadata(config: ExtensionConfig): any {