diff --git a/angular.json b/angular.json index 2aaf5291..31622090 100644 --- a/angular.json +++ b/angular.json @@ -1937,6 +1937,37 @@ } } } + }, + "pmp-web-shared-ui-generic-dialog": { + "projectType": "library", + "root": "libs/pmp-web/shared/ui-generic-dialog", + "sourceRoot": "libs/pmp-web/shared/ui-generic-dialog/src", + "prefix": "pimp-my-pr", + "architect": { + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "libs/pmp-web/shared/ui-generic-dialog/tsconfig.lib.json", + "libs/pmp-web/shared/ui-generic-dialog/tsconfig.spec.json" + ], + "exclude": ["**/node_modules/**", "!libs/pmp-web/shared/ui-generic-dialog/**"] + } + }, + "test": { + "builder": "@nrwl/jest:jest", + "options": { + "jestConfig": "libs/pmp-web/shared/ui-generic-dialog/jest.config.js", + "tsConfig": "libs/pmp-web/shared/ui-generic-dialog/tsconfig.spec.json", + "setupFile": "libs/pmp-web/shared/ui-generic-dialog/src/test-setup.ts" + } + } + }, + "schematics": { + "@nrwl/angular:component": { + "styleext": "scss" + } + } } }, "cli": { diff --git a/libs/pmp-web/repository/data-access/src/lib/+state/repository.actions.ts b/libs/pmp-web/repository/data-access/src/lib/+state/repository.actions.ts index 8e41b954..6ffb0bcb 100644 --- a/libs/pmp-web/repository/data-access/src/lib/+state/repository.actions.ts +++ b/libs/pmp-web/repository/data-access/src/lib/+state/repository.actions.ts @@ -1,6 +1,10 @@ import { HttpErrorResponse } from '@angular/common/http'; import { Action } from '@ngrx/store'; -import { AddRepositoryPayload, Repository } from '@pimp-my-pr/pmp-web/repository/domain'; +import { + AddRepositoryPayload, + DeleteRepositoryPayload, + Repository +} from '@pimp-my-pr/pmp-web/repository/domain'; export namespace fromRepositoryActions { export enum Types { @@ -9,7 +13,10 @@ export namespace fromRepositoryActions { GetRepositoryCollectionSuccess = '[Repository] Get Repository Collection Success', AddRepository = '[Repository] Add Repository', AddRepositoryFail = '[Repository] Add Repository Fail', - AddRepositorySuccess = '[Repository] Add Repository Success' + AddRepositorySuccess = '[Repository] Add Repository Success', + DeleteRepository = '[Repository] Delete Repository', + DeleteRepositoryFail = '[Repository] Delete Repository Fail', + DeleteRepositorySuccess = '[Repository] Delete Repository Success' } export class GetRepositoryCollection implements Action { @@ -44,11 +51,30 @@ export namespace fromRepositoryActions { readonly type = Types.AddRepositorySuccess; } + export class DeleteRepository implements Action { + readonly type = Types.DeleteRepository; + + constructor(public payload: DeleteRepositoryPayload) {} + } + + export class DeleteRepositoryFail implements Action { + readonly type = Types.DeleteRepositoryFail; + + constructor(public payload: HttpErrorResponse) {} + } + + export class DeleteRepositorySuccess implements Action { + readonly type = Types.DeleteRepositorySuccess; + } + export type CollectiveType = | GetRepositoryCollection | GetRepositoryCollectionFail | GetRepositoryCollectionSuccess | AddRepository | AddRepositoryFail - | AddRepositorySuccess; + | AddRepositorySuccess + | DeleteRepository + | DeleteRepositoryFail + | DeleteRepositorySuccess; } diff --git a/libs/pmp-web/repository/data-access/src/lib/+state/repository.effects.ts b/libs/pmp-web/repository/data-access/src/lib/+state/repository.effects.ts index 095c5637..b60d95aa 100644 --- a/libs/pmp-web/repository/data-access/src/lib/+state/repository.effects.ts +++ b/libs/pmp-web/repository/data-access/src/lib/+state/repository.effects.ts @@ -36,6 +36,22 @@ export class RepositoryEffects { ofType(fromRepositoryActions.Types.AddRepositorySuccess), map(() => new fromRepositoryActions.GetRepositoryCollection()) ); + @Effect() + deleteRepository$ = this.dp.fetch(fromRepositoryActions.Types.DeleteRepository, { + run: (action: fromRepositoryActions.DeleteRepository) => { + return this.repositoryDataService + .deleteRepository(action.payload) + .pipe(map(() => new fromRepositoryActions.DeleteRepositorySuccess())); + }, + onError: (action: fromRepositoryActions.DeleteRepository, error: HttpErrorResponse) => { + return new fromRepositoryActions.DeleteRepositoryFail(error); + } + }); + @Effect() + deleteRepositorySuccess$ = this.actions$.pipe( + ofType(fromRepositoryActions.Types.DeleteRepositorySuccess), + map(() => new fromRepositoryActions.GetRepositoryCollection()) + ); constructor( private dp: DataPersistence, diff --git a/libs/pmp-web/repository/data-access/src/lib/+state/repository.facade.ts b/libs/pmp-web/repository/data-access/src/lib/+state/repository.facade.ts index de3ce0db..6c59233d 100644 --- a/libs/pmp-web/repository/data-access/src/lib/+state/repository.facade.ts +++ b/libs/pmp-web/repository/data-access/src/lib/+state/repository.facade.ts @@ -1,6 +1,9 @@ import { Injectable } from '@angular/core'; import { select, Store } from '@ngrx/store'; -import { AddRepositoryPayload } from '@pimp-my-pr/pmp-web/repository/domain'; +import { + AddRepositoryPayload, + DeleteRepositoryPayload +} from '@pimp-my-pr/pmp-web/repository/domain'; import { fromRepositoryActions } from './repository.actions'; import { RepositoryPartialState } from './repository.reducer'; import { repositoryQuery } from './repository.selectors'; @@ -29,4 +32,12 @@ export class RepositoryFacade { fromRepositoryActions.Types.AddRepositoryFail ); } + + deleteRepository(data: DeleteRepositoryPayload): Observable { + return this.actionStatusResolverService.resolve( + new fromRepositoryActions.DeleteRepository(data), + fromRepositoryActions.Types.DeleteRepositorySuccess, + fromRepositoryActions.Types.DeleteRepositoryFail + ); + } } diff --git a/libs/pmp-web/repository/data-access/src/lib/services/repository-data.service.ts b/libs/pmp-web/repository/data-access/src/lib/services/repository-data.service.ts index dd4f1ca8..efff069b 100644 --- a/libs/pmp-web/repository/data-access/src/lib/services/repository-data.service.ts +++ b/libs/pmp-web/repository/data-access/src/lib/services/repository-data.service.ts @@ -1,5 +1,9 @@ import { HttpClient } from '@angular/common/http'; -import { AddRepositoryPayload, Repository } from '@pimp-my-pr/pmp-web/repository/domain'; +import { + AddRepositoryPayload, + DeleteRepositoryPayload, + Repository +} from '@pimp-my-pr/pmp-web/repository/domain'; import { IResponse } from '@pimp-my-pr/shared/domain'; import { urlFactory } from '@valueadd/typed-urls'; import { Observable } from 'rxjs'; @@ -8,7 +12,8 @@ import { map } from 'rxjs/operators'; export class RepositoryDataService { readonly endpoints = { getRepositoryCollection: urlFactory('/api/repository'), - addRepository: urlFactory('/api/repository') + addRepository: urlFactory('/api/repository'), + deleteRepository: urlFactory<'id'>('/api/repository/:id', true) }; constructor(private http: HttpClient) {} @@ -22,4 +27,8 @@ export class RepositoryDataService { addRepository(data: AddRepositoryPayload): Observable { return this.http.post(this.endpoints.addRepository.url(), data); } + + deleteRepository(data: DeleteRepositoryPayload): Observable { + return this.http.delete(this.endpoints.deleteRepository.url({ id: data.repositoryId })); + } } diff --git a/libs/pmp-web/repository/domain/src/index.ts b/libs/pmp-web/repository/domain/src/index.ts index d1ed4914..186f2695 100644 --- a/libs/pmp-web/repository/domain/src/index.ts +++ b/libs/pmp-web/repository/domain/src/index.ts @@ -3,3 +3,4 @@ export * from './lib/payloads/get-repository-collection.payload'; export * from './lib/payloads/get-repository-statistics.payload'; export * from './lib/payloads/get-reviewers-statistics-collection.payload'; export * from './lib/payloads/add-repository.payload'; +export * from './lib/payloads/delete-repository.payload'; diff --git a/libs/pmp-web/repository/domain/src/lib/payloads/delete-repository.payload.ts b/libs/pmp-web/repository/domain/src/lib/payloads/delete-repository.payload.ts new file mode 100644 index 00000000..7b412ee6 --- /dev/null +++ b/libs/pmp-web/repository/domain/src/lib/payloads/delete-repository.payload.ts @@ -0,0 +1,3 @@ +export interface DeleteRepositoryPayload { + repositoryId: string; +} diff --git a/libs/pmp-web/repository/repository-settings/feature/src/lib/containers/repository-settings/repository-settings.component.html b/libs/pmp-web/repository/repository-settings/feature/src/lib/containers/repository-settings/repository-settings.component.html index 8afbb572..222b906e 100644 --- a/libs/pmp-web/repository/repository-settings/feature/src/lib/containers/repository-settings/repository-settings.component.html +++ b/libs/pmp-web/repository/repository-settings/feature/src/lib/containers/repository-settings/repository-settings.component.html @@ -4,6 +4,7 @@

Repository settings

diff --git a/libs/pmp-web/repository/repository-settings/feature/src/lib/containers/repository-settings/repository-settings.component.ts b/libs/pmp-web/repository/repository-settings/feature/src/lib/containers/repository-settings/repository-settings.component.ts index b2a17f8d..052ffed8 100644 --- a/libs/pmp-web/repository/repository-settings/feature/src/lib/containers/repository-settings/repository-settings.component.ts +++ b/libs/pmp-web/repository/repository-settings/feature/src/lib/containers/repository-settings/repository-settings.component.ts @@ -2,6 +2,8 @@ import { ChangeDetectionStrategy, Component } from '@angular/core'; import { RepositoryFacade } from '@pimp-my-pr/pmp-web/repository/data-access'; import { MatDialog } from '@angular/material'; import { AddRepositoryDialogComponent } from '../add-repository-dialog/add-repository-dialog.component'; +import { Repository } from '@pimp-my-pr/pmp-web/repository/domain'; +import { GenericDialogComponent } from '@pimp-my-pr/pmp-web/shared/ui-generic-dialog'; @Component({ selector: 'pimp-my-pr-repository-settings', @@ -12,10 +14,22 @@ import { AddRepositoryDialogComponent } from '../add-repository-dialog/add-repos export class RepositorySettingsComponent { repositoryCollection$ = this.repositoryFacade.repositoryCollection$; repositoryCollectionLoading$ = this.repositoryFacade.repositoryCollectionLoading$; + constructor(private repositoryFacade: RepositoryFacade, private matDialog: MatDialog) { this.repositoryFacade.getRepositoryCollection(); } + onDeleteRespository(repository: Repository): void { + this.matDialog + .open(GenericDialogComponent, { autoFocus: false }) + .afterClosed() + .subscribe((shouldDelete: boolean) => { + if (shouldDelete) { + this.repositoryFacade.deleteRepository({ repositoryId: repository.id }); + } + }); + } + openAddRepoDialog(): void { this.matDialog.open(AddRepositoryDialogComponent, { width: '350px' // Consider better way of setting width of dialogs diff --git a/libs/pmp-web/repository/repository-settings/feature/src/lib/pmp-web-repository-repository-settings-feature.module.ts b/libs/pmp-web/repository/repository-settings/feature/src/lib/pmp-web-repository-repository-settings-feature.module.ts index 695f2157..f7ae413c 100644 --- a/libs/pmp-web/repository/repository-settings/feature/src/lib/pmp-web-repository-repository-settings-feature.module.ts +++ b/libs/pmp-web/repository/repository-settings/feature/src/lib/pmp-web-repository-repository-settings-feature.module.ts @@ -22,6 +22,7 @@ import { PmpWebRepositoryRepositorySettingsUiModule } from '@pimp-my-pr/pmp-web/ import { ReactiveFormsModule } from '@angular/forms'; import { AddRepositoryDialogComponent } from './containers/add-repository-dialog/add-repository-dialog.component'; import { ValidationMessagesModule } from '@valueadd/validation-messages'; +import { PmpWebSharedUiGenericDialogModule } from '@pimp-my-pr/pmp-web/shared/ui-generic-dialog'; @NgModule({ imports: [ @@ -44,7 +45,8 @@ import { ValidationMessagesModule } from '@valueadd/validation-messages'; MatSnackBarModule, MatSelectModule, PmpWebRepositoryRepositorySettingsUiModule, - ValidationMessagesModule + ValidationMessagesModule, + PmpWebSharedUiGenericDialogModule ], declarations: [RepositorySettingsComponent, AddRepositoryDialogComponent], entryComponents: [AddRepositoryDialogComponent] diff --git a/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.html b/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.html index 0a4cd489..81716226 100644 --- a/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.html +++ b/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.html @@ -40,6 +40,18 @@ + + + + Delete repository + + + + + + diff --git a/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.scss b/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.scss index b5440497..acf29ad1 100644 --- a/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.scss +++ b/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.scss @@ -4,12 +4,6 @@ bottom: 3rem; } -mat-header-cell > span { - font-size: 14px; - font-weight: normal; - padding: 0 5px; -} - mat-header-cell > span > mat-icon { color: #000000; } @@ -18,6 +12,10 @@ mat-cell { padding: 0 5px; } +.mat-column-delete { + flex: 0.5; +} + .avatar-column { flex: unset; width: 62px; diff --git a/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.ts b/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.ts index 9fcf5aa6..6a3cfea8 100644 --- a/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.ts +++ b/libs/pmp-web/repository/repository-settings/ui/src/lib/repositories-settings-table/repositories-settings-table.component.ts @@ -25,6 +25,9 @@ export class RepositoriesSettingsTableComponent { @Input() isLoading = false; + @Output() + deleteRepository = new EventEmitter(); + @Output() navigateToItem = new EventEmitter(); @@ -32,5 +35,9 @@ export class RepositoriesSettingsTableComponent { sort: MatSort; dataSource: MatTableDataSource; - displayColumns = ['avatar', 'name', 'maxLines', 'maxWaitingTime']; + displayColumns = ['avatar', 'name', 'maxLines', 'maxWaitingTime', 'delete']; + + onDeleteRepository(repository: Repository): void { + this.deleteRepository.emit(repository); + } } diff --git a/libs/pmp-web/core/src/lib/modules/validation.module.ts b/libs/pmp-web/shared/core/src/lib/modules/validation.module.ts similarity index 100% rename from libs/pmp-web/core/src/lib/modules/validation.module.ts rename to libs/pmp-web/shared/core/src/lib/modules/validation.module.ts diff --git a/libs/pmp-web/shared/core/src/lib/pmp-web-shared-core.module.ts b/libs/pmp-web/shared/core/src/lib/pmp-web-shared-core.module.ts index a6945456..3033ae5c 100644 --- a/libs/pmp-web/shared/core/src/lib/pmp-web-shared-core.module.ts +++ b/libs/pmp-web/shared/core/src/lib/pmp-web-shared-core.module.ts @@ -3,8 +3,15 @@ import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; import { PmpStoreModule } from './modules/pmp-store.module'; +import { ValidationModule } from './modules/validation.module'; @NgModule({ - imports: [BrowserModule, BrowserAnimationsModule, HttpClientModule, PmpStoreModule] + imports: [ + BrowserModule, + BrowserAnimationsModule, + HttpClientModule, + PmpStoreModule, + ValidationModule + ] }) export class PmpWebSharedCoreModule {} diff --git a/libs/pmp-web/shared/domain/src/index.ts b/libs/pmp-web/shared/domain/src/index.ts index e69de29b..f8f07bf7 100644 --- a/libs/pmp-web/shared/domain/src/index.ts +++ b/libs/pmp-web/shared/domain/src/index.ts @@ -0,0 +1 @@ +export * from './payloads/generic-dialog.payload'; diff --git a/libs/pmp-web/shared/domain/src/payloads/generic-dialog.payload.ts b/libs/pmp-web/shared/domain/src/payloads/generic-dialog.payload.ts new file mode 100644 index 00000000..3976c909 --- /dev/null +++ b/libs/pmp-web/shared/domain/src/payloads/generic-dialog.payload.ts @@ -0,0 +1,5 @@ +export interface GenericDialogPayload { + message?: string; + noOptionMsg?: string; + yesOptionMsg?: string; +} diff --git a/libs/pmp-web/shared/ui-generic-dialog/README.md b/libs/pmp-web/shared/ui-generic-dialog/README.md new file mode 100644 index 00000000..fd398c89 --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/README.md @@ -0,0 +1,7 @@ +# pmp-web-shared-ui-generic-dialog + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test pmp-web-shared-ui-generic-dialog` to execute the unit tests. diff --git a/libs/pmp-web/shared/ui-generic-dialog/jest.config.js b/libs/pmp-web/shared/ui-generic-dialog/jest.config.js new file mode 100644 index 00000000..eec4e18b --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/jest.config.js @@ -0,0 +1,9 @@ +module.exports = { + name: 'pmp-web-shared-ui-generic-dialog', + preset: '../../../../jest.config.js', + coverageDirectory: '../../../../coverage/libs/pmp-web/shared/ui-generic-dialog', + snapshotSerializers: [ + 'jest-preset-angular/AngularSnapshotSerializer.js', + 'jest-preset-angular/HTMLCommentSerializer.js' + ] +}; diff --git a/libs/pmp-web/shared/ui-generic-dialog/src/index.ts b/libs/pmp-web/shared/ui-generic-dialog/src/index.ts new file mode 100644 index 00000000..574c7369 --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/src/index.ts @@ -0,0 +1,3 @@ +export * from './lib/pmp-web-shared-ui-generic-dialog.module'; + +export * from './lib/components/generic-dialog/generic-dialog.component'; diff --git a/libs/pmp-web/shared/ui-generic-dialog/src/lib/components/generic-dialog/generic-dialog.component.html b/libs/pmp-web/shared/ui-generic-dialog/src/lib/components/generic-dialog/generic-dialog.component.html new file mode 100644 index 00000000..2299cac5 --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/src/lib/components/generic-dialog/generic-dialog.component.html @@ -0,0 +1,11 @@ + + {{ message }} + + + + + diff --git a/libs/pmp-web/shared/ui-generic-dialog/src/lib/components/generic-dialog/generic-dialog.component.scss b/libs/pmp-web/shared/ui-generic-dialog/src/lib/components/generic-dialog/generic-dialog.component.scss new file mode 100644 index 00000000..2261cbad --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/src/lib/components/generic-dialog/generic-dialog.component.scss @@ -0,0 +1,3 @@ +.mat-dialog-actions { + justify-content: flex-end; +} diff --git a/libs/pmp-web/shared/ui-generic-dialog/src/lib/components/generic-dialog/generic-dialog.component.ts b/libs/pmp-web/shared/ui-generic-dialog/src/lib/components/generic-dialog/generic-dialog.component.ts new file mode 100644 index 00000000..6174a03c --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/src/lib/components/generic-dialog/generic-dialog.component.ts @@ -0,0 +1,20 @@ +import { Component, Inject } from '@angular/core'; +import { MAT_DIALOG_DATA } from '@angular/material'; +import { GenericDialogPayload } from '@pimp-my-pr/pmp-web/shared/domain'; + +@Component({ + selector: 'pimp-my-pr-generic-dialog', + templateUrl: './generic-dialog.component.html', + styleUrls: ['./generic-dialog.component.scss'] +}) +export class GenericDialogComponent { + message: string; + noOptionMsg: string; + yesOptionMsg: string; + + constructor(@Inject(MAT_DIALOG_DATA) data: GenericDialogPayload) { + this.message = data && data.message ? data.message : 'Are you sure?'; + this.noOptionMsg = data && data.noOptionMsg ? data.noOptionMsg : 'Cancel'; + this.yesOptionMsg = data && data.yesOptionMsg ? data.yesOptionMsg : 'Yes'; + } +} diff --git a/libs/pmp-web/shared/ui-generic-dialog/src/lib/pmp-web-shared-ui-generic-dialog.module.spec.ts b/libs/pmp-web/shared/ui-generic-dialog/src/lib/pmp-web-shared-ui-generic-dialog.module.spec.ts new file mode 100644 index 00000000..9c0dc8da --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/src/lib/pmp-web-shared-ui-generic-dialog.module.spec.ts @@ -0,0 +1,14 @@ +import { async, TestBed } from '@angular/core/testing'; +import { PmpWebSharedUiGenericDialogModule } from './pmp-web-shared-ui-generic-dialog.module'; + +describe('PmpWebSharedUiGenericDialogModule', () => { + beforeEach(async(() => { + TestBed.configureTestingModule({ + imports: [PmpWebSharedUiGenericDialogModule] + }).compileComponents(); + })); + + it('should create', () => { + expect(PmpWebSharedUiGenericDialogModule).toBeDefined(); + }); +}); diff --git a/libs/pmp-web/shared/ui-generic-dialog/src/lib/pmp-web-shared-ui-generic-dialog.module.ts b/libs/pmp-web/shared/ui-generic-dialog/src/lib/pmp-web-shared-ui-generic-dialog.module.ts new file mode 100644 index 00000000..ac94d1f2 --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/src/lib/pmp-web-shared-ui-generic-dialog.module.ts @@ -0,0 +1,11 @@ +import { NgModule } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { GenericDialogComponent } from '@pimp-my-pr/pmp-web/shared/ui-generic-dialog'; +import { MatButtonModule, MatDialogModule } from '@angular/material'; + +@NgModule({ + imports: [CommonModule, MatDialogModule, MatButtonModule], + declarations: [GenericDialogComponent], + entryComponents: [GenericDialogComponent] +}) +export class PmpWebSharedUiGenericDialogModule {} diff --git a/libs/pmp-web/shared/ui-generic-dialog/src/test-setup.ts b/libs/pmp-web/shared/ui-generic-dialog/src/test-setup.ts new file mode 100644 index 00000000..8d88704e --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/src/test-setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular'; diff --git a/libs/pmp-web/shared/ui-generic-dialog/tsconfig.json b/libs/pmp-web/shared/ui-generic-dialog/tsconfig.json new file mode 100644 index 00000000..a6233e13 --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../../tsconfig.json", + "compilerOptions": { + "types": ["node", "jest"] + }, + "include": ["**/*.ts"] +} diff --git a/libs/pmp-web/shared/ui-generic-dialog/tsconfig.lib.json b/libs/pmp-web/shared/ui-generic-dialog/tsconfig.lib.json new file mode 100644 index 00000000..b639cbf4 --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/tsconfig.lib.json @@ -0,0 +1,20 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "target": "es2015", + "declaration": true, + "inlineSources": true, + "types": [], + "lib": ["dom", "es2018"] + }, + "angularCompilerOptions": { + "annotateForClosureCompiler": true, + "skipTemplateCodegen": true, + "strictMetadataEmit": true, + "fullTemplateTypeCheck": true, + "strictInjectionParameters": true, + "enableResourceInlining": true + }, + "exclude": ["src/test-setup.ts", "**/*.spec.ts"] +} diff --git a/libs/pmp-web/shared/ui-generic-dialog/tsconfig.spec.json b/libs/pmp-web/shared/ui-generic-dialog/tsconfig.spec.json new file mode 100644 index 00000000..aed68bc6 --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/tsconfig.spec.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../../dist/out-tsc", + "module": "commonjs", + "types": ["jest", "node"] + }, + "files": ["src/test-setup.ts"], + "include": ["**/*.spec.ts", "**/*.d.ts"] +} diff --git a/libs/pmp-web/shared/ui-generic-dialog/tslint.json b/libs/pmp-web/shared/ui-generic-dialog/tslint.json new file mode 100644 index 00000000..83c38554 --- /dev/null +++ b/libs/pmp-web/shared/ui-generic-dialog/tslint.json @@ -0,0 +1,7 @@ +{ + "extends": "../../../../tslint.json", + "rules": { + "directive-selector": [true, "attribute", "pimpMyPr", "camelCase"], + "component-selector": [true, "element", "pimp-my-pr", "kebab-case"] + } +} diff --git a/libs/server/repository/api-rest/src/lib/controllers/repository.controller.ts b/libs/server/repository/api-rest/src/lib/controllers/repository.controller.ts index 06459d8a..078d8a32 100644 --- a/libs/server/repository/api-rest/src/lib/controllers/repository.controller.ts +++ b/libs/server/repository/api-rest/src/lib/controllers/repository.controller.ts @@ -48,8 +48,8 @@ export class RepositoryController { } @UseGuards(UserRepositoryGuard) - @Delete(':id') - delete(@Param('id') repositoryId: string): Promise { + @Delete(':repositoryId') + delete(@Param('repositoryId') repositoryId: string): Promise { return this.repositoryFacade.deleteRepository(new DeleteRepositoryCommand(repositoryId)); } } diff --git a/nx.json b/nx.json index 389ecc92..bd6ef45f 100644 --- a/nx.json +++ b/nx.json @@ -202,6 +202,9 @@ }, "pmp-web-shared-core": { "tags": ["platform:web", "type:core"] + }, + "pmp-web-shared-ui-generic-dialog": { + "tags": ["platform:web", "scope:shared", "type:ui"] } } } diff --git a/tsconfig.json b/tsconfig.json index 18babc4a..896de438 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -140,6 +140,9 @@ "@pimp-my-pr/pmp-web/shared/core": ["libs/pmp-web/shared/core/src/index.ts"], "@pimp-my-pr/pmp-web/repository/repository-settings/ui": [ "libs/pmp-web/repository/repository-settings/ui/src/index.ts" + ], + "@pimp-my-pr/pmp-web/shared/ui-generic-dialog": [ + "libs/pmp-web/shared/ui-generic-dialog/src/index.ts" ] } },