diff --git a/src/app/collection-page/collection-form/collection-form.component.ts b/src/app/collection-page/collection-form/collection-form.component.ts index 49890c7cb5f..b7b2690b104 100644 --- a/src/app/collection-page/collection-form/collection-form.component.ts +++ b/src/app/collection-page/collection-form/collection-form.component.ts @@ -39,7 +39,7 @@ import { ComColFormComponent } from '../../shared/comcol/comcol-forms/comcol-for import { ComcolPageLogoComponent } from '../../shared/comcol/comcol-page-logo/comcol-page-logo.component'; import { FormComponent } from '../../shared/form/form.component'; import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { UploaderComponent } from '../../shared/upload/uploader/uploader.component'; +import { ThemedUploaderComponent } from '../../shared/upload/uploader/themed-uploader.component'; import { VarDirective } from '../../shared/utils/var.directive'; import { collectionFormEntityTypeSelectionConfig, @@ -57,7 +57,7 @@ import { imports: [ FormComponent, TranslateModule, - UploaderComponent, + ThemedUploaderComponent, AsyncPipe, ComcolPageLogoComponent, VarDirective, diff --git a/src/app/community-page/community-form/community-form.component.ts b/src/app/community-page/community-form/community-form.component.ts index 147f6254eac..e277dcc4cce 100644 --- a/src/app/community-page/community-form/community-form.component.ts +++ b/src/app/community-page/community-form/community-form.component.ts @@ -28,7 +28,7 @@ import { ComColFormComponent } from '../../shared/comcol/comcol-forms/comcol-for import { ComcolPageLogoComponent } from '../../shared/comcol/comcol-page-logo/comcol-page-logo.component'; import { FormComponent } from '../../shared/form/form.component'; import { NotificationsService } from '../../shared/notifications/notifications.service'; -import { UploaderComponent } from '../../shared/upload/uploader/uploader.component'; +import { ThemedUploaderComponent } from '../../shared/upload/uploader/themed-uploader.component'; import { VarDirective } from '../../shared/utils/var.directive'; /** @@ -42,7 +42,7 @@ import { VarDirective } from '../../shared/utils/var.directive'; imports: [ FormComponent, TranslateModule, - UploaderComponent, + ThemedUploaderComponent, AsyncPipe, ComcolPageLogoComponent, VarDirective, diff --git a/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts b/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts index 6a57c6d4b59..76654d37013 100644 --- a/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts +++ b/src/app/item-page/bitstreams/upload/upload-bitstream.component.spec.ts @@ -34,7 +34,7 @@ import { AuthServiceStub } from '../../../shared/testing/auth-service.stub'; import { NotificationsServiceStub } from '../../../shared/testing/notifications-service.stub'; import { RouterStub } from '../../../shared/testing/router.stub'; import { createPaginatedList } from '../../../shared/testing/utils.test'; -import { UploaderComponent } from '../../../shared/upload/uploader/uploader.component'; +import { ThemedUploaderComponent } from '../../../shared/upload/uploader/themed-uploader.component'; import { VarDirective } from '../../../shared/utils/var.directive'; import { UploadBitstreamComponent } from './upload-bitstream.component'; @@ -315,7 +315,10 @@ describe('UploadBitstreamComponent', () => { }) .overrideComponent(UploadBitstreamComponent, { remove: { - imports: [UploaderComponent, DsoInputSuggestionsComponent], + imports: [ + DsoInputSuggestionsComponent, + ThemedUploaderComponent, + ], }, }) .compileComponents(); diff --git a/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts b/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts index 00d0a9a4200..58a646ce21e 100644 --- a/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts +++ b/src/app/item-page/bitstreams/upload/upload-bitstream.component.ts @@ -47,6 +47,7 @@ import { } from '../../../shared/empty.util'; import { DsoInputSuggestionsComponent } from '../../../shared/input-suggestions/dso-input-suggestions/dso-input-suggestions.component'; import { NotificationsService } from '../../../shared/notifications/notifications.service'; +import { ThemedUploaderComponent } from '../../../shared/upload/uploader/themed-uploader.component'; import { UploaderComponent } from '../../../shared/upload/uploader/uploader.component'; import { UploaderOptions } from '../../../shared/upload/uploader/uploader-options.model'; import { VarDirective } from '../../../shared/utils/var.directive'; @@ -61,7 +62,7 @@ import { getEntityEditRoute } from '../../item-page-routing-paths'; VarDirective, DsoInputSuggestionsComponent, FormsModule, - UploaderComponent, + ThemedUploaderComponent, ], standalone: true, }) diff --git a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts index 7a89089051e..262689dac55 100644 --- a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts +++ b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts @@ -33,7 +33,7 @@ import { BrowserOnlyPipe } from '../../../shared/utils/browser-only.pipe'; * This component represents the 'Import metadata from external source' dropdown menu */ @Component({ - selector: 'ds-my-dspace-new-external-dropdown', + selector: 'ds-base-my-dspace-new-external-dropdown', styleUrls: ['./my-dspace-new-external-dropdown.component.scss'], templateUrl: './my-dspace-new-external-dropdown.component.html', imports: [ diff --git a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/themed-my-dspace-new-external-dropdown.component.ts b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/themed-my-dspace-new-external-dropdown.component.ts new file mode 100644 index 00000000000..1f3183c2d85 --- /dev/null +++ b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/themed-my-dspace-new-external-dropdown.component.ts @@ -0,0 +1,28 @@ +import { Component } from '@angular/core'; + +import { ThemedComponent } from '../../../shared/theme-support/themed.component'; +import { MyDSpaceNewExternalDropdownComponent } from './my-dspace-new-external-dropdown.component'; + +/** + * Themed wrapper for {@link MyDSpaceNewExternalDropdownComponent} + */ +@Component({ + selector: 'ds-my-dspace-new-external-dropdown', + templateUrl: './../../../shared/theme-support/themed.component.html', + standalone: true, + imports : [MyDSpaceNewExternalDropdownComponent], +}) +export class ThemedMyDSpaceNewExternalDropdownComponent extends ThemedComponent { + + protected getComponentName(): string { + return 'MyDSpaceNewExternalDropdownComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../themes/${themeName}/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./my-dspace-new-external-dropdown.component'); + } +} diff --git a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts index 25cfe437bd1..9da33756b95 100644 --- a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts +++ b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts @@ -35,7 +35,7 @@ import { BrowserOnlyPipe } from '../../../shared/utils/browser-only.pipe'; * This component represents the new submission dropdown */ @Component({ - selector: 'ds-my-dspace-new-submission-dropdown', + selector: 'ds-base-my-dspace-new-submission-dropdown', styleUrls: ['./my-dspace-new-submission-dropdown.component.scss'], templateUrl: './my-dspace-new-submission-dropdown.component.html', imports: [ diff --git a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/themed-my-dspace-new-submission-dropdown.component.ts b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/themed-my-dspace-new-submission-dropdown.component.ts new file mode 100644 index 00000000000..d5b2c9570ac --- /dev/null +++ b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/themed-my-dspace-new-submission-dropdown.component.ts @@ -0,0 +1,28 @@ +import { Component } from '@angular/core'; + +import { ThemedComponent } from '../../../shared/theme-support/themed.component'; +import { MyDSpaceNewSubmissionDropdownComponent } from './my-dspace-new-submission-dropdown.component'; + +/** + * Themed wrapper for {@link MyDSpaceNewSubmissionDropdownComponent} + */ +@Component({ + selector: 'ds-my-dspace-new-submission-dropdown', + templateUrl: './../../../shared/theme-support/themed.component.html', + standalone: true, + imports: [MyDSpaceNewSubmissionDropdownComponent], +}) +export class ThemedMyDSpaceNewSubmissionDropdownComponent extends ThemedComponent { + + protected getComponentName(): string { + return 'MyDSpaceNewSubmissionDropdownComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../themes/${themeName}/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./my-dspace-new-submission-dropdown.component'); + } +} diff --git a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.spec.ts b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.spec.ts index ad2ef073d84..c2eb2a0046e 100644 --- a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.spec.ts +++ b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.spec.ts @@ -1,47 +1,39 @@ import { HttpXsrfTokenExtractor } from '@angular/common/http'; -import { - ChangeDetectorRef, - Component, - NO_ERRORS_SCHEMA, -} from '@angular/core'; +import { ChangeDetectorRef } from '@angular/core'; import { ComponentFixture, - inject, TestBed, waitForAsync, } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; +import { RouterModule } from '@angular/router'; import { NgbModal, NgbModule, } from '@ng-bootstrap/ng-bootstrap'; -import { - TranslateLoader, - TranslateModule, -} from '@ngx-translate/core'; -import { ScrollToService } from '@nicky-lenaers/ngx-scroll-to'; +import { NgbModalRef } from '@ng-bootstrap/ng-bootstrap/modal/modal-ref'; +import { TranslateModule } from '@ngx-translate/core'; import { AuthService } from '../../core/auth/auth.service'; -import { EntityTypeDataService } from '../../core/data/entity-type-data.service'; import { DragService } from '../../core/drag.service'; import { CookieService } from '../../core/services/cookie.service'; import { HALEndpointService } from '../../core/shared/hal-endpoint.service'; -import { HostWindowService } from '../../shared/host-window.service'; import { CookieServiceMock } from '../../shared/mocks/cookie.service.mock'; import { HttpXsrfTokenExtractorMock } from '../../shared/mocks/http-xsrf-token-extractor.mock'; -import { getMockScrollToService } from '../../shared/mocks/scroll-to-service.mock'; -import { TranslateLoaderMock } from '../../shared/mocks/translate-loader.mock'; import { NotificationsService } from '../../shared/notifications/notifications.service'; import { AuthServiceStub } from '../../shared/testing/auth-service.stub'; import { HALEndpointServiceStub } from '../../shared/testing/hal-endpoint-service.stub'; -import { HostWindowServiceStub } from '../../shared/testing/host-window-service.stub'; import { NotificationsServiceStub } from '../../shared/testing/notifications-service.stub'; -import { createTestComponent } from '../../shared/testing/utils.test'; +import { ThemedUploaderComponent } from '../../shared/upload/uploader/themed-uploader.component'; import { UploaderComponent } from '../../shared/upload/uploader/uploader.component'; +import { ThemedMyDSpaceNewExternalDropdownComponent } from './my-dspace-new-external-dropdown/themed-my-dspace-new-external-dropdown.component'; import { MyDSpaceNewSubmissionComponent } from './my-dspace-new-submission.component'; -import { getMockEntityTypeService } from './my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.spec'; +import { ThemedMyDSpaceNewSubmissionDropdownComponent } from './my-dspace-new-submission-dropdown/themed-my-dspace-new-submission-dropdown.component'; + +describe('MyDSpaceNewSubmissionComponent', () => { + let fixture: ComponentFixture; + let comp: MyDSpaceNewSubmissionComponent; -describe('MyDSpaceNewSubmissionComponent test', () => { + let modalService: NgbModal; const uploader: any = jasmine.createSpyObj('uploader', { clearQueue: jasmine.createSpy('clearQueue').and.stub(), @@ -52,92 +44,48 @@ describe('MyDSpaceNewSubmissionComponent test', () => { beforeEach(waitForAsync(() => { TestBed.configureTestingModule({ imports: [ - TranslateModule.forRoot({ - loader: { - provide: TranslateLoader, - useClass: TranslateLoaderMock, - }, - }), + TranslateModule.forRoot(), NgbModule, - RouterTestingModule, + RouterModule.forRoot([]), MyDSpaceNewSubmissionComponent, - TestComponent, ], providers: [ { provide: AuthService, useClass: AuthServiceStub }, { provide: HALEndpointService, useValue: new HALEndpointServiceStub('workspaceitems') }, { provide: NotificationsService, useValue: new NotificationsServiceStub() }, - { provide: ScrollToService, useValue: getMockScrollToService() }, NgbModal, ChangeDetectorRef, MyDSpaceNewSubmissionComponent, DragService, { provide: HttpXsrfTokenExtractor, useValue: new HttpXsrfTokenExtractorMock('mock-token') }, { provide: CookieService, useValue: new CookieServiceMock() }, - { provide: HostWindowService, useValue: new HostWindowServiceStub(800) }, - { provide: EntityTypeDataService, useValue: getMockEntityTypeService() }, ], - schemas: [NO_ERRORS_SCHEMA], + }).overrideComponent(MyDSpaceNewSubmissionComponent, { + remove: { + imports: [ + ThemedMyDSpaceNewExternalDropdownComponent, + ThemedMyDSpaceNewSubmissionDropdownComponent, + ThemedUploaderComponent, + ], + }, }).compileComponents(); })); - describe('', () => { - let testComp: TestComponent; - let testFixture: ComponentFixture; - - // synchronous beforeEach - beforeEach(() => { - const html = ` - `; - - testFixture = createTestComponent(html, TestComponent) as ComponentFixture; - testComp = testFixture.componentInstance; - }); - - afterEach(() => { - testFixture.destroy(); - }); - - it('should create MyDSpaceNewSubmissionComponent', inject([MyDSpaceNewSubmissionComponent], (app: MyDSpaceNewSubmissionComponent) => { - - expect(app).toBeDefined(); - - })); + beforeEach(() => { + fixture = TestBed.createComponent(MyDSpaceNewSubmissionComponent); + comp = fixture.componentInstance; + modalService = TestBed.inject(NgbModal); + comp.uploadFilesOptions.authToken = 'user-auth-token'; + comp.uploadFilesOptions.url = 'https://fake.upload-api.url'; + comp.uploaderComponent = TestBed.createComponent(UploaderComponent).componentInstance; + comp.uploaderComponent.uploader = uploader; }); - describe('', () => { - let fixture: ComponentFixture; - let comp: MyDSpaceNewSubmissionComponent; + it('should show a collection selector if only one file are uploaded', () => { + spyOn(modalService, 'open').and.returnValue({ result: new Promise((res, rej) => {/****/}) } as NgbModalRef); - beforeEach(() => { - fixture = TestBed.createComponent(MyDSpaceNewSubmissionComponent); - comp = fixture.componentInstance; - comp.uploadFilesOptions.authToken = 'user-auth-token'; - comp.uploadFilesOptions.url = 'https://fake.upload-api.url'; - comp.uploaderComponent = TestBed.createComponent(UploaderComponent).componentInstance; - comp.uploaderComponent.uploader = uploader; - }); + comp.afterFileLoaded(['']); - it('should show a collection selector if only one file are uploaded', (done) => { - spyOn((comp as any).modalService, 'open').and.returnValue({ result: new Promise((res, rej) => {/****/}) }); - comp.afterFileLoaded(['']); - expect((comp as any).modalService.open).toHaveBeenCalled(); - done(); - }); + expect(modalService.open).toHaveBeenCalled(); }); }); - -// declare a test component -@Component({ - selector: 'ds-test-cmp', - template: ``, - standalone: true, - imports: [NgbModule, - RouterTestingModule], -}) -class TestComponent { - - reload = (event) => { - return; - }; -} diff --git a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts index 7d014b93936..aa9e519cc0e 100644 --- a/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts +++ b/src/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts @@ -20,24 +20,25 @@ import { HALEndpointService } from '../../core/shared/hal-endpoint.service'; import { hasValue } from '../../shared/empty.util'; import { NotificationsService } from '../../shared/notifications/notifications.service'; import { SearchResult } from '../../shared/search/models/search-result.model'; +import { ThemedUploaderComponent } from '../../shared/upload/uploader/themed-uploader.component'; import { UploaderComponent } from '../../shared/upload/uploader/uploader.component'; import { UploaderError } from '../../shared/upload/uploader/uploader-error.model'; import { UploaderOptions } from '../../shared/upload/uploader/uploader-options.model'; import { CollectionSelectorComponent } from '../collection-selector/collection-selector.component'; -import { MyDSpaceNewExternalDropdownComponent } from './my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component'; -import { MyDSpaceNewSubmissionDropdownComponent } from './my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component'; +import { ThemedMyDSpaceNewExternalDropdownComponent } from './my-dspace-new-external-dropdown/themed-my-dspace-new-external-dropdown.component'; +import { ThemedMyDSpaceNewSubmissionDropdownComponent } from './my-dspace-new-submission-dropdown/themed-my-dspace-new-submission-dropdown.component'; /** * This component represents the whole mydspace page header */ @Component({ - selector: 'ds-my-dspace-new-submission', + selector: 'ds-base-my-dspace-new-submission', styleUrls: ['./my-dspace-new-submission.component.scss'], templateUrl: './my-dspace-new-submission.component.html', imports: [ - MyDSpaceNewExternalDropdownComponent, - MyDSpaceNewSubmissionDropdownComponent, - UploaderComponent, + ThemedMyDSpaceNewExternalDropdownComponent, + ThemedMyDSpaceNewSubmissionDropdownComponent, + ThemedUploaderComponent, ], standalone: true, }) diff --git a/src/app/my-dspace-page/my-dspace-new-submission/themed-my-dspace-new-submission.component.ts b/src/app/my-dspace-page/my-dspace-new-submission/themed-my-dspace-new-submission.component.ts new file mode 100644 index 00000000000..223aa035d38 --- /dev/null +++ b/src/app/my-dspace-page/my-dspace-new-submission/themed-my-dspace-new-submission.component.ts @@ -0,0 +1,40 @@ +import { + Component, + EventEmitter, + Output, +} from '@angular/core'; + +import { DSpaceObject } from '../../core/shared/dspace-object.model'; +import { SearchResult } from '../../shared/search/models/search-result.model'; +import { ThemedComponent } from '../../shared/theme-support/themed.component'; +import { MyDSpaceNewSubmissionComponent } from './my-dspace-new-submission.component'; + +/** + * Themed wrapper for {@link MyDSpaceNewSubmissionComponent} + */ +@Component({ + selector: 'ds-my-dspace-new-submission', + templateUrl: './../../shared/theme-support/themed.component.html', + standalone: true, + imports: [MyDSpaceNewSubmissionComponent], +}) +export class ThemedMyDSpaceNewSubmissionComponent extends ThemedComponent { + + @Output() uploadEnd: EventEmitter[]> = new EventEmitter(); + + protected inAndOutputNames: (keyof MyDSpaceNewSubmissionComponent & keyof this)[] = [ + 'uploadEnd', + ]; + + protected getComponentName(): string { + return 'MyDSpaceNewSubmissionComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../themes/${themeName}/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./my-dspace-new-submission.component'); + } +} diff --git a/src/app/my-dspace-page/my-dspace-page.component.ts b/src/app/my-dspace-page/my-dspace-page.component.ts index 315b5562d2d..4c944b2e41d 100644 --- a/src/app/my-dspace-page/my-dspace-page.component.ts +++ b/src/app/my-dspace-page/my-dspace-page.component.ts @@ -22,7 +22,7 @@ import { MyDSpaceConfigurationService, SEARCH_CONFIG_SERVICE, } from './my-dspace-configuration.service'; -import { MyDSpaceNewSubmissionComponent } from './my-dspace-new-submission/my-dspace-new-submission.component'; +import { ThemedMyDSpaceNewSubmissionComponent } from './my-dspace-new-submission/themed-my-dspace-new-submission.component'; import { MyDspaceQaEventsNotificationsComponent } from './my-dspace-qa-events-notifications/my-dspace-qa-events-notifications.component'; export const MYDSPACE_ROUTE = '/mydspace'; @@ -42,12 +42,12 @@ export const MYDSPACE_ROUTE = '/mydspace'; }, ], imports: [ - ThemedSearchComponent, - MyDSpaceNewSubmissionComponent, AsyncPipe, + MyDspaceQaEventsNotificationsComponent, RoleDirective, SuggestionsNotificationComponent, - MyDspaceQaEventsNotificationsComponent, + ThemedMyDSpaceNewSubmissionComponent, + ThemedSearchComponent, ], standalone: true, }) diff --git a/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.spec.ts b/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.spec.ts index 2035c313fe6..7d72911c81c 100644 --- a/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.spec.ts +++ b/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.spec.ts @@ -31,7 +31,7 @@ import { AuthServiceMock } from '../../../mocks/auth.service.mock'; import { NotificationsService } from '../../../notifications/notifications.service'; import { createSuccessfulRemoteDataObject$ } from '../../../remote-data.utils'; import { NotificationsServiceStub } from '../../../testing/notifications-service.stub'; -import { UploaderComponent } from '../../../upload/uploader/uploader.component'; +import { ThemedUploaderComponent } from '../../../upload/uploader/themed-uploader.component'; import { VarDirective } from '../../../utils/var.directive'; import { ComcolPageLogoComponent } from '../../comcol-page-logo/comcol-page-logo.component'; import { ComColFormComponent } from './comcol-form.component'; @@ -110,7 +110,7 @@ describe('ComColFormComponent', () => { remove: { imports: [ FormComponent, - UploaderComponent, + ThemedUploaderComponent, ComcolPageLogoComponent, ], }, diff --git a/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.ts b/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.ts index 23b58cad341..7ba69091ed0 100644 --- a/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.ts +++ b/src/app/shared/comcol/comcol-forms/comcol-form/comcol-form.component.ts @@ -61,7 +61,7 @@ import { } from '../../../empty.util'; import { FormComponent } from '../../../form/form.component'; import { NotificationsService } from '../../../notifications/notifications.service'; -import { UploaderComponent } from '../../../upload/uploader/uploader.component'; +import { ThemedUploaderComponent } from '../../../upload/uploader/themed-uploader.component'; import { UploaderOptions } from '../../../upload/uploader/uploader-options.model'; import { followLink } from '../../../utils/follow-link-config.model'; import { VarDirective } from '../../../utils/var.directive'; @@ -77,7 +77,7 @@ import { ComcolPageLogoComponent } from '../../comcol-page-logo/comcol-page-logo imports: [ FormComponent, TranslateModule, - UploaderComponent, + ThemedUploaderComponent, AsyncPipe, ComcolPageLogoComponent, NgClass, @@ -90,7 +90,7 @@ export class ComColFormComponent implements On /** * The logo uploader component */ - @ViewChild(UploaderComponent) uploaderComponent: UploaderComponent; + @ViewChild(ThemedUploaderComponent) uploaderComponent: ThemedUploaderComponent; /** * DSpaceObject that the form represents @@ -272,7 +272,7 @@ export class ComColFormComponent implements On if (this.isCreation) { this.submitForm.emit({ dso: updatedDSO, - uploader: hasValue(this.uploaderComponent) ? this.uploaderComponent.uploader : undefined, + uploader: hasValue(this.uploaderComponent) ? this.uploaderComponent.compRef$.value.instance.uploader : undefined, operations: operations, }); } else { diff --git a/src/app/shared/mydspace-actions/workspaceitem/themed-workspaceitem-actions.component.ts b/src/app/shared/mydspace-actions/workspaceitem/themed-workspaceitem-actions.component.ts new file mode 100644 index 00000000000..b8146ddb57c --- /dev/null +++ b/src/app/shared/mydspace-actions/workspaceitem/themed-workspaceitem-actions.component.ts @@ -0,0 +1,44 @@ +import { + Component, + EventEmitter, + Input, + Output, +} from '@angular/core'; + +import { WorkspaceItem } from '../../../core/submission/models/workspaceitem.model'; +import { ThemedComponent } from '../../theme-support/themed.component'; +import { MyDSpaceActionsResult } from '../mydspace-actions'; +import { WorkspaceitemActionsComponent } from './workspaceitem-actions.component'; + +/** + * Themed wrapper for {@link WorkspaceitemActionsComponent} + */ +@Component({ + selector: 'ds-workspaceitem-actions', + templateUrl: './../../../shared/theme-support/themed.component.html', + standalone: true, + imports: [WorkspaceitemActionsComponent], +}) +export class ThemedWorkspaceitemActionsComponent extends ThemedComponent { + + @Input() object: WorkspaceItem; + + @Output() processCompleted: EventEmitter = new EventEmitter(); + + protected inAndOutputNames: (keyof WorkspaceitemActionsComponent & keyof this)[] = [ + 'object', + 'processCompleted', + ]; + + protected getComponentName(): string { + return 'WorkspaceitemActionsComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../themes/${themeName}/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./workspaceitem-actions.component'); + } +} diff --git a/src/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.ts b/src/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.ts index 68f66b4986a..5c36a737789 100644 --- a/src/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.ts +++ b/src/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.ts @@ -45,7 +45,7 @@ import { MyDSpaceActionsComponent } from '../mydspace-actions'; * This component represents actions related to WorkspaceItem object. */ @Component({ - selector: 'ds-workspaceitem-actions', + selector: 'ds-base-workspaceitem-actions', styleUrls: ['./workspaceitem-actions.component.scss'], templateUrl: './workspaceitem-actions.component.html', standalone: true, diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts index 40e83ed7744..ad057a7008f 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.spec.ts @@ -17,7 +17,7 @@ import { Item } from '../../../../core/shared/item.model'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; import { getMockLinkService } from '../../../mocks/link-service.mock'; -import { WorkspaceitemActionsComponent } from '../../../mydspace-actions/workspaceitem/workspaceitem-actions.component'; +import { ThemedWorkspaceitemActionsComponent } from '../../../mydspace-actions/workspaceitem/themed-workspaceitem-actions.component'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; import { ItemDetailPreviewComponent } from '../item-detail-preview/item-detail-preview.component'; @@ -80,7 +80,7 @@ describe('WorkspaceItemSearchResultDetailElementComponent', () => { remove: { imports: [ ItemDetailPreviewComponent, - WorkspaceitemActionsComponent, + ThemedWorkspaceitemActionsComponent, ], }, }).compileComponents(); diff --git a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts index b88cef64b54..ea4f7ee5e8a 100644 --- a/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts +++ b/src/app/shared/object-detail/my-dspace-result-detail-element/workspace-item-search-result/workspace-item-search-result-detail-element.component.ts @@ -13,7 +13,7 @@ import { Item } from '../../../../core/shared/item.model'; import { ViewMode } from '../../../../core/shared/view-mode.model'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; import { isNotUndefined } from '../../../empty.util'; -import { WorkspaceitemActionsComponent } from '../../../mydspace-actions/workspaceitem/workspaceitem-actions.component'; +import { ThemedWorkspaceitemActionsComponent } from '../../../mydspace-actions/workspaceitem/themed-workspaceitem-actions.component'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; import { WorkspaceItemSearchResult } from '../../../object-collection/shared/workspace-item-search-result.model'; import { followLink } from '../../../utils/follow-link-config.model'; @@ -28,7 +28,7 @@ import { SearchResultDetailElementComponent } from '../search-result-detail-elem styleUrls: ['../search-result-detail-element.component.scss', './workspace-item-search-result-detail-element.component.scss'], templateUrl: './workspace-item-search-result-detail-element.component.html', standalone: true, - imports: [ItemDetailPreviewComponent, WorkspaceitemActionsComponent], + imports: [ItemDetailPreviewComponent, ThemedWorkspaceitemActionsComponent], }) @listableObjectComponent(WorkspaceItemSearchResult, ViewMode.DetailedListElement) diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts index 5b87fe24a78..82388e9329f 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.spec.ts @@ -26,7 +26,7 @@ import { DSONameServiceMock } from '../../../mocks/dso-name.service.mock'; import { getMockLinkService } from '../../../mocks/link-service.mock'; import { mockTruncatableService } from '../../../mocks/mock-trucatable.service'; import { getMockThemeService } from '../../../mocks/theme-service.mock'; -import { WorkspaceitemActionsComponent } from '../../../mydspace-actions/workspaceitem/workspaceitem-actions.component'; +import { ThemedWorkspaceitemActionsComponent } from '../../../mydspace-actions/workspaceitem/themed-workspaceitem-actions.component'; import { ListableObjectComponentLoaderComponent } from '../../../object-collection/shared/listable-object/listable-object-component-loader.component'; import { WorkflowItemSearchResult } from '../../../object-collection/shared/workflow-item-search-result.model'; import { createSuccessfulRemoteDataObject } from '../../../remote-data.utils'; @@ -98,7 +98,11 @@ describe('WorkspaceItemSearchResultListElementComponent', () => { }).overrideComponent(WorkspaceItemSearchResultListElementComponent, { add: { changeDetection: ChangeDetectionStrategy.Default }, remove: { - imports: [ListableObjectComponentLoaderComponent, WorkspaceitemActionsComponent, ThemedLoadingComponent], + imports: [ + ListableObjectComponentLoaderComponent, + ThemedLoadingComponent, + ThemedWorkspaceitemActionsComponent, + ], }, }).compileComponents(); })); diff --git a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts index 2a71308c4b7..a52e72fab8b 100644 --- a/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts +++ b/src/app/shared/object-list/my-dspace-result-list-element/workspace-item-search-result/workspace-item-search-result-list-element.component.ts @@ -21,7 +21,7 @@ import { getFirstSucceededRemoteDataPayload } from '../../../../core/shared/oper import { ViewMode } from '../../../../core/shared/view-mode.model'; import { WorkspaceItem } from '../../../../core/submission/models/workspaceitem.model'; import { ThemedLoadingComponent } from '../../../loading/themed-loading.component'; -import { WorkspaceitemActionsComponent } from '../../../mydspace-actions/workspaceitem/workspaceitem-actions.component'; +import { ThemedWorkspaceitemActionsComponent } from '../../../mydspace-actions/workspaceitem/themed-workspaceitem-actions.component'; import { CollectionElementLinkType } from '../../../object-collection/collection-element-link.type'; import { ItemSearchResult } from '../../../object-collection/shared/item-search-result.model'; import { listableObjectComponent } from '../../../object-collection/shared/listable-object/listable-object.decorator'; @@ -39,7 +39,7 @@ import { SearchResultListElementComponent } from '../../search-result-list-eleme styleUrls: ['../../search-result-list-element/search-result-list-element.component.scss', './workspace-item-search-result-list-element.component.scss'], templateUrl: './workspace-item-search-result-list-element.component.html', standalone: true, - imports: [ListableObjectComponentLoaderComponent, NgClass, WorkspaceitemActionsComponent, ThemedLoadingComponent, AsyncPipe], + imports: [ListableObjectComponentLoaderComponent, NgClass, ThemedLoadingComponent, AsyncPipe, ThemedWorkspaceitemActionsComponent], }) @listableObjectComponent(WorkspaceItemSearchResult, ViewMode.ListElement) diff --git a/src/app/shared/upload/uploader/themed-uploader.component.ts b/src/app/shared/upload/uploader/themed-uploader.component.ts new file mode 100644 index 00000000000..21f646157c3 --- /dev/null +++ b/src/app/shared/upload/uploader/themed-uploader.component.ts @@ -0,0 +1,59 @@ +import { + Component, + EventEmitter, + Input, + Output, +} from '@angular/core'; + +import { ThemedComponent } from '../../theme-support/themed.component'; +import { UploaderComponent } from './uploader.component'; +import { UploaderOptions } from './uploader-options.model'; +import { UploaderProperties } from './uploader-properties.model'; + +/** + * Themed wrapper for {@link UploaderComponent} + */ +@Component({ + selector: 'ds-uploader', + templateUrl: './../../../shared/theme-support/themed.component.html', + standalone: true, + imports: [UploaderComponent], +}) +export class ThemedUploaderComponent extends ThemedComponent { + + @Input() dropMsg: string; + @Input() dropOverDocumentMsg: string; + @Input() enableDragOverDocument: boolean; + @Input() onBeforeUpload: () => void; + @Input() uploadFilesOptions: UploaderOptions; + @Input() uploadProperties: UploaderProperties; + @Input() ariaLabel: string; + @Output() onCompleteItem = new EventEmitter(); + @Output() onUploadError = new EventEmitter(); + @Output() onFileSelected = new EventEmitter(); + + protected inAndOutputNames: (keyof UploaderComponent & keyof this)[] = [ + 'dropMsg', + 'dropOverDocumentMsg', + 'enableDragOverDocument', + 'onBeforeUpload', + 'uploadFilesOptions', + 'uploadProperties', + 'ariaLabel', + 'onCompleteItem', + 'onUploadError', + 'onFileSelected', + ]; + + protected getComponentName(): string { + return 'UploaderComponent'; + } + + protected importThemedComponent(themeName: string): Promise { + return import(`../../../../themes/${themeName}/app/shared/upload/uploader/uploader.component`); + } + + protected importUnthemedComponent(): Promise { + return import('./uploader.component'); + } +} diff --git a/src/app/shared/upload/uploader/uploader.component.spec.ts b/src/app/shared/upload/uploader/uploader.component.spec.ts index 90563f10802..bd1a3549c76 100644 --- a/src/app/shared/upload/uploader/uploader.component.spec.ts +++ b/src/app/shared/upload/uploader/uploader.component.spec.ts @@ -53,9 +53,9 @@ describe('Chips component', () => { // synchronous beforeEach beforeEach(() => { html = ` - `; + `; testFixture = createTestComponent(html, TestComponent) as ComponentFixture; testComp = testFixture.componentInstance; diff --git a/src/app/shared/upload/uploader/uploader.component.ts b/src/app/shared/upload/uploader/uploader.component.ts index fbafe811ebc..d60aa46eb83 100644 --- a/src/app/shared/upload/uploader/uploader.component.ts +++ b/src/app/shared/upload/uploader/uploader.component.ts @@ -37,7 +37,7 @@ import { UploaderOptions } from './uploader-options.model'; import { UploaderProperties } from './uploader-properties.model'; @Component({ - selector: 'ds-uploader', + selector: 'ds-base-uploader', templateUrl: 'uploader.component.html', styleUrls: ['uploader.component.scss'], changeDetection: ChangeDetectionStrategy.Default, diff --git a/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts b/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts index 13d7bf8fb86..81de2ad675f 100644 --- a/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts +++ b/src/app/submission/form/submission-upload-files/submission-upload-files.component.ts @@ -1,4 +1,3 @@ - import { Component, Input, @@ -25,7 +24,7 @@ import { isNotEmpty, } from '../../../shared/empty.util'; import { NotificationsService } from '../../../shared/notifications/notifications.service'; -import { UploaderComponent } from '../../../shared/upload/uploader/uploader.component'; +import { ThemedUploaderComponent } from '../../../shared/upload/uploader/themed-uploader.component'; import { UploaderOptions } from '../../../shared/upload/uploader/uploader-options.model'; import { SectionsService } from '../../sections/sections.service'; import { SectionsType } from '../../sections/sections-type'; @@ -39,7 +38,7 @@ import parseSectionErrors from '../../utils/parseSectionErrors'; selector: 'ds-base-submission-upload-files', templateUrl: './submission-upload-files.component.html', imports: [ - UploaderComponent, + ThemedUploaderComponent, ], standalone: true, }) diff --git a/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.html b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.scss b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts new file mode 100644 index 00000000000..b791bb9ba12 --- /dev/null +++ b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.ts @@ -0,0 +1,28 @@ +import { AsyncPipe } from '@angular/common'; +import { Component } from '@angular/core'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { TranslateModule } from '@ngx-translate/core'; + +import { MyDSpaceNewExternalDropdownComponent as BaseComponent } from '../../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component'; +import { BtnDisabledDirective } from '../../../../../../app/shared/btn-disabled.directive'; +import { EntityDropdownComponent } from '../../../../../../app/shared/entity-dropdown/entity-dropdown.component'; +import { BrowserOnlyPipe } from '../../../../../../app/shared/utils/browser-only.pipe'; + +@Component({ + selector: 'ds-themed-my-dspace-new-external-dropdown', + // styleUrls: ['./my-dspace-new-external-dropdown.component.scss'], + styleUrls: ['../../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.scss'], + // templateUrl: './my-dspace-new-external-dropdown.component.html' + templateUrl: '../../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component.html', + standalone: true, + imports: [ + EntityDropdownComponent, + NgbDropdownModule, + AsyncPipe, + TranslateModule, + BrowserOnlyPipe, + BtnDisabledDirective, + ], +}) +export class MyDSpaceNewExternalDropdownComponent extends BaseComponent { +} diff --git a/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.html b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.scss b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts new file mode 100644 index 00000000000..2853d8c678c --- /dev/null +++ b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.ts @@ -0,0 +1,28 @@ +import { AsyncPipe } from '@angular/common'; +import { Component } from '@angular/core'; +import { NgbDropdownModule } from '@ng-bootstrap/ng-bootstrap'; +import { TranslateModule } from '@ngx-translate/core'; + +import { MyDSpaceNewSubmissionDropdownComponent as BaseComponent } from '../../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component'; +import { BtnDisabledDirective } from '../../../../../../app/shared/btn-disabled.directive'; +import { EntityDropdownComponent } from '../../../../../../app/shared/entity-dropdown/entity-dropdown.component'; +import { BrowserOnlyPipe } from '../../../../../../app/shared/utils/browser-only.pipe'; + +@Component({ + selector: 'ds-themed-my-dspace-new-submission-dropdown', + // styleUrls: ['./my-dspace-new-submission-dropdown.component.scss'], + styleUrls: ['../../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.scss'], + // templateUrl: './my-dspace-new-submission-dropdown.component.html' + templateUrl: '../../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component.html', + standalone: true, + imports: [ + EntityDropdownComponent, + NgbDropdownModule, + AsyncPipe, + TranslateModule, + BrowserOnlyPipe, + BtnDisabledDirective, + ], +}) +export class MyDSpaceNewSubmissionDropdownComponent extends BaseComponent { +} diff --git a/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.html b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.scss b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts new file mode 100644 index 00000000000..715d5cedb22 --- /dev/null +++ b/src/themes/custom/app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.ts @@ -0,0 +1,22 @@ +import { Component } from '@angular/core'; + +import { ThemedMyDSpaceNewExternalDropdownComponent } from '../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/themed-my-dspace-new-external-dropdown.component'; +import { MyDSpaceNewSubmissionComponent as BaseComponent } from '../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component'; +import { ThemedMyDSpaceNewSubmissionDropdownComponent } from '../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/themed-my-dspace-new-submission-dropdown.component'; +import { ThemedUploaderComponent } from '../../../../../app/shared/upload/uploader/themed-uploader.component'; + +@Component({ + selector: 'ds-themed-my-dspace-new-submission', + // styleUrls: ['./my-dspace-new-submission.component.scss'], + styleUrls: ['../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.scss'], + // templateUrl: './my-dspace-new-submission.component.html', + templateUrl: '../../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component.html', + standalone: true, + imports: [ + ThemedMyDSpaceNewExternalDropdownComponent, + ThemedMyDSpaceNewSubmissionDropdownComponent, + ThemedUploaderComponent, + ], +}) +export class MyDSpaceNewSubmissionComponent extends BaseComponent { +} diff --git a/src/themes/custom/app/my-dspace-page/my-dspace-page.component.ts b/src/themes/custom/app/my-dspace-page/my-dspace-page.component.ts index 8e177886b5c..9747b1ae1c0 100644 --- a/src/themes/custom/app/my-dspace-page/my-dspace-page.component.ts +++ b/src/themes/custom/app/my-dspace-page/my-dspace-page.component.ts @@ -8,7 +8,7 @@ import { MyDSpaceConfigurationService, SEARCH_CONFIG_SERVICE, } from '../../../../app/my-dspace-page/my-dspace-configuration.service'; -import { MyDSpaceNewSubmissionComponent } from '../../../../app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component'; +import { ThemedMyDSpaceNewSubmissionComponent } from '../../../../app/my-dspace-page/my-dspace-new-submission/themed-my-dspace-new-submission.component'; import { MyDSpacePageComponent as BaseComponent } from '../../../../app/my-dspace-page/my-dspace-page.component'; import { MyDspaceQaEventsNotificationsComponent } from '../../../../app/my-dspace-page/my-dspace-qa-events-notifications/my-dspace-qa-events-notifications.component'; import { SuggestionsNotificationComponent } from '../../../../app/notifications/suggestions/notification/suggestions-notification.component'; @@ -35,12 +35,12 @@ import { ThemedSearchComponent } from '../../../../app/shared/search/themed-sear ], standalone: true, imports: [ - ThemedSearchComponent, - MyDSpaceNewSubmissionComponent, AsyncPipe, + MyDspaceQaEventsNotificationsComponent, RoleDirective, SuggestionsNotificationComponent, - MyDspaceQaEventsNotificationsComponent, + ThemedMyDSpaceNewSubmissionComponent, + ThemedSearchComponent, ], }) export class MyDSpacePageComponent extends BaseComponent { diff --git a/src/themes/custom/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.html b/src/themes/custom/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/custom/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.scss b/src/themes/custom/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/custom/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.ts b/src/themes/custom/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.ts new file mode 100644 index 00000000000..0941a5ffc42 --- /dev/null +++ b/src/themes/custom/app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.ts @@ -0,0 +1,19 @@ +import { AsyncPipe } from '@angular/common'; +import { Component } from '@angular/core'; +import { RouterLink } from '@angular/router'; +import { NgbTooltipModule } from '@ng-bootstrap/ng-bootstrap'; +import { TranslateModule } from '@ngx-translate/core'; + +import { WorkspaceitemActionsComponent as BaseComponent } from '../../../../../../app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component'; + +@Component({ + selector: 'ds-themed-workspaceitem-actions', + // styleUrls: ['./workspaceitem-actions.component.scss'], + styleUrls: ['../../../../../../app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.scss'], + // templateUrl: './workspaceitem-actions.component.html', + templateUrl: '../../../../../../app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component.html', + standalone: true, + imports: [NgbTooltipModule, RouterLink, AsyncPipe, TranslateModule], +}) +export class WorkspaceitemActionsComponent extends BaseComponent { +} diff --git a/src/themes/custom/app/shared/upload/uploader/uploader.component.html b/src/themes/custom/app/shared/upload/uploader/uploader.component.html new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/custom/app/shared/upload/uploader/uploader.component.scss b/src/themes/custom/app/shared/upload/uploader/uploader.component.scss new file mode 100644 index 00000000000..e69de29bb2d diff --git a/src/themes/custom/app/shared/upload/uploader/uploader.component.ts b/src/themes/custom/app/shared/upload/uploader/uploader.component.ts new file mode 100644 index 00000000000..12a10af1d39 --- /dev/null +++ b/src/themes/custom/app/shared/upload/uploader/uploader.component.ts @@ -0,0 +1,19 @@ +import { CommonModule } from '@angular/common'; +import { Component } from '@angular/core'; +import { TranslateModule } from '@ngx-translate/core'; +import { FileUploadModule } from 'ng2-file-upload'; + +import { BtnDisabledDirective } from '../../../../../../app/shared/btn-disabled.directive'; +import { UploaderComponent as BaseComponent } from '../../../../../../app/shared/upload/uploader/uploader.component'; + +@Component({ + selector: 'ds-themed-uploader', + // templateUrl: 'uploader.component.html', + templateUrl: '../../../../../../app/shared/upload/uploader/uploader.component.html', + // styleUrls: ['./uploader.component.scss'], + styleUrls: ['../../../../../../app/shared/upload/uploader/uploader.component.scss'], + standalone: true, + imports: [TranslateModule, FileUploadModule, CommonModule, BtnDisabledDirective], +}) +export class UploaderComponent extends BaseComponent { +} diff --git a/src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.ts b/src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.ts index a8fe3f19db4..d94c7f26b54 100644 --- a/src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.ts +++ b/src/themes/custom/app/submission/form/submission-upload-files/submission-upload-files.component.ts @@ -1,6 +1,6 @@ import { Component } from '@angular/core'; -import { UploaderComponent } from '../../../../../../app/shared/upload/uploader/uploader.component'; +import { ThemedUploaderComponent } from '../../../../../../app/shared/upload/uploader/themed-uploader.component'; import { SubmissionUploadFilesComponent as BaseComponent } from '../../../../../../app/submission/form/submission-upload-files/submission-upload-files.component'; @Component({ @@ -8,7 +8,7 @@ import { SubmissionUploadFilesComponent as BaseComponent } from '../../../../../ // templateUrl: './submission-upload-files.component.html', templateUrl: '../../../../../../app/submission/form/submission-upload-files/submission-upload-files.component.html', imports: [ - UploaderComponent, + ThemedUploaderComponent, ], standalone: true, }) diff --git a/src/themes/custom/lazy-theme.module.ts b/src/themes/custom/lazy-theme.module.ts index cd677847ce3..ec75c2befbb 100644 --- a/src/themes/custom/lazy-theme.module.ts +++ b/src/themes/custom/lazy-theme.module.ts @@ -13,6 +13,7 @@ import { StoreRouterConnectingModule } from '@ngrx/router-store'; import { StoreModule } from '@ngrx/store'; import { TranslateModule } from '@ngx-translate/core'; import { ScrollToModule } from '@nicky-lenaers/ngx-scroll-to'; +import { FileUploadModule } from 'ng2-file-upload'; import { RootModule } from '../../app/root.module'; import { SearchResultsSkeletonComponent } from '../../app/shared/search/search-results/search-results-skeleton/search-results-skeleton.component'; @@ -56,6 +57,9 @@ import { MetadataRepresentationListComponent } from './app/item-page/simple/meta import { LoginPageComponent } from './app/login-page/login-page.component'; import { LogoutPageComponent } from './app/logout-page/logout-page.component'; import { ObjectNotFoundComponent } from './app/lookup-by-id/objectnotfound/objectnotfound.component'; +import { MyDSpaceNewExternalDropdownComponent } from './app/my-dspace-page/my-dspace-new-submission/my-dspace-new-external-dropdown/my-dspace-new-external-dropdown.component'; +import { MyDSpaceNewSubmissionComponent } from './app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission.component'; +import { MyDSpaceNewSubmissionDropdownComponent } from './app/my-dspace-page/my-dspace-new-submission/my-dspace-new-submission-dropdown/my-dspace-new-submission-dropdown.component'; import { MyDSpacePageComponent } from './app/my-dspace-page/my-dspace-page.component'; import { ExpandableNavbarSectionComponent } from './app/navbar/expandable-navbar-section/expandable-navbar-section.component'; import { PageNotFoundComponent } from './app/pagenotfound/pagenotfound.component'; @@ -80,6 +84,7 @@ import { DsDynamicLookupRelationExternalSourceTabComponent } from './app/shared/ import { ExternalSourceEntryImportModalComponent } from './app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/external-source-tab/external-source-entry-import-modal/external-source-entry-import-modal.component'; import { DsDynamicLookupRelationSearchTabComponent } from './app/shared/form/builder/ds-dynamic-form-ui/relation-lookup-modal/search-tab/dynamic-lookup-relation-search-tab.component'; import { LoadingComponent } from './app/shared/loading/loading.component'; +import { WorkspaceitemActionsComponent } from './app/shared/mydspace-actions/workspaceitem/workspaceitem-actions.component'; import { AccessStatusBadgeComponent } from './app/shared/object-collection/shared/badges/access-status-badge/access-status-badge.component'; import { BadgesComponent } from './app/shared/object-collection/shared/badges/badges.component'; import { MyDSpaceStatusBadgeComponent } from './app/shared/object-collection/shared/badges/my-dspace-status-badge/my-dspace-status-badge.component'; @@ -95,6 +100,7 @@ import { SearchResultsComponent } from './app/shared/search/search-results/searc import { SearchSettingsComponent } from './app/shared/search/search-settings/search-settings.component'; import { SearchSidebarComponent } from './app/shared/search/search-sidebar/search-sidebar.component'; import { SearchFormComponent } from './app/shared/search-form/search-form.component'; +import { UploaderComponent } from './app/shared/upload/uploader/uploader.component'; import { CollectionStatisticsPageComponent } from './app/statistics-page/collection-statistics-page/collection-statistics-page.component'; import { CommunityStatisticsPageComponent } from './app/statistics-page/community-statistics-page/community-statistics-page.component'; import { ItemStatisticsPageComponent } from './app/statistics-page/item-statistics-page/item-statistics-page.component'; @@ -204,6 +210,11 @@ const DECLARATIONS = [ AdminSearchPageComponent, AdminWorkflowPageComponent, SearchResultsSkeletonComponent, + MyDSpaceNewSubmissionComponent, + MyDSpaceNewExternalDropdownComponent, + MyDSpaceNewSubmissionDropdownComponent, + UploaderComponent, + WorkspaceitemActionsComponent, ]; @NgModule({ @@ -219,7 +230,9 @@ const DECLARATIONS = [ TranslateModule, FormsModule, NgxGalleryModule, - ...DECLARATIONS], + FileUploadModule, + ...DECLARATIONS, + ], providers: [ provideHttpClient(withInterceptorsFromDi()), ],