mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
94391: intermittent commit
This commit is contained in:

committed by
Yury Bondarenko

parent
b7c1e76b7f
commit
4489b3417c
@@ -7,7 +7,7 @@
|
||||
[attr.aria-labelledby]="'sidebarName-' + section.id"
|
||||
[attr.aria-expanded]="expanded | async"
|
||||
[title]="('menu.section.icon.' + section.id) | translate"
|
||||
[class.disabled]="section.model.disabled"
|
||||
[class.disabled]="section.model?.disabled"
|
||||
(click)="toggleSection($event)"
|
||||
(keyup.space)="toggleSection($event)"
|
||||
(keyup.enter)="toggleSection($event)"
|
||||
|
@@ -15,6 +15,8 @@ import { DsoVersioningModalService } from './dso-versioning-modal-service/dso-ve
|
||||
import { DSpaceObjectDataService } from '../../core/data/dspace-object-data.service';
|
||||
import { Item } from '../../core/shared/item.model';
|
||||
import { createFailedRemoteDataObject$, createSuccessfulRemoteDataObject$ } from '../remote-data.utils';
|
||||
import { TextMenuItemModel } from '../menu/menu-item/models/text.model';
|
||||
import { LinkMenuItemModel } from '../menu/menu-item/models/link.model';
|
||||
|
||||
describe('DSOEditMenuResolver', () => {
|
||||
|
||||
@@ -164,7 +166,7 @@ describe('DSOEditMenuResolver', () => {
|
||||
expect(menuList[0].active).toEqual(false);
|
||||
expect(menuList[0].visible).toEqual(true);
|
||||
expect(menuList[0].model.type).toEqual(MenuItemType.ONCLICK);
|
||||
expect(menuList[0].model.text).toEqual('message');
|
||||
expect((menuList[0].model as TextMenuItemModel).text).toEqual('message');
|
||||
expect(menuList[0].model.disabled).toEqual(false);
|
||||
expect(menuList[0].icon).toEqual('code-branch');
|
||||
done();
|
||||
@@ -179,8 +181,8 @@ describe('DSOEditMenuResolver', () => {
|
||||
expect(menuList[0].active).toEqual(false);
|
||||
expect(menuList[0].visible).toEqual(true);
|
||||
expect(menuList[0].model.type).toEqual(MenuItemType.LINK);
|
||||
expect(menuList[0].model.text).toEqual('item.page.edit');
|
||||
expect(menuList[0].model.link).toEqual('test-url/edit/metadata');
|
||||
expect((menuList[0].model as LinkMenuItemModel).text).toEqual('item.page.edit');
|
||||
expect((menuList[0].model as LinkMenuItemModel).link).toEqual('test-url/edit/metadata');
|
||||
expect(menuList[0].icon).toEqual('pencil-alt');
|
||||
done();
|
||||
});
|
||||
|
@@ -16,6 +16,7 @@ import { URLCombiner } from '../../core/url-combiner/url-combiner';
|
||||
import { DsoVersioningModalService } from './dso-versioning-modal-service/dso-versioning-modal.service';
|
||||
import { hasValue } from '../empty.util';
|
||||
import { MenuSection } from '../menu/menu.reducer';
|
||||
import { TextMenuItemModel } from '../menu/menu-item/models/text.model';
|
||||
|
||||
/**
|
||||
* Creates the menus for the dspace object pages
|
||||
@@ -65,17 +66,17 @@ export class DSOEditMenuResolver implements Resolve<{ [key: string]: MenuSection
|
||||
/**
|
||||
* Return all the menus for a dso based on the route and state
|
||||
*/
|
||||
getDsoMenus(dso, route, state) {
|
||||
getDsoMenus(dso, route, state): Observable<MenuSection[]>[] {
|
||||
return [
|
||||
this.getItemMenu(dso),
|
||||
this.getCommonMenu(dso, state)
|
||||
this.getCommonMenu(dso, state),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the common menus between all dspace objects
|
||||
*/
|
||||
protected getCommonMenu(dso, state): Observable<any[]> {
|
||||
protected getCommonMenu(dso, state): Observable<MenuSection[]> {
|
||||
return combineLatest([
|
||||
this.authorizationService.isAuthorized(FeatureID.CanEditMetadata, dso.self),
|
||||
]).pipe(
|
||||
@@ -102,7 +103,7 @@ export class DSOEditMenuResolver implements Resolve<{ [key: string]: MenuSection
|
||||
/**
|
||||
* Get item sepcific menus
|
||||
*/
|
||||
protected getItemMenu(dso): Observable<any[]> {
|
||||
protected getItemMenu(dso): Observable<MenuSection[]> {
|
||||
if (dso instanceof Item) {
|
||||
return combineLatest([
|
||||
this.authorizationService.isAuthorized(FeatureID.CanCreateVersion, dso.self),
|
||||
|
@@ -1,14 +1,16 @@
|
||||
<div class="dso-button-menu mb-1" ngbDropdown placement="bottom-right">
|
||||
<div class="dso-button-menu mb-1" ngbDropdown container="body" placement="bottom-right">
|
||||
<div class="d-flex flex-row flex-nowrap"
|
||||
[ngbTooltip]="itemModel.text | translate">
|
||||
<button class="btn btn-dark btn-sm" ngbDropdownToggle [disabled]="section.model.disabled">
|
||||
<button class="btn btn-dark btn-sm" ngbDropdownToggle [disabled]="section.model?.disabled">
|
||||
<i class="fas fa-{{section.icon}} fa-fw"></i>
|
||||
</button>
|
||||
<ul ngbDropdownMenu>
|
||||
<ng-container *ngFor="let subSection of (subSections$ | async)">
|
||||
<ul ngbDropdownMenu class="dso-edit-dropdown-menu">
|
||||
<li class="nav-item" *ngFor="let subSection of (subSections$ | async)">
|
||||
<i *ngIf="subSection.icon" class="fas fa-{{subSection.icon}} fa-fw mr-2"></i>
|
||||
<ng-container
|
||||
*ngComponentOutlet="(sectionMap$ | async).get(subSection.id).component; injector: (sectionMap$ | async).get(subSection.id).injector;"></ng-container>
|
||||
</ng-container>
|
||||
*ngComponentOutlet="(sectionMap$ | async).get(subSection.id).component; injector: (sectionMap$ | async).get(subSection.id).injector;">
|
||||
</ng-container>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
@@ -92,3 +92,8 @@ ngb-modal-backdrop {
|
||||
hyphens: auto;
|
||||
|
||||
}
|
||||
|
||||
ul.dso-edit-dropdown-menu li.nav-item ng-deep a.nav-link {
|
||||
padding: 0;
|
||||
display: inline;
|
||||
}
|
||||
|
Reference in New Issue
Block a user