From 8d8a037e3fe9b1d2ccbc4169ce59b13000b59cb0 Mon Sep 17 00:00:00 2001 From: Jelle Besseling <jelle@pingiun.com> Date: Tue, 12 Oct 2021 13:33:44 +0200 Subject: Allow configuration to be static/readonly (#4315) * Allow configuration to be static/readonly * Make all components disableable * Improve disabled component styling * Rename edits allowed field in configuration * Fix CI --- client/src/app/shared/shared-forms/markdown-textarea.component.html | 5 +++-- client/src/app/shared/shared-forms/markdown-textarea.component.ts | 5 +++++ .../app/shared/shared-forms/select/select-checkbox.component.html | 1 + .../src/app/shared/shared-forms/select/select-checkbox.component.ts | 6 ++++++ .../shared/shared-forms/select/select-custom-value.component.html | 1 + .../app/shared/shared-forms/select/select-custom-value.component.ts | 5 +++++ .../app/shared/shared-forms/select/select-options.component.html | 1 + .../src/app/shared/shared-forms/select/select-options.component.ts | 5 +++++ 8 files changed, 27 insertions(+), 2 deletions(-) (limited to 'client/src/app/shared/shared-forms') diff --git a/client/src/app/shared/shared-forms/markdown-textarea.component.html b/client/src/app/shared/shared-forms/markdown-textarea.component.html index 6e70e2f37..a460cb9b7 100644 --- a/client/src/app/shared/shared-forms/markdown-textarea.component.html +++ b/client/src/app/shared/shared-forms/markdown-textarea.component.html @@ -2,6 +2,7 @@ <textarea #textarea [(ngModel)]="content" (ngModelChange)="onModelChange()" class="form-control" [ngClass]="classes" + [attr.disabled]="disabled" [ngStyle]="{ height: textareaHeight }" [id]="name" [name]="name"> </textarea> @@ -25,11 +26,11 @@ </ng-container> <my-button - *ngIf="!isMaximized" [title]="maximizeInText" className="maximize-button" icon="fullscreen" (click)="onMaximizeClick()" + *ngIf="!isMaximized" [title]="maximizeInText" className="maximize-button" icon="fullscreen" (click)="onMaximizeClick()" [disabled]="disabled" ></my-button> <my-button - *ngIf="isMaximized" [title]="maximizeOutText" className="maximize-button" icon="exit-fullscreen" (click)="onMaximizeClick()" + *ngIf="isMaximized" [title]="maximizeOutText" className="maximize-button" icon="exit-fullscreen" (click)="onMaximizeClick()" [disabled]="disabled" ></my-button> </div> diff --git a/client/src/app/shared/shared-forms/markdown-textarea.component.ts b/client/src/app/shared/shared-forms/markdown-textarea.component.ts index 80ca6690f..dcb5d20da 100644 --- a/client/src/app/shared/shared-forms/markdown-textarea.component.ts +++ b/client/src/app/shared/shared-forms/markdown-textarea.component.ts @@ -45,6 +45,7 @@ export class MarkdownTextareaComponent implements ControlValueAccessor, OnInit { previewHTML: SafeHtml | string = '' isMaximized = false + disabled = false maximizeInText = $localize`Maximize editor` maximizeOutText = $localize`Exit maximized editor` @@ -108,6 +109,10 @@ export class MarkdownTextareaComponent implements ControlValueAccessor, OnInit { } } + setDisabledState (isDisabled: boolean) { + this.disabled = isDisabled + } + private lockBodyScroll () { this.scrollPosition = this.viewportScroller.getScrollPosition() document.getElementById('content').classList.add('lock-scroll') diff --git a/client/src/app/shared/shared-forms/select/select-checkbox.component.html b/client/src/app/shared/shared-forms/select/select-checkbox.component.html index 7b49a0c01..03db2875b 100644 --- a/client/src/app/shared/shared-forms/select/select-checkbox.component.html +++ b/client/src/app/shared/shared-forms/select/select-checkbox.component.html @@ -7,6 +7,7 @@ [multiple]="true" [searchable]="true" [closeOnSelect]="false" + [disabled]="disabled" bindValue="id" bindLabel="label" diff --git a/client/src/app/shared/shared-forms/select/select-checkbox.component.ts b/client/src/app/shared/shared-forms/select/select-checkbox.component.ts index 12f697628..c9a500324 100644 --- a/client/src/app/shared/shared-forms/select/select-checkbox.component.ts +++ b/client/src/app/shared/shared-forms/select/select-checkbox.component.ts @@ -23,6 +23,8 @@ export class SelectCheckboxComponent implements OnInit, ControlValueAccessor { @Input() selectableGroupAsModel: boolean @Input() placeholder: string + disabled = false + ngOnInit () { if (!this.placeholder) this.placeholder = $localize`Add a new option` } @@ -59,6 +61,10 @@ export class SelectCheckboxComponent implements OnInit, ControlValueAccessor { this.propagateChange(this.selectedItems) } + setDisabledState (isDisabled: boolean) { + this.disabled = isDisabled + } + compareFn (item: SelectOptionsItem, selected: ItemSelectCheckboxValue) { if (typeof selected === 'string' || typeof selected === 'number') { return item.id === selected diff --git a/client/src/app/shared/shared-forms/select/select-custom-value.component.html b/client/src/app/shared/shared-forms/select/select-custom-value.component.html index 9dc8c2ec2..69fdedc10 100644 --- a/client/src/app/shared/shared-forms/select/select-custom-value.component.html +++ b/client/src/app/shared/shared-forms/select/select-custom-value.component.html @@ -5,6 +5,7 @@ [searchable]="searchable" [groupBy]="groupBy" [labelForId]="labelForId" + [disabled]="disabled" [(ngModel)]="selectedId" (ngModelChange)="onModelChange()" diff --git a/client/src/app/shared/shared-forms/select/select-custom-value.component.ts b/client/src/app/shared/shared-forms/select/select-custom-value.component.ts index bc6b863c7..636bd6101 100644 --- a/client/src/app/shared/shared-forms/select/select-custom-value.component.ts +++ b/client/src/app/shared/shared-forms/select/select-custom-value.component.ts @@ -25,6 +25,7 @@ export class SelectCustomValueComponent implements ControlValueAccessor, OnChang customValue: number | string = '' selectedId: number | string + disabled = false itemsWithCustom: SelectOptionsItem[] = [] @@ -75,4 +76,8 @@ export class SelectCustomValueComponent implements ControlValueAccessor, OnChang isCustomValue () { return this.selectedId === 'other' } + + setDisabledState (isDisabled: boolean) { + this.disabled = isDisabled + } } diff --git a/client/src/app/shared/shared-forms/select/select-options.component.html b/client/src/app/shared/shared-forms/select/select-options.component.html index 3b1761255..83c7de9f5 100644 --- a/client/src/app/shared/shared-forms/select/select-options.component.html +++ b/client/src/app/shared/shared-forms/select/select-options.component.html @@ -7,6 +7,7 @@ [labelForId]="labelForId" [searchable]="searchable" [searchFn]="searchFn" + [disabled]="disabled" bindLabel="label" bindValue="id" diff --git a/client/src/app/shared/shared-forms/select/select-options.component.ts b/client/src/app/shared/shared-forms/select/select-options.component.ts index 8482b9dea..820a82c24 100644 --- a/client/src/app/shared/shared-forms/select/select-options.component.ts +++ b/client/src/app/shared/shared-forms/select/select-options.component.ts @@ -23,6 +23,7 @@ export class SelectOptionsComponent implements ControlValueAccessor { @Input() searchFn: any selectedId: number | string + disabled = false propagateChange = (_: any) => { /* empty */ } @@ -48,4 +49,8 @@ export class SelectOptionsComponent implements ControlValueAccessor { onModelChange () { this.propagateChange(this.selectedId) } + + setDisabledState (isDisabled: boolean) { + this.disabled = isDisabled + } } -- cgit v1.2.3