mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
Merge pull request #4385 from atmire/w2p-131441_backport-3065-8
[Port dspace-8_x] Made AdminSearchPageComponent themeable
This commit is contained in:
@@ -11,8 +11,8 @@ import {
|
|||||||
REGISTRIES_MODULE_PATH,
|
REGISTRIES_MODULE_PATH,
|
||||||
REPORTS_MODULE_PATH,
|
REPORTS_MODULE_PATH,
|
||||||
} from './admin-routing-paths';
|
} from './admin-routing-paths';
|
||||||
import { AdminSearchPageComponent } from './admin-search-page/admin-search-page.component';
|
import { ThemedAdminSearchPageComponent } from './admin-search-page/themed-admin-search-page.component';
|
||||||
import { AdminWorkflowPageComponent } from './admin-workflow-page/admin-workflow-page.component';
|
import { ThemedAdminWorkflowPageComponent } from './admin-workflow-page/themed-admin-workflow-page.component';
|
||||||
|
|
||||||
export const ROUTES: Route[] = [
|
export const ROUTES: Route[] = [
|
||||||
{
|
{
|
||||||
@@ -28,13 +28,13 @@ export const ROUTES: Route[] = [
|
|||||||
{
|
{
|
||||||
path: 'search',
|
path: 'search',
|
||||||
resolve: { breadcrumb: i18nBreadcrumbResolver },
|
resolve: { breadcrumb: i18nBreadcrumbResolver },
|
||||||
component: AdminSearchPageComponent,
|
component: ThemedAdminSearchPageComponent,
|
||||||
data: { title: 'admin.search.title', breadcrumbKey: 'admin.search' },
|
data: { title: 'admin.search.title', breadcrumbKey: 'admin.search' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
path: 'workflow',
|
path: 'workflow',
|
||||||
resolve: { breadcrumb: i18nBreadcrumbResolver },
|
resolve: { breadcrumb: i18nBreadcrumbResolver },
|
||||||
component: AdminWorkflowPageComponent,
|
component: ThemedAdminWorkflowPageComponent,
|
||||||
data: { title: 'admin.workflow.title', breadcrumbKey: 'admin.workflow' },
|
data: { title: 'admin.workflow.title', breadcrumbKey: 'admin.workflow' },
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
@@ -4,7 +4,7 @@ import { Context } from '../../core/shared/context.model';
|
|||||||
import { ThemedConfigurationSearchPageComponent } from '../../search-page/themed-configuration-search-page.component';
|
import { ThemedConfigurationSearchPageComponent } from '../../search-page/themed-configuration-search-page.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-admin-search-page',
|
selector: 'ds-base-admin-search-page',
|
||||||
templateUrl: './admin-search-page.component.html',
|
templateUrl: './admin-search-page.component.html',
|
||||||
styleUrls: ['./admin-search-page.component.scss'],
|
styleUrls: ['./admin-search-page.component.scss'],
|
||||||
standalone: true,
|
standalone: true,
|
||||||
|
52
src/app/admin/admin-search-page/admin-search.module.ts
Normal file
52
src/app/admin/admin-search-page/admin-search.module.ts
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
|
import { JournalEntitiesModule } from '../../entity-groups/journal-entities/journal-entities.module';
|
||||||
|
import { ResearchEntitiesModule } from '../../entity-groups/research-entities/research-entities.module';
|
||||||
|
import { SearchModule } from '../../shared/search/search.module';
|
||||||
|
import { SharedModule } from '../../shared/shared.module';
|
||||||
|
import { AdminSearchPageComponent } from './admin-search-page.component';
|
||||||
|
import { CollectionAdminSearchResultGridElementComponent } from './admin-search-results/admin-search-result-grid-element/collection-search-result/collection-admin-search-result-grid-element.component';
|
||||||
|
import { CommunityAdminSearchResultGridElementComponent } from './admin-search-results/admin-search-result-grid-element/community-search-result/community-admin-search-result-grid-element.component';
|
||||||
|
import { ItemAdminSearchResultGridElementComponent } from './admin-search-results/admin-search-result-grid-element/item-search-result/item-admin-search-result-grid-element.component';
|
||||||
|
import { CollectionAdminSearchResultListElementComponent } from './admin-search-results/admin-search-result-list-element/collection-search-result/collection-admin-search-result-list-element.component';
|
||||||
|
import { CommunityAdminSearchResultListElementComponent } from './admin-search-results/admin-search-result-list-element/community-search-result/community-admin-search-result-list-element.component';
|
||||||
|
import { ItemAdminSearchResultListElementComponent } from './admin-search-results/admin-search-result-list-element/item-search-result/item-admin-search-result-list-element.component';
|
||||||
|
import { ItemAdminSearchResultActionsComponent } from './admin-search-results/item-admin-search-result-actions.component';
|
||||||
|
import { ThemedAdminSearchPageComponent } from './themed-admin-search-page.component';
|
||||||
|
|
||||||
|
const ENTRY_COMPONENTS = [
|
||||||
|
// put only entry components that use custom decorator
|
||||||
|
ItemAdminSearchResultListElementComponent,
|
||||||
|
CommunityAdminSearchResultListElementComponent,
|
||||||
|
CollectionAdminSearchResultListElementComponent,
|
||||||
|
ItemAdminSearchResultGridElementComponent,
|
||||||
|
CommunityAdminSearchResultGridElementComponent,
|
||||||
|
CollectionAdminSearchResultGridElementComponent,
|
||||||
|
ItemAdminSearchResultActionsComponent,
|
||||||
|
];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
SearchModule,
|
||||||
|
SharedModule.withEntryComponents(),
|
||||||
|
JournalEntitiesModule.withEntryComponents(),
|
||||||
|
ResearchEntitiesModule.withEntryComponents(),
|
||||||
|
],
|
||||||
|
declarations: [
|
||||||
|
ThemedAdminSearchPageComponent,
|
||||||
|
AdminSearchPageComponent,
|
||||||
|
...ENTRY_COMPONENTS,
|
||||||
|
],
|
||||||
|
})
|
||||||
|
export class AdminSearchModule {
|
||||||
|
/**
|
||||||
|
* NOTE: this method allows to resolve issue with components that using a custom decorator
|
||||||
|
* which are not loaded during SSR otherwise
|
||||||
|
*/
|
||||||
|
static withEntryComponents() {
|
||||||
|
return {
|
||||||
|
ngModule: SharedModule,
|
||||||
|
providers: ENTRY_COMPONENTS.map((component) => ({ provide: component })),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,29 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
|
import { ThemedComponent } from '../../shared/theme-support/themed.component';
|
||||||
|
import { AdminSearchPageComponent } from './admin-search-page.component';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Themed wrapper for {@link AdminSearchPageComponent}
|
||||||
|
*/
|
||||||
|
@Component({
|
||||||
|
selector: 'ds-admin-search-page',
|
||||||
|
templateUrl: '../../shared/theme-support/themed.component.html',
|
||||||
|
standalone: true,
|
||||||
|
imports: [AdminSearchPageComponent],
|
||||||
|
})
|
||||||
|
export class ThemedAdminSearchPageComponent extends ThemedComponent<AdminSearchPageComponent> {
|
||||||
|
|
||||||
|
protected getComponentName(): string {
|
||||||
|
return 'AdminSearchPageComponent';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected importThemedComponent(themeName: string): Promise<any> {
|
||||||
|
return import(`../../../themes/${themeName}/app/admin/admin-search-page/admin-search-page.component`);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected importUnthemedComponent(): Promise<any> {
|
||||||
|
return import('./admin-search-page.component');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -4,7 +4,7 @@ import { Context } from '../../core/shared/context.model';
|
|||||||
import { ThemedConfigurationSearchPageComponent } from '../../search-page/themed-configuration-search-page.component';
|
import { ThemedConfigurationSearchPageComponent } from '../../search-page/themed-configuration-search-page.component';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-admin-workflow-page',
|
selector: 'ds-base-admin-workflow-page',
|
||||||
templateUrl: './admin-workflow-page.component.html',
|
templateUrl: './admin-workflow-page.component.html',
|
||||||
styleUrls: ['./admin-workflow-page.component.scss'],
|
styleUrls: ['./admin-workflow-page.component.scss'],
|
||||||
standalone: true,
|
standalone: true,
|
||||||
|
43
src/app/admin/admin-workflow-page/admin-workflow.module.ts
Normal file
43
src/app/admin/admin-workflow-page/admin-workflow.module.ts
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
import { NgModule } from '@angular/core';
|
||||||
|
|
||||||
|
import { SearchModule } from '../../shared/search/search.module';
|
||||||
|
import { SharedModule } from '../../shared/shared.module';
|
||||||
|
import { AdminWorkflowPageComponent } from './admin-workflow-page.component';
|
||||||
|
import { WorkflowItemSearchResultAdminWorkflowGridElementComponent } from './admin-workflow-search-results/admin-workflow-search-result-grid-element/workflow-item/workflow-item-search-result-admin-workflow-grid-element.component';
|
||||||
|
import { WorkflowItemSearchResultAdminWorkflowListElementComponent } from './admin-workflow-search-results/admin-workflow-search-result-list-element/workflow-item/workflow-item-search-result-admin-workflow-list-element.component';
|
||||||
|
import { WorkflowItemAdminWorkflowActionsComponent } from './admin-workflow-search-results/workflow-item-admin-workflow-actions.component';
|
||||||
|
import { ThemedAdminWorkflowPageComponent } from './themed-admin-workflow-page.component';
|
||||||
|
|
||||||
|
const ENTRY_COMPONENTS = [
|
||||||
|
// put only entry components that use custom decorator
|
||||||
|
WorkflowItemSearchResultAdminWorkflowListElementComponent,
|
||||||
|
WorkflowItemSearchResultAdminWorkflowGridElementComponent,
|
||||||
|
];
|
||||||
|
|
||||||
|
@NgModule({
|
||||||
|
imports: [
|
||||||
|
SearchModule,
|
||||||
|
SharedModule.withEntryComponents(),
|
||||||
|
],
|
||||||
|
declarations: [
|
||||||
|
ThemedAdminWorkflowPageComponent,
|
||||||
|
AdminWorkflowPageComponent,
|
||||||
|
WorkflowItemAdminWorkflowActionsComponent,
|
||||||
|
...ENTRY_COMPONENTS,
|
||||||
|
],
|
||||||
|
exports: [
|
||||||
|
AdminWorkflowPageComponent,
|
||||||
|
],
|
||||||
|
})
|
||||||
|
export class AdminWorkflowModuleModule {
|
||||||
|
/**
|
||||||
|
* NOTE: this method allows to resolve issue with components that using a custom decorator
|
||||||
|
* which are not loaded during SSR otherwise
|
||||||
|
*/
|
||||||
|
static withEntryComponents() {
|
||||||
|
return {
|
||||||
|
ngModule: SharedModule,
|
||||||
|
providers: ENTRY_COMPONENTS.map((component) => ({ provide: component })),
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,29 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
|
import { ThemedComponent } from '../../shared/theme-support/themed.component';
|
||||||
|
import { AdminWorkflowPageComponent } from './admin-workflow-page.component';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Themed wrapper for {@link AdminWorkflowPageComponent}
|
||||||
|
*/
|
||||||
|
@Component({
|
||||||
|
selector: 'ds-admin-workflow-page',
|
||||||
|
templateUrl: '../../shared/theme-support/themed.component.html',
|
||||||
|
standalone: true,
|
||||||
|
imports: [AdminWorkflowPageComponent],
|
||||||
|
})
|
||||||
|
export class ThemedAdminWorkflowPageComponent extends ThemedComponent<AdminWorkflowPageComponent> {
|
||||||
|
|
||||||
|
protected getComponentName(): string {
|
||||||
|
return 'AdminWorkflowPageComponent';
|
||||||
|
}
|
||||||
|
|
||||||
|
protected importThemedComponent(themeName: string): Promise<any> {
|
||||||
|
return import(`../../../themes/${themeName}/app/admin/admin-workflow-page/admin-workflow-page.component`);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected importUnthemedComponent(): Promise<any> {
|
||||||
|
return import('./admin-workflow-page.component');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -27,7 +27,7 @@ export class MetadataService {
|
|||||||
* Returns undefined otherwise.
|
* Returns undefined otherwise.
|
||||||
*/
|
*/
|
||||||
public virtualValue(metadataValue: MetadataValue | undefined): string {
|
public virtualValue(metadataValue: MetadataValue | undefined): string {
|
||||||
if (this.isVirtual) {
|
if (this.isVirtual(metadataValue)) {
|
||||||
return metadataValue.authority.substring(metadataValue.authority.indexOf(VIRTUAL_METADATA_PREFIX) + VIRTUAL_METADATA_PREFIX.length);
|
return metadataValue.authority.substring(metadataValue.authority.indexOf(VIRTUAL_METADATA_PREFIX) + VIRTUAL_METADATA_PREFIX.length);
|
||||||
} else {
|
} else {
|
||||||
return undefined;
|
return undefined;
|
||||||
|
@@ -182,11 +182,11 @@ export class InputSuggestionsComponent implements ControlValueAccessor, OnChange
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* When any key is pressed (except for the Enter button) the query input should move to the input field
|
* When any key is pressed (except for the Enter & Tab button) the query input should move to the input field
|
||||||
* @param {KeyboardEvent} event The keyboard event
|
* @param {KeyboardEvent} event The keyboard event
|
||||||
*/
|
*/
|
||||||
onKeydown(event: KeyboardEvent) {
|
onKeydown(event: KeyboardEvent) {
|
||||||
if (event.key !== 'Enter') {
|
if (event.key !== 'Enter' && event.key !== 'Tab') {
|
||||||
this.queryInput.nativeElement.focus();
|
this.queryInput.nativeElement.focus();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -0,0 +1,16 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
|
import { AdminSearchPageComponent as BaseComponent } from '../../../../../app/admin/admin-search-page/admin-search-page.component';
|
||||||
|
import { ThemedConfigurationSearchPageComponent } from '../../../../../app/search-page/themed-configuration-search-page.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ds-themed-admin-search-page',
|
||||||
|
// styleUrls: ['./admin-search-page.component.scss'],
|
||||||
|
styleUrls: ['../../../../../app/admin/admin-search-page/admin-search-page.component.scss'],
|
||||||
|
// templateUrl: './admin-search-page.component.html',
|
||||||
|
templateUrl: '../../../../../app/admin/admin-search-page/admin-search-page.component.html',
|
||||||
|
imports: [ThemedConfigurationSearchPageComponent],
|
||||||
|
standalone: true,
|
||||||
|
})
|
||||||
|
export class AdminSearchPageComponent extends BaseComponent {
|
||||||
|
}
|
@@ -0,0 +1,16 @@
|
|||||||
|
import { Component } from '@angular/core';
|
||||||
|
|
||||||
|
import { AdminWorkflowPageComponent as BaseComponent } from '../../../../../app/admin/admin-workflow-page/admin-workflow-page.component';
|
||||||
|
import { ThemedConfigurationSearchPageComponent } from '../../../../../app/search-page/themed-configuration-search-page.component';
|
||||||
|
|
||||||
|
@Component({
|
||||||
|
selector: 'ds-themed-admin-workflow-page',
|
||||||
|
// styleUrls: ['./admin-workflow-page.component.scss'],
|
||||||
|
styleUrls: ['../../../../../app/admin/admin-workflow-page/admin-workflow-page.component.scss'],
|
||||||
|
// templateUrl: './admin-workflow-page.component.html',
|
||||||
|
templateUrl: '../../../../../app/admin/admin-workflow-page/admin-workflow-page.component.html',
|
||||||
|
standalone: true,
|
||||||
|
imports: [ThemedConfigurationSearchPageComponent],
|
||||||
|
})
|
||||||
|
export class AdminWorkflowPageComponent extends BaseComponent {
|
||||||
|
}
|
@@ -14,7 +14,9 @@ import { ScrollToModule } from '@nicky-lenaers/ngx-scroll-to';
|
|||||||
import { RootModule } from '../../app/root.module';
|
import { RootModule } from '../../app/root.module';
|
||||||
import { SearchResultsSkeletonComponent } from '../../app/shared/search/search-results/search-results-skeleton/search-results-skeleton.component';
|
import { SearchResultsSkeletonComponent } from '../../app/shared/search/search-results/search-results-skeleton/search-results-skeleton.component';
|
||||||
import { MetadataImportPageComponent } from './app/admin/admin-import-metadata-page/metadata-import-page.component';
|
import { MetadataImportPageComponent } from './app/admin/admin-import-metadata-page/metadata-import-page.component';
|
||||||
|
import { AdminSearchPageComponent } from './app/admin/admin-search-page/admin-search-page.component';
|
||||||
import { AdminSidebarComponent } from './app/admin/admin-sidebar/admin-sidebar.component';
|
import { AdminSidebarComponent } from './app/admin/admin-sidebar/admin-sidebar.component';
|
||||||
|
import { AdminWorkflowPageComponent } from './app/admin/admin-workflow-page/admin-workflow-page.component';
|
||||||
import { EditBitstreamPageComponent } from './app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component';
|
import { EditBitstreamPageComponent } from './app/bitstream-page/edit-bitstream-page/edit-bitstream-page.component';
|
||||||
import { BreadcrumbsComponent } from './app/breadcrumbs/breadcrumbs.component';
|
import { BreadcrumbsComponent } from './app/breadcrumbs/breadcrumbs.component';
|
||||||
import { BrowseByDateComponent } from './app/browse-by/browse-by-date/browse-by-date.component';
|
import { BrowseByDateComponent } from './app/browse-by/browse-by-date/browse-by-date.component';
|
||||||
@@ -104,7 +106,6 @@ import { WorkflowItemDeleteComponent } from './app/workflowitems-edit-page/workf
|
|||||||
import { WorkflowItemSendBackComponent } from './app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component';
|
import { WorkflowItemSendBackComponent } from './app/workflowitems-edit-page/workflow-item-send-back/workflow-item-send-back.component';
|
||||||
import { WorkspaceItemsDeletePageComponent } from './app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component';
|
import { WorkspaceItemsDeletePageComponent } from './app/workspaceitems-edit-page/workspaceitems-delete-page/workspaceitems-delete-page.component';
|
||||||
|
|
||||||
|
|
||||||
const DECLARATIONS = [
|
const DECLARATIONS = [
|
||||||
FileSectionComponent,
|
FileSectionComponent,
|
||||||
HomePageComponent,
|
HomePageComponent,
|
||||||
@@ -197,6 +198,8 @@ const DECLARATIONS = [
|
|||||||
SubmissionUploadFilesComponent,
|
SubmissionUploadFilesComponent,
|
||||||
ComcolPageContentComponent,
|
ComcolPageContentComponent,
|
||||||
SearchResultsSkeletonComponent,
|
SearchResultsSkeletonComponent,
|
||||||
|
AdminSearchPageComponent,
|
||||||
|
AdminWorkflowPageComponent,
|
||||||
];
|
];
|
||||||
|
|
||||||
@NgModule({
|
@NgModule({
|
||||||
|
Reference in New Issue
Block a user