diff --git a/src/Squidex/app/features/content/shared/content-item.component.ts b/src/Squidex/app/features/content/shared/content-item.component.ts index 882d11769..26e1dcdb3 100644 --- a/src/Squidex/app/features/content/shared/content-item.component.ts +++ b/src/Squidex/app/features/content/shared/content-item.component.ts @@ -29,8 +29,6 @@ import { ] }) export class ContentItemComponent extends AppComponentBase implements OnInit, OnChanges { - public dropdown = new ModalView(false, true); - @Output() public publishing = new EventEmitter(); @@ -58,6 +56,8 @@ export class ContentItemComponent extends AppComponentBase implements OnInit, On @Input('sqxContent') public content: ContentDto; + public dropdown = new ModalView(false, true); + public values: any[] = []; constructor(apps: AppsStoreService, notifications: NotificationService) { diff --git a/src/Squidex/app/features/schemas/pages/schema/field.component.ts b/src/Squidex/app/features/schemas/pages/schema/field.component.ts index 7b7950582..306632120 100644 --- a/src/Squidex/app/features/schemas/pages/schema/field.component.ts +++ b/src/Squidex/app/features/schemas/pages/schema/field.component.ts @@ -25,8 +25,6 @@ import { ] }) export class FieldComponent implements OnInit { - public dropdown = new ModalView(false, true); - @Input() public field: FieldDto; @@ -51,6 +49,8 @@ export class FieldComponent implements OnInit { @Output() public deleting = new EventEmitter(); + public dropdown = new ModalView(false, true); + public isEditing = false; public selectedTab = 0; diff --git a/src/Squidex/app/features/schemas/pages/schemas/schema-form.component.ts b/src/Squidex/app/features/schemas/pages/schemas/schema-form.component.ts index b48338590..b96bb5bfc 100644 --- a/src/Squidex/app/features/schemas/pages/schemas/schema-form.component.ts +++ b/src/Squidex/app/features/schemas/pages/schemas/schema-form.component.ts @@ -31,15 +31,15 @@ const FALLBACK_NAME = 'my-schema'; ] }) export class SchemaFormComponent { - @Input() - public appName: string; - @Output() public created = new EventEmitter(); @Output() public cancelled = new EventEmitter(); + @Input() + public appName: string; + public showImport = false; public createFormError = ''; diff --git a/src/Squidex/app/features/settings/pages/clients/client.component.ts b/src/Squidex/app/features/settings/pages/clients/client.component.ts index 88855cfeb..6983d9b52 100644 --- a/src/Squidex/app/features/settings/pages/clients/client.component.ts +++ b/src/Squidex/app/features/settings/pages/clients/client.component.ts @@ -12,6 +12,7 @@ import { AccessTokenDto, AppClientDto, AppClientsService, + ComponentBase, fadeAnimation, ModalView, NotificationService @@ -27,11 +28,7 @@ const ESCAPE_KEY = 27; fadeAnimation ] }) -export class ClientComponent { - public isRenaming = false; - - public token: AccessTokenDto; - +export class ClientComponent extends ComponentBase { @Output() public renaming = new EventEmitter(); @@ -47,11 +44,10 @@ export class ClientComponent { @Input() public client: AppClientDto; - public tokenDialog = new ModalView(); + public isRenaming = false; - public get hasNewName() { - return this.renameForm.controls['name'].value !== this.client.name; - } + public token: AccessTokenDto; + public tokenDialog = new ModalView(); public renameForm: FormGroup = this.formBuilder.group({ @@ -60,11 +56,15 @@ export class ClientComponent { ] }); - constructor( + public get hasNewName() { + return this.renameForm.controls['name'].value !== this.client.name; + } + + constructor(notifications: NotificationService, private readonly appClientsService: AppClientsService, - private readonly formBuilder: FormBuilder, - private readonly notifications: NotificationService + private readonly formBuilder: FormBuilder ) { + super(notifications); } public cancelRename() { @@ -89,7 +89,7 @@ export class ClientComponent { this.token = dto; this.tokenDialog.show(); }, error => { - this.notifications.notify(error); + this.notifyError(error); }); } } diff --git a/src/Squidex/app/features/settings/pages/clients/clients-page.component.html b/src/Squidex/app/features/settings/pages/clients/clients-page.component.html index 9d20af949..a5bb33688 100644 --- a/src/Squidex/app/features/settings/pages/clients/clients-page.component.html +++ b/src/Squidex/app/features/settings/pages/clients/clients-page.component.html @@ -33,7 +33,7 @@ - + diff --git a/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts b/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts index 481168ade..5dea34451 100644 --- a/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts +++ b/src/Squidex/app/features/settings/pages/clients/clients-page.component.ts @@ -80,10 +80,10 @@ export class ClientsPageComponent extends AppComponentBase implements OnInit { } public renameClient(client: AppClientDto, name: string) { - const request = new UpdateAppClientDto(name); + const requestDto = new UpdateAppClientDto(name); this.appNameOnce() - .switchMap(app => this.appClientsService.updateClient(app, client.id, request, this.version)) + .switchMap(app => this.appClientsService.updateClient(app, client.id, requestDto, this.version)) .subscribe(() => { this.updateClients(this.appClients.replace(client, rename(client, name))); }, error => { @@ -92,10 +92,10 @@ export class ClientsPageComponent extends AppComponentBase implements OnInit { } public changeClient(client: AppClientDto, isReader: boolean) { - const request = new UpdateAppClientDto(undefined, isReader); + const requestDto = new UpdateAppClientDto(undefined, isReader); this.appNameOnce() - .switchMap(app => this.appClientsService.updateClient(app, client.id, request, this.version)) + .switchMap(app => this.appClientsService.updateClient(app, client.id, requestDto, this.version)) .subscribe(() => { this.updateClients(this.appClients.replace(client, change(client, isReader))); }, error => { @@ -103,15 +103,10 @@ export class ClientsPageComponent extends AppComponentBase implements OnInit { }); } - public resetClientForm() { - this.addClientFormSubmitted = false; - this.addClientForm.enable(); - this.addClientForm.reset(); - } - public attachClient() { + this.addClientFormSubmitted = true; + if (this.addClientForm.valid) { - this.addClientFormSubmitted = true; this.addClientForm.disable(); const requestDto = new CreateAppClientDto(this.addClientForm.controls['name'].value); @@ -120,14 +115,20 @@ export class ClientsPageComponent extends AppComponentBase implements OnInit { .switchMap(app => this.appClientsService.postClient(app, requestDto, this.version)) .subscribe(dto => { this.updateClients(this.appClients.push(dto)); - this.resetClientForm(); }, error => { this.notifyError(error); + }, () => { this.resetClientForm(); }); } } + public resetClientForm() { + this.addClientFormSubmitted = false; + this.addClientForm.enable(); + this.addClientForm.reset(); + } + private updateClients(clients: ImmutableArray) { this.appClients = clients; diff --git a/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.ts b/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.ts index ecad7fe57..3a9f32e8e 100644 --- a/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.ts +++ b/src/Squidex/app/features/settings/pages/contributors/contributors-page.component.ts @@ -12,6 +12,7 @@ import { Observable } from 'rxjs'; import { AppComponentBase, AppContributorDto, + AppContributorsDto, AppContributorsService, AppsStoreService, AuthService, @@ -100,9 +101,7 @@ export class ContributorsPageComponent extends AppComponentBase implements OnIni this.appNameOnce() .switchMap(app => this.appContributorsService.getContributors(app, this.version).retry(2)) .subscribe(dto => { - this.updateContributors(ImmutableArray.of(dto.contributors)); - - this.maxContributors = dto.maxContributors; + this.updateContributorsFromDto(dto); }, error => { this.notifyError(error); }); @@ -118,32 +117,38 @@ export class ContributorsPageComponent extends AppComponentBase implements OnIni }); } - public assignContributor() { - const requestDto = new AppContributorDto(this.addContributorForm.controls['user'].value.id, 'Editor'); + public changePermission(contributor: AppContributorDto, permission: string) { + const requestDto = changePermission(contributor, permission); this.appNameOnce() .switchMap(app => this.appContributorsService.postContributor(app, requestDto, this.version)) .subscribe(() => { - this.updateContributors(this.appContributors.push(requestDto)); + this.updateContributors(this.appContributors.replace(contributor, requestDto)); }, error => { this.notifyError(error); }); - - this.addContributorForm.reset(); } - public changePermission(contributor: AppContributorDto, permission: string) { - const requestDto = changePermission(contributor, permission); + public assignContributor() { + const requestDto = new AppContributorDto(this.addContributorForm.controls['user'].value.id, 'Editor'); this.appNameOnce() .switchMap(app => this.appContributorsService.postContributor(app, requestDto, this.version)) .subscribe(() => { - this.updateContributors(this.appContributors.replace(contributor, requestDto)); + this.updateContributors(this.appContributors.push(requestDto)); }, error => { this.notifyError(error); + }, () => { + this.addContributorForm.reset(); }); } + private updateContributorsFromDto(dto: AppContributorsDto) { + this.updateContributors(ImmutableArray.of(dto.contributors)); + + this.maxContributors = dto.maxContributors; + } + private updateContributors(contributors: ImmutableArray) { this.appContributors = contributors; diff --git a/src/Squidex/app/framework/angular/date-time-editor.component.ts b/src/Squidex/app/framework/angular/date-time-editor.component.ts index eb9462352..081c94ee4 100644 --- a/src/Squidex/app/framework/angular/date-time-editor.component.ts +++ b/src/Squidex/app/framework/angular/date-time-editor.component.ts @@ -34,16 +34,16 @@ export class DateTimeEditorComponent implements ControlValueAccessor, OnDestroy, private changeCallback: (value: any) => void = NOOP; private touchedCallback: () => void = NOOP; - public timeControl = new FormControl(); - - public dateControl = new FormControl(); - @Input() public mode: string; @Input() public enforceTime: boolean; + public timeControl = new FormControl(); + + public dateControl = new FormControl(); + public get showTime() { return this.mode === 'DateTime'; } diff --git a/src/Squidex/app/framework/angular/stars.component.ts b/src/Squidex/app/framework/angular/stars.component.ts index 545ac2494..a6ba25a86 100644 --- a/src/Squidex/app/framework/angular/stars.component.ts +++ b/src/Squidex/app/framework/angular/stars.component.ts @@ -25,17 +25,6 @@ export class StarsComponent implements ControlValueAccessor { private touchedCallback: () => void = NOOP; private maximumStarsValue = 5; - public isDisabled = false; - - public stars: number; - public starsArray: number[] = [1, 2, 3, 4, 5]; - - public value: number | null = 1; - - public get maximumStars() { - return this.maximumStarsValue; - } - @Input() public set maximumStars(value: any) { value = value || 5; @@ -55,6 +44,17 @@ export class StarsComponent implements ControlValueAccessor { } } + public get maximumStars() { + return this.maximumStarsValue; + } + + public isDisabled = false; + + public stars: number; + public starsArray: number[] = [1, 2, 3, 4, 5]; + + public value: number | null = 1; + public writeValue(value: any) { this.value = this.stars = value; } diff --git a/src/Squidex/app/framework/angular/tag-editor.component.ts b/src/Squidex/app/framework/angular/tag-editor.component.ts index 64c588dcf..deeef8af1 100644 --- a/src/Squidex/app/framework/angular/tag-editor.component.ts +++ b/src/Squidex/app/framework/angular/tag-editor.component.ts @@ -61,8 +61,6 @@ export class TagEditorComponent implements ControlValueAccessor { private changeCallback: (value: any) => void = NOOP; private touchedCallback: () => void = NOOP; - public addInput = new FormControl(); - @Input() public converter: Converter = new NoopConverter(); @@ -74,6 +72,8 @@ export class TagEditorComponent implements ControlValueAccessor { public items: any[] = []; + public addInput = new FormControl(); + public writeValue(value: any) { this.addInput.setValue(''); diff --git a/src/Squidex/app/shared/components/asset.component.ts b/src/Squidex/app/shared/components/asset.component.ts index 4d584d1cf..9b8434559 100644 --- a/src/Squidex/app/shared/components/asset.component.ts +++ b/src/Squidex/app/shared/components/asset.component.ts @@ -38,16 +38,6 @@ import { export class AssetComponent extends AppComponentBase implements OnInit { private version: Version; - public renameDialog = new ModalView(); - public renameFormSubmitted = false; - public renameForm: FormGroup = - this.formBuilder.group({ - name: ['', - [ - Validators.required - ]] - }); - @Input() public initFile: File; @@ -72,6 +62,16 @@ export class AssetComponent extends AppComponentBase implements OnInit { @Output() public failed = new EventEmitter(); + public renameDialog = new ModalView(); + public renameFormSubmitted = false; + public renameForm: FormGroup = + this.formBuilder.group({ + name: ['', + [ + Validators.required + ]] + }); + public progress = 0; public previewUrl: string; public fileUrl: string; @@ -168,7 +168,7 @@ export class AssetComponent extends AppComponentBase implements OnInit { this.appNameOnce() .switchMap(app => this.assetsService.putAsset(app, this.asset.id, requestDto, this.version)) - .subscribe(_ => { + .subscribe(() => { const me = `subject:${this.authService.user!.id}`; const asset = new AssetDto( @@ -184,9 +184,9 @@ export class AssetComponent extends AppComponentBase implements OnInit { this.asset.version); this.updateAsset(asset, true); - this.resetRename(); }, error => { this.notifyError(error); + }, () => { this.resetRename(); }); }