diff --git a/src/app/admin/admin-search-page/admin-search-page.component.html b/src/app/admin/admin-search-page/admin-search-page.component.html index 69ff132fe3..516799ddf9 100644 --- a/src/app/admin/admin-search-page/admin-search-page.component.html +++ b/src/app/admin/admin-search-page/admin-search-page.component.html @@ -1 +1 @@ - + diff --git a/src/app/admin/admin-search-page/admin-search-page.component.spec.ts b/src/app/admin/admin-search-page/admin-search-page.component.spec.ts index dd502ed112..d3a39f12f4 100644 --- a/src/app/admin/admin-search-page/admin-search-page.component.spec.ts +++ b/src/app/admin/admin-search-page/admin-search-page.component.spec.ts @@ -6,7 +6,7 @@ import { } from '@angular/core/testing'; import { ActivatedRoute } from '@angular/router'; -import { ConfigurationSearchPageComponent } from '../../search-page/configuration-search-page.component'; +import { ThemedConfigurationSearchPageComponent } from '../../search-page/themed-configuration-search-page.component'; import { ActivatedRouteStub } from '../../shared/testing/active-router.stub'; import { AdminSearchPageComponent } from './admin-search-page.component'; @@ -23,7 +23,7 @@ describe('AdminSearchPageComponent', () => { schemas: [NO_ERRORS_SCHEMA], }).overrideComponent(AdminSearchPageComponent, { remove: { - imports: [ConfigurationSearchPageComponent], + imports: [ThemedConfigurationSearchPageComponent], }, }) .compileComponents(); diff --git a/src/app/admin/admin-search-page/admin-search-page.component.ts b/src/app/admin/admin-search-page/admin-search-page.component.ts index d6215be971..99909b8257 100644 --- a/src/app/admin/admin-search-page/admin-search-page.component.ts +++ b/src/app/admin/admin-search-page/admin-search-page.component.ts @@ -1,14 +1,14 @@ import { Component } from '@angular/core'; import { Context } from '../../core/shared/context.model'; -import { ConfigurationSearchPageComponent } from '../../search-page/configuration-search-page.component'; +import { ThemedConfigurationSearchPageComponent } from '../../search-page/themed-configuration-search-page.component'; @Component({ selector: 'ds-admin-search-page', templateUrl: './admin-search-page.component.html', styleUrls: ['./admin-search-page.component.scss'], standalone: true, - imports: [ConfigurationSearchPageComponent], + imports: [ThemedConfigurationSearchPageComponent], }) /** diff --git a/src/app/admin/admin-workflow-page/admin-workflow-page.component.html b/src/app/admin/admin-workflow-page/admin-workflow-page.component.html index d12cefb331..c16ed31168 100644 --- a/src/app/admin/admin-workflow-page/admin-workflow-page.component.html +++ b/src/app/admin/admin-workflow-page/admin-workflow-page.component.html @@ -1 +1 @@ - + diff --git a/src/app/admin/admin-workflow-page/admin-workflow-page.component.spec.ts b/src/app/admin/admin-workflow-page/admin-workflow-page.component.spec.ts index ff326fbc27..252a38e771 100644 --- a/src/app/admin/admin-workflow-page/admin-workflow-page.component.spec.ts +++ b/src/app/admin/admin-workflow-page/admin-workflow-page.component.spec.ts @@ -5,7 +5,7 @@ import { waitForAsync, } from '@angular/core/testing'; -import { ConfigurationSearchPageComponent } from '../../search-page/configuration-search-page.component'; +import { ThemedConfigurationSearchPageComponent } from '../../search-page/themed-configuration-search-page.component'; import { AdminWorkflowPageComponent } from './admin-workflow-page.component'; describe('AdminSearchPageComponent', () => { @@ -20,7 +20,7 @@ describe('AdminSearchPageComponent', () => { .overrideComponent(AdminWorkflowPageComponent, { remove: { imports: [ - ConfigurationSearchPageComponent, + ThemedConfigurationSearchPageComponent, ], }, }) diff --git a/src/app/admin/admin-workflow-page/admin-workflow-page.component.ts b/src/app/admin/admin-workflow-page/admin-workflow-page.component.ts index fdc34fe4ab..62a66039af 100644 --- a/src/app/admin/admin-workflow-page/admin-workflow-page.component.ts +++ b/src/app/admin/admin-workflow-page/admin-workflow-page.component.ts @@ -1,14 +1,14 @@ import { Component } from '@angular/core'; import { Context } from '../../core/shared/context.model'; -import { ConfigurationSearchPageComponent } from '../../search-page/configuration-search-page.component'; +import { ThemedConfigurationSearchPageComponent } from '../../search-page/themed-configuration-search-page.component'; @Component({ selector: 'ds-admin-workflow-page', templateUrl: './admin-workflow-page.component.html', styleUrls: ['./admin-workflow-page.component.scss'], standalone: true, - imports: [ConfigurationSearchPageComponent], + imports: [ThemedConfigurationSearchPageComponent], }) /** diff --git a/src/app/home-page/home-page.component.default.scss b/src/app/home-page/home-page.component.default.scss deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/src/app/home-page/home-page.component.html b/src/app/home-page/home-page.component.html index c1d4b8a98c..44a86b0e0e 100644 --- a/src/app/home-page/home-page.component.html +++ b/src/app/home-page/home-page.component.html @@ -1,19 +1,28 @@ -
-
-
- -
-
+
+ +
+ + [searchPlaceholder]="'home.search-form.placeholder' | translate"> +
-
+
+ + +
+ + +
+
diff --git a/src/app/home-page/home-page.component.scss b/src/app/home-page/home-page.component.scss index 29a5e65b4c..653de42b44 100644 --- a/src/app/home-page/home-page.component.scss +++ b/src/app/home-page/home-page.component.scss @@ -1,2 +1,5 @@ -:host { -} \ No newline at end of file +:host ::ng-deep { + .container-fluid .container { + padding: 0; + } +} diff --git a/src/app/home-page/home-page.component.ts b/src/app/home-page/home-page.component.ts index afc71ae381..93ecac17fa 100644 --- a/src/app/home-page/home-page.component.ts +++ b/src/app/home-page/home-page.component.ts @@ -12,6 +12,10 @@ import { PLATFORM_ID, } from '@angular/core'; import { ActivatedRoute } from '@angular/router'; +import { Observable } from 'rxjs'; +import { Site } from '../core/shared/site.model'; +import { isPlatformServer } from '@angular/common'; +import { ServerResponseService } from '../core/services/server-response.service'; import { TranslateModule } from '@ngx-translate/core'; import { EMPTY, @@ -37,6 +41,10 @@ import { Site } from '../core/shared/site.model'; import { SuggestionsPopupComponent } from '../notifications/suggestions-popup/suggestions-popup.component'; import { ConfigurationSearchPageComponent } from '../search-page/configuration-search-page.component'; import { isNotEmpty } from '../shared/empty.util'; +import { APP_CONFIG, AppConfig } from 'src/config/app-config.interface'; +import { HostWindowService } from '../shared/host-window.service'; +import { SidebarService } from '../shared/sidebar/sidebar.service'; + import { ThemedSearchFormComponent } from '../shared/search-form/themed-search-form.component'; import { ViewTrackerComponent } from '../statistics/angulartics/dspace/view-tracker.component'; import { ThemedHomeNewsComponent } from './home-news/themed-home-news.component'; @@ -53,7 +61,9 @@ import { ThemedTopLevelCommunityListComponent } from './top-level-community-list export class HomePageComponent implements OnInit, OnDestroy { site$: Observable; + isXsOrSm$: Observable; recentSubmissionspageSize: number; + showDiscoverFilters: boolean; /** * An array of LinkDefinition objects representing inbox links for the home page. */ @@ -61,13 +71,17 @@ export class HomePageComponent implements OnInit, OnDestroy { constructor( @Inject(APP_CONFIG) protected appConfig: AppConfig, - private route: ActivatedRoute, - private responseService: ServerResponseService, - private notifyInfoService: NotifyInfoService, + protected route: ActivatedRoute, + protected responseService: ServerResponseService, + protected notifyInfoService: NotifyInfoService, protected linkHeadService: LinkHeadService, @Inject(PLATFORM_ID) private platformId: string, + protected sidebarService: SidebarService, + protected windowService: HostWindowService, + @Inject(PLATFORM_ID) protected platformId: string, ) { - this.recentSubmissionspageSize = environment.homePage.recentSubmissions.pageSize; + this.recentSubmissionspageSize = this.appConfig.homePage.recentSubmissions.pageSize; + this.showDiscoverFilters = this.appConfig.homePage.showDiscoverFilters; // Get COAR REST API URLs from REST configuration // only if COAR configuration is enabled this.notifyInfoService.isCoarConfigEnabled().pipe( @@ -86,6 +100,7 @@ export class HomePageComponent implements OnInit, OnDestroy { } ngOnInit(): void { + this.isXsOrSm$ = this.windowService.isXsOrSm(); this.site$ = this.route.data.pipe( map((data) => data.site as Site), ); diff --git a/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.html b/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.html index 36340bebfa..939d502d99 100644 --- a/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.html +++ b/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.html @@ -1,7 +1,7 @@ - - + diff --git a/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.spec.ts b/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.spec.ts index 8f918c2916..6771665362 100644 --- a/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.spec.ts +++ b/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.spec.ts @@ -9,7 +9,7 @@ import { NoopAnimationsModule } from '@angular/platform-browser/animations'; import { TranslateModule } from '@ngx-translate/core'; import { Item } from '../../../../core/shared/item.model'; -import { ConfigurationSearchPageComponent } from '../../../../search-page/configuration-search-page.component'; +import { ThemedConfigurationSearchPageComponent } from '../../../../search-page/themed-configuration-search-page.component'; import { RelatedEntitiesSearchComponent } from './related-entities-search.component'; describe('RelatedEntitiesSearchComponent', () => { @@ -30,7 +30,7 @@ describe('RelatedEntitiesSearchComponent', () => { }) .overrideComponent(RelatedEntitiesSearchComponent, { remove: { - imports: [ConfigurationSearchPageComponent], + imports: [ThemedConfigurationSearchPageComponent], }, }) .compileComponents(); diff --git a/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.ts b/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.ts index 341d90f9c0..5f4966587b 100644 --- a/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.ts +++ b/src/app/item-page/simple/related-entities/related-entities-search/related-entities-search.component.ts @@ -5,7 +5,7 @@ import { } from '@angular/core'; import { Item } from '../../../../core/shared/item.model'; -import { ConfigurationSearchPageComponent } from '../../../../search-page/configuration-search-page.component'; +import { ThemedConfigurationSearchPageComponent } from '../../../../search-page/themed-configuration-search-page.component'; import { isNotEmpty } from '../../../../shared/empty.util'; import { getFilterByRelation } from '../../../../shared/utils/relation-query.utils'; @@ -13,7 +13,7 @@ import { getFilterByRelation } from '../../../../shared/utils/relation-query.uti selector: 'ds-related-entities-search', templateUrl: './related-entities-search.component.html', standalone: true, - imports: [ConfigurationSearchPageComponent], + imports: [ThemedConfigurationSearchPageComponent], }) /** * A component to show related items as search results. diff --git a/src/app/search-page/themed-configuration-search-page.component.ts b/src/app/search-page/themed-configuration-search-page.component.ts index fc9497268c..0d39dca430 100644 --- a/src/app/search-page/themed-configuration-search-page.component.ts +++ b/src/app/search-page/themed-configuration-search-page.component.ts @@ -2,9 +2,12 @@ import { Component, Input, } from '@angular/core'; -import { Observable } from 'rxjs'; import { Context } from '../core/shared/context.model'; +import { ViewMode } from '../core/shared/view-mode.model'; +import { CollectionElementLinkType } from '../shared/object-collection/collection-element-link.type'; +import { SelectionConfig } from '../shared/search/search-results/search-results.component'; +import { SearchConfigurationOption } from '../shared/search/search-switch-configuration/search-configuration-option.model'; import { ThemedComponent } from '../shared/theme-support/themed.component'; import { ConfigurationSearchPageComponent } from './configuration-search-page.component'; @@ -13,53 +16,85 @@ import { ConfigurationSearchPageComponent } from './configuration-search-page.co */ @Component({ selector: 'ds-themed-configuration-search-page', - styleUrls: [], templateUrl: '../shared/theme-support/themed.component.html', standalone: true, }) export class ThemedConfigurationSearchPageComponent extends ThemedComponent { - /** - * The configuration to use for the search options - * If empty, the configuration will be determined by the route parameter called 'configuration' - */ + + @Input() configurationList: SearchConfigurationOption[] = []; + + @Input() context: Context; + @Input() configuration: string; - /** - * The actual query for the fixed filter. - * If empty, the query will be determined by the route parameter called 'filter' - */ @Input() fixedFilterQuery: string; - /** - * True when the search component should show results on the current page - */ + @Input() useCachedVersionIfAvailable: boolean; + @Input() inPlaceSearch: boolean; - /** - * Whether or not the search bar should be visible - */ + @Input() linkType: CollectionElementLinkType; + + @Input() paginationId: string; + @Input() searchEnabled: boolean; - /** - * The width of the sidebar (bootstrap columns) - */ - @Input() - sideBarWidth: number; + @Input() sideBarWidth: number; - /** - * The currently applied configuration (determines title of search) - */ - @Input() - configuration$: Observable; + @Input() searchFormPlaceholder: string; - /** - * The current context - */ - @Input() - context: Context; + @Input() selectable: boolean; - protected inAndOutputNames: (keyof ConfigurationSearchPageComponent & keyof this)[] = - ['context', 'configuration', 'fixedFilterQuery', 'inPlaceSearch', 'searchEnabled', 'sideBarWidth']; + @Input() selectionConfig: SelectionConfig; + + @Input() showCsvExport: boolean; + + @Input() showSidebar: boolean; + + @Input() showThumbnails: boolean; + + @Input() showViewModes: boolean; + + @Input() useUniquePageId: boolean; + + @Input() viewModeList: ViewMode[]; + + @Input() showScopeSelector: boolean; + + @Input() trackStatistics: boolean; + + @Input() query: string; + + @Input() scope: string; + + @Input() hideScopeInUrl: boolean; + + protected inAndOutputNames: (keyof ConfigurationSearchPageComponent & keyof this)[] = [ + 'configurationList', + 'context', + 'configuration', + 'fixedFilterQuery', + 'useCachedVersionIfAvailable', + 'inPlaceSearch', + 'linkType', + 'paginationId', + 'searchEnabled', + 'sideBarWidth', + 'searchFormPlaceholder', + 'selectable', + 'selectionConfig', + 'showCsvExport', + 'showSidebar', + 'showThumbnails', + 'showViewModes', + 'useUniquePageId', + 'viewModeList', + 'showScopeSelector', + 'trackStatistics', + 'query', + 'scope', + 'hideScopeInUrl', + ]; protected getComponentName(): string { return 'ConfigurationSearchPageComponent'; diff --git a/src/app/shared/search/search.component.html b/src/app/shared/search/search.component.html index c51acf0a7e..a8a4bc1a6a 100644 --- a/src/app/shared/search/search.component.html +++ b/src/app/shared/search/search.component.html @@ -1,4 +1,4 @@ -
+
@@ -18,7 +18,9 @@
- + + +
@@ -84,7 +86,7 @@ -
- +
diff --git a/src/themes/custom/app/home-page/home-page.component.ts b/src/themes/custom/app/home-page/home-page.component.ts index 7c24350acd..d4f4bcd3f1 100644 --- a/src/themes/custom/app/home-page/home-page.component.ts +++ b/src/themes/custom/app/home-page/home-page.component.ts @@ -12,7 +12,9 @@ import { RecentItemListComponent } from '../../../../app/home-page/recent-item-l import { ThemedTopLevelCommunityListComponent } from '../../../../app/home-page/top-level-community-list/themed-top-level-community-list.component'; import { SuggestionsPopupComponent } from '../../../../app/notifications/suggestions-popup/suggestions-popup.component'; import { ConfigurationSearchPageComponent } from '../../../../app/search-page/configuration-search-page.component'; +import { ThemedConfigurationSearchPageComponent } from '../../../../app/search-page/themed-configuration-search-page.component'; import { ThemedSearchFormComponent } from '../../../../app/shared/search-form/themed-search-form.component'; +import { PageWithSidebarComponent } from '../../../../app/shared/sidebar/page-with-sidebar.component'; import { ViewTrackerComponent } from '../../../../app/statistics/angulartics/dspace/view-tracker.component'; @Component({ @@ -22,7 +24,7 @@ import { ViewTrackerComponent } from '../../../../app/statistics/angulartics/dsp // templateUrl: './home-page.component.html' templateUrl: '../../../../app/home-page/home-page.component.html', standalone: true, - imports: [ThemedHomeNewsComponent, NgIf, ViewTrackerComponent, ThemedSearchFormComponent, ThemedTopLevelCommunityListComponent, RecentItemListComponent, AsyncPipe, TranslateModule, NgClass, ConfigurationSearchPageComponent, SuggestionsPopupComponent], + imports: [ThemedHomeNewsComponent, NgIf, ViewTrackerComponent, ThemedSearchFormComponent, ThemedTopLevelCommunityListComponent, RecentItemListComponent, AsyncPipe, TranslateModule, NgClass, ConfigurationSearchPageComponent, SuggestionsPopupComponent, ThemedConfigurationSearchPageComponent, PageWithSidebarComponent], }) export class HomePageComponent extends BaseComponent {