mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-08 02:24:11 +00:00
#150 Generalised AbstractListableElementComponent instead of grid/list specific implementations
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
import { Component, Inject } from '@angular/core';
|
||||||
|
import { ListableObject } from '../listable-object.model';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ds-abstract-object-element',
|
||||||
|
template: ``,
|
||||||
|
})
|
||||||
|
export class AbstractListableElementComponent <T extends ListableObject> {
|
||||||
|
object: T;
|
||||||
|
public constructor(@Inject('objectElementProvider') public listableObject: ListableObject) {
|
||||||
|
this.object = listableObject as T;
|
||||||
|
}
|
||||||
|
}
|
@@ -1,9 +1,9 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
|
|
||||||
import { Collection } from '../../../core/shared/collection.model';
|
import { Collection } from '../../../core/shared/collection.model';
|
||||||
import { ObjectGridElementComponent } from '../object-grid-element/object-grid-element.component';
|
|
||||||
import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator';
|
import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator';
|
||||||
import { ViewMode } from '../../../+search-page/search-options.model';
|
import { ViewMode } from '../../../+search-page/search-options.model';
|
||||||
|
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
|
||||||
|
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@@ -13,4 +13,4 @@ import { ViewMode } from '../../../+search-page/search-options.model';
|
|||||||
})
|
})
|
||||||
|
|
||||||
@renderElementsFor(Collection, ViewMode.Grid)
|
@renderElementsFor(Collection, ViewMode.Grid)
|
||||||
export class CollectionGridElementComponent extends ObjectGridElementComponent<Collection> {}
|
export class CollectionGridElementComponent extends AbstractListableElementComponent<Collection> {}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Component, Input, Inject } from '@angular/core';
|
import { Component, Input, Inject } from '@angular/core';
|
||||||
|
|
||||||
import { Community } from '../../../core/shared/community.model';
|
import { Community } from '../../../core/shared/community.model';
|
||||||
import { ObjectGridElementComponent } from '../object-grid-element/object-grid-element.component';
|
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
|
||||||
import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator';
|
import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator';
|
||||||
import { ViewMode } from '../../../+search-page/search-options.model';
|
import { ViewMode } from '../../../+search-page/search-options.model';
|
||||||
|
|
||||||
@@ -12,4 +12,4 @@ import { ViewMode } from '../../../+search-page/search-options.model';
|
|||||||
})
|
})
|
||||||
|
|
||||||
@renderElementsFor(Community, ViewMode.Grid)
|
@renderElementsFor(Community, ViewMode.Grid)
|
||||||
export class CommunityGridElementComponent extends ObjectGridElementComponent<Community> {}
|
export class CommunityGridElementComponent extends AbstractListableElementComponent<Community> {}
|
||||||
|
@@ -2,7 +2,7 @@ import { Component, Input, Inject } from '@angular/core';
|
|||||||
|
|
||||||
import { Item } from '../../../core/shared/item.model';
|
import { Item } from '../../../core/shared/item.model';
|
||||||
import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator';
|
import { renderElementsFor} from '../../object-collection/shared/dso-element-decorator';
|
||||||
import { ObjectGridElementComponent } from '../object-grid-element/object-grid-element.component';
|
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
|
||||||
import { ViewMode } from '../../../+search-page/search-options.model';
|
import { ViewMode } from '../../../+search-page/search-options.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@@ -12,4 +12,4 @@ import { ViewMode } from '../../../+search-page/search-options.model';
|
|||||||
})
|
})
|
||||||
|
|
||||||
@renderElementsFor(Item, ViewMode.Grid)
|
@renderElementsFor(Item, ViewMode.Grid)
|
||||||
export class ItemGridElementComponent extends ObjectGridElementComponent<Item> {}
|
export class ItemGridElementComponent extends AbstractListableElementComponent<Item> {}
|
||||||
|
@@ -1,5 +0,0 @@
|
|||||||
@import '../../../../styles/variables';
|
|
||||||
:host {
|
|
||||||
display: block;
|
|
||||||
margin-bottom: $spacer;
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
|
||||||
import { ListableObject } from '../../object-collection/shared/listable-object.model';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'ds-object-grid-element',
|
|
||||||
styleUrls: ['./object-grid-element.component.scss'],
|
|
||||||
templateUrl: './object-grid-element.component.html'
|
|
||||||
})
|
|
||||||
export class ObjectGridElementComponent <T extends ListableObject> {
|
|
||||||
object: T;
|
|
||||||
public constructor(@Inject('objectElementProvider') public gridable: ListableObject) {
|
|
||||||
this.object = gridable as T;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -4,7 +4,7 @@ import { SearchResult } from '../../../+search-page/search-result.model';
|
|||||||
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
||||||
import { Metadatum } from '../../../core/shared/metadatum.model';
|
import { Metadatum } from '../../../core/shared/metadatum.model';
|
||||||
import { isEmpty, hasNoValue } from '../../empty.util';
|
import { isEmpty, hasNoValue } from '../../empty.util';
|
||||||
import { ObjectGridElementComponent } from '../object-grid-element/object-grid-element.component';
|
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
|
||||||
import { ListableObject } from '../../object-collection/shared/listable-object.model';
|
import { ListableObject } from '../../object-collection/shared/listable-object.model';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
@@ -12,7 +12,7 @@ import { ListableObject } from '../../object-collection/shared/listable-object.m
|
|||||||
template: ``
|
template: ``
|
||||||
})
|
})
|
||||||
|
|
||||||
export class SearchResultGridElementComponent<T extends SearchResult<K>, K extends DSpaceObject> extends ObjectGridElementComponent<T> {
|
export class SearchResultGridElementComponent<T extends SearchResult<K>, K extends DSpaceObject> extends AbstractListableElementComponent<T> {
|
||||||
dso: K;
|
dso: K;
|
||||||
|
|
||||||
public constructor(@Inject('objectElementProvider') public gridable: ListableObject) {
|
public constructor(@Inject('objectElementProvider') public gridable: ListableObject) {
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
|
|
||||||
import { Collection } from '../../../core/shared/collection.model';
|
import { Collection } from '../../../core/shared/collection.model';
|
||||||
import { ObjectListElementComponent } from '../object-list-element/object-list-element.component';
|
|
||||||
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
|
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
|
||||||
import { ViewMode } from '../../../+search-page/search-options.model';
|
import { ViewMode } from '../../../+search-page/search-options.model';
|
||||||
|
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-collection-list-element',
|
selector: 'ds-collection-list-element',
|
||||||
@@ -12,4 +12,4 @@ import { ViewMode } from '../../../+search-page/search-options.model';
|
|||||||
})
|
})
|
||||||
|
|
||||||
@renderElementsFor(Collection, ViewMode.List)
|
@renderElementsFor(Collection, ViewMode.List)
|
||||||
export class CollectionListElementComponent extends ObjectListElementComponent<Collection> {}
|
export class CollectionListElementComponent extends AbstractListableElementComponent<Collection> {}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Component, Input, Inject } from '@angular/core';
|
import { Component, Input, Inject } from '@angular/core';
|
||||||
|
|
||||||
import { Community } from '../../../core/shared/community.model';
|
import { Community } from '../../../core/shared/community.model';
|
||||||
import { ObjectListElementComponent } from '../object-list-element/object-list-element.component';
|
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
|
||||||
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
|
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
|
||||||
import { ViewMode } from '../../../+search-page/search-options.model';
|
import { ViewMode } from '../../../+search-page/search-options.model';
|
||||||
|
|
||||||
@@ -12,4 +12,4 @@ import { ViewMode } from '../../../+search-page/search-options.model';
|
|||||||
})
|
})
|
||||||
|
|
||||||
@renderElementsFor(Community, ViewMode.List)
|
@renderElementsFor(Community, ViewMode.List)
|
||||||
export class CommunityListElementComponent extends ObjectListElementComponent<Community> {}
|
export class CommunityListElementComponent extends AbstractListableElementComponent<Community> {}
|
||||||
|
@@ -1,7 +1,7 @@
|
|||||||
import { Component, Input, Inject } from '@angular/core';
|
import { Component, Input, Inject } from '@angular/core';
|
||||||
|
|
||||||
import { Item } from '../../../core/shared/item.model';
|
import { Item } from '../../../core/shared/item.model';
|
||||||
import { ObjectListElementComponent } from '../object-list-element/object-list-element.component';
|
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
|
||||||
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
|
import { renderElementsFor } from '../../object-collection/shared/dso-element-decorator';
|
||||||
import { ViewMode } from '../../../+search-page/search-options.model';
|
import { ViewMode } from '../../../+search-page/search-options.model';
|
||||||
|
|
||||||
@@ -12,4 +12,4 @@ import { ViewMode } from '../../../+search-page/search-options.model';
|
|||||||
})
|
})
|
||||||
|
|
||||||
@renderElementsFor(Item, ViewMode.List)
|
@renderElementsFor(Item, ViewMode.List)
|
||||||
export class ItemListElementComponent extends ObjectListElementComponent<Item> {}
|
export class ItemListElementComponent extends AbstractListableElementComponent<Item> {}
|
||||||
|
@@ -1,6 +0,0 @@
|
|||||||
@import '../../../../styles/variables';
|
|
||||||
|
|
||||||
:host {
|
|
||||||
display: block;
|
|
||||||
margin-bottom: $spacer;
|
|
||||||
}
|
|
@@ -1,14 +0,0 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
|
||||||
import { ListableObject } from '../../object-collection/shared/listable-object.model';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'ds-object-list-element',
|
|
||||||
styleUrls: ['./object-list-element.component.scss'],
|
|
||||||
templateUrl: './object-list-element.component.html'
|
|
||||||
})
|
|
||||||
export class ObjectListElementComponent <T extends ListableObject> {
|
|
||||||
object: T;
|
|
||||||
public constructor(@Inject('objectElementProvider') public listable: ListableObject) {
|
|
||||||
this.object = listable as T;
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,18 +1,18 @@
|
|||||||
import { Component, Inject } from '@angular/core';
|
import { Component, Inject } from '@angular/core';
|
||||||
|
|
||||||
import { ObjectListElementComponent } from '../object-list-element/object-list-element.component';
|
|
||||||
import { SearchResult } from '../../../+search-page/search-result.model';
|
import { SearchResult } from '../../../+search-page/search-result.model';
|
||||||
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
import { DSpaceObject } from '../../../core/shared/dspace-object.model';
|
||||||
import { Metadatum } from '../../../core/shared/metadatum.model';
|
import { Metadatum } from '../../../core/shared/metadatum.model';
|
||||||
import { isEmpty, hasNoValue } from '../../empty.util';
|
import { isEmpty, hasNoValue } from '../../empty.util';
|
||||||
import { ListableObject } from '../../object-collection/shared/listable-object.model';
|
import { ListableObject } from '../../object-collection/shared/listable-object.model';
|
||||||
|
import { AbstractListableElementComponent } from '../../object-collection/shared/object-collection-element/abstract-listable-element.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-search-result-list-element',
|
selector: 'ds-search-result-list-element',
|
||||||
template: ``
|
template: ``
|
||||||
})
|
})
|
||||||
|
|
||||||
export class SearchResultListElementComponent<T extends SearchResult<K>, K extends DSpaceObject> extends ObjectListElementComponent<T> {
|
export class SearchResultListElementComponent<T extends SearchResult<K>, K extends DSpaceObject> extends AbstractListableElementComponent<T> {
|
||||||
dso: K;
|
dso: K;
|
||||||
|
|
||||||
public constructor(@Inject('objectElementProvider') public listable: ListableObject) {
|
public constructor(@Inject('objectElementProvider') public listable: ListableObject) {
|
||||||
|
@@ -17,7 +17,6 @@ import { TruncatePipe } from './utils/truncate.pipe';
|
|||||||
import { CollectionListElementComponent } from './object-list/collection-list-element/collection-list-element.component';
|
import { CollectionListElementComponent } from './object-list/collection-list-element/collection-list-element.component';
|
||||||
import { CommunityListElementComponent } from './object-list/community-list-element/community-list-element.component';
|
import { CommunityListElementComponent } from './object-list/community-list-element/community-list-element.component';
|
||||||
import { ItemListElementComponent } from './object-list/item-list-element/item-list-element.component';
|
import { ItemListElementComponent } from './object-list/item-list-element/item-list-element.component';
|
||||||
import { ObjectListElementComponent } from './object-list/object-list-element/object-list-element.component';
|
|
||||||
import { SearchResultListElementComponent } from './object-list/search-result-list-element/search-result-list-element.component';
|
import { SearchResultListElementComponent } from './object-list/search-result-list-element/search-result-list-element.component';
|
||||||
import { WrapperListElementComponent } from './object-list/wrapper-list-element/wrapper-list-element.component';
|
import { WrapperListElementComponent } from './object-list/wrapper-list-element/wrapper-list-element.component';
|
||||||
import { ObjectListComponent } from './object-list/object-list.component';
|
import { ObjectListComponent } from './object-list/object-list.component';
|
||||||
@@ -25,7 +24,7 @@ import { ObjectListComponent } from './object-list/object-list.component';
|
|||||||
import { CollectionGridElementComponent} from './object-grid/collection-grid-element/collection-grid-element.component'
|
import { CollectionGridElementComponent} from './object-grid/collection-grid-element/collection-grid-element.component'
|
||||||
import { CommunityGridElementComponent} from './object-grid/community-grid-element/community-grid-element.component'
|
import { CommunityGridElementComponent} from './object-grid/community-grid-element/community-grid-element.component'
|
||||||
import { ItemGridElementComponent} from './object-grid/item-grid-element/item-grid-element.component'
|
import { ItemGridElementComponent} from './object-grid/item-grid-element/item-grid-element.component'
|
||||||
import { ObjectGridElementComponent} from './object-grid/object-grid-element/object-grid-element.component'
|
import { AbstractListableElementComponent} from './object-collection/shared/object-collection-element/abstract-listable-element.component'
|
||||||
import { WrapperGridElementComponent} from './object-grid/wrapper-grid-element/wrapper-grid-element.component'
|
import { WrapperGridElementComponent} from './object-grid/wrapper-grid-element/wrapper-grid-element.component'
|
||||||
import { ObjectGridComponent } from './object-grid/object-grid.component';
|
import { ObjectGridComponent } from './object-grid/object-grid.component';
|
||||||
import { ObjectCollectionComponent } from './object-collection/object-collection.component';
|
import { ObjectCollectionComponent } from './object-collection/object-collection.component';
|
||||||
@@ -70,10 +69,9 @@ const COMPONENTS = [
|
|||||||
ErrorComponent,
|
ErrorComponent,
|
||||||
LoadingComponent,
|
LoadingComponent,
|
||||||
ObjectListComponent,
|
ObjectListComponent,
|
||||||
ObjectListElementComponent,
|
AbstractListableElementComponent,
|
||||||
WrapperListElementComponent,
|
WrapperListElementComponent,
|
||||||
ObjectGridComponent,
|
ObjectGridComponent,
|
||||||
ObjectGridElementComponent,
|
|
||||||
WrapperGridElementComponent,
|
WrapperGridElementComponent,
|
||||||
ObjectCollectionComponent,
|
ObjectCollectionComponent,
|
||||||
PaginationComponent,
|
PaginationComponent,
|
||||||
|
Reference in New Issue
Block a user