import { Component, EventEmitter, Input, Output } from '@angular/core'; import { ThemedComponent } from '../theme-support/themed.component'; import { BrowseByComponent } from './browse-by.component'; import { Observable } from 'rxjs'; import { RemoteData } from '../../core/data/remote-data'; import { PaginatedList } from '../../core/data/paginated-list.model'; import { ListableObject } from '../object-collection/shared/listable-object.model'; import { PaginationComponentOptions } from '../pagination/pagination-component-options.model'; import { SortDirection, SortOptions } from '../../core/cache/models/sort-options.model'; import { StartsWithType } from '../starts-with/starts-with-type'; /** * Themed wrapper for {@link BrowseByComponent} */ @Component({ selector: 'ds-themed-browse-by', styleUrls: [], templateUrl: '../theme-support/themed.component.html', standalone: true }) export class ThemedBrowseByComponent extends ThemedComponent { @Input() title: string; @Input() displayTitle: boolean; @Input() objects$: Observable>>; @Input() paginationConfig: PaginationComponentOptions; @Input() sortConfig: SortOptions; @Input() type: StartsWithType; @Input() startsWithOptions: (string | number)[]; @Input() showPaginator: boolean; @Input() hideGear: boolean; @Output() prev: EventEmitter = new EventEmitter(); @Output() next: EventEmitter = new EventEmitter(); @Output() pageSizeChange: EventEmitter = new EventEmitter(); @Output() sortDirectionChange: EventEmitter = new EventEmitter(); protected inAndOutputNames: (keyof BrowseByComponent & keyof this)[] = [ 'title', 'displayTitle', 'objects$', 'paginationConfig', 'sortConfig', 'type', 'startsWithOptions', 'showPaginator', 'hideGear', 'prev', 'next', 'pageSizeChange', 'sortDirectionChange', ]; protected getComponentName(): string { return 'BrowseByComponent'; } protected importThemedComponent(themeName: string): Promise { return import(`../../../themes/${themeName}/app/shared/browse-by/browse-by.component.ts`); } protected importUnthemedComponent(): Promise { return import('./browse-by.component'); } }