From 8aa80692ae5789b6d896b2ab49206e9d95fd8c3e Mon Sep 17 00:00:00 2001 From: Patricio Albizu Date: Thu, 10 Mar 2022 17:40:06 -0300 Subject: [PATCH 1/2] feat: adding disale property to textarea component --- projects/components/src/textarea/textarea.component.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/projects/components/src/textarea/textarea.component.ts b/projects/components/src/textarea/textarea.component.ts index edf4006a3..71b8efb03 100644 --- a/projects/components/src/textarea/textarea.component.ts +++ b/projects/components/src/textarea/textarea.component.ts @@ -74,6 +74,10 @@ export class TextareaComponent implements ControlValueAccessor, OnInit { this.propagateControlValueChangeOnTouch = onTouch; } + public setDisabledState(isDisabled?: boolean): void { + this.disabled = isDisabled ?? false; + } + private propagateValueChangeToFormControl(value?: string): void { this.propagateControlValueChange?.(value); this.propagateControlValueChangeOnTouch?.(value); From a5adfdb44d992bcc2d7b4a7db96529dd9838b1ad Mon Sep 17 00:00:00 2001 From: Patricio Albizu Date: Fri, 11 Mar 2022 13:08:35 -0300 Subject: [PATCH 2/2] fix: adding necessary manually change detection --- .../src/multi-select/multi-select.component.ts | 4 ++++ projects/components/src/select/select.component.ts | 8 +++----- .../components/src/textarea/textarea.component.ts | 13 +++++++++++-- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/projects/components/src/multi-select/multi-select.component.ts b/projects/components/src/multi-select/multi-select.component.ts index fb6666335..0eb161c13 100644 --- a/projects/components/src/multi-select/multi-select.component.ts +++ b/projects/components/src/multi-select/multi-select.component.ts @@ -1,6 +1,7 @@ import { AfterContentInit, ChangeDetectionStrategy, + ChangeDetectorRef, Component, ContentChildren, EventEmitter, @@ -201,6 +202,8 @@ export class MultiSelectComponent implements ControlValueAccessor, AfterConte private propagateControlValueChange?: (value: V[] | undefined) => void; private propagateControlValueChangeOnTouch?: (value: V[] | undefined) => void; + public constructor(private readonly cdr: ChangeDetectorRef) {} + public ngAfterContentInit(): void { this.allOptions$ = this.allOptionsList !== undefined ? queryListAndChanges$(this.allOptionsList) : EMPTY; this.filteredOptions$ = combineLatest([this.allOptions$, this.searchSubject]).pipe( @@ -265,6 +268,7 @@ export class MultiSelectComponent implements ControlValueAccessor, AfterConte public writeValue(value?: V[]): void { this.setSelection(value ?? []); + this.cdr.markForCheck(); } public registerOnChange(onChange: (value: V[] | undefined) => void): void { diff --git a/projects/components/src/select/select.component.ts b/projects/components/src/select/select.component.ts index 6f48aa348..403fb53e9 100644 --- a/projects/components/src/select/select.component.ts +++ b/projects/components/src/select/select.component.ts @@ -252,10 +252,7 @@ export class SelectComponent implements ControlValueAccessor, AfterContentIni return this.showBorder ? SelectJustify.Left : SelectJustify.Right; } - public constructor( - private readonly loggerService: LoggerService, - private readonly changeDetector: ChangeDetectorRef - ) {} + public constructor(private readonly loggerService: LoggerService, private readonly cdr: ChangeDetectorRef) {} public ngAfterContentInit(): void { this.selected$ = this.buildObservableOfSelected(); @@ -282,7 +279,7 @@ export class SelectComponent implements ControlValueAccessor, AfterContentIni public updateGroupPosition(position: SelectGroupPosition): void { this.groupPosition = position; - this.changeDetector.markForCheck(); + this.cdr.markForCheck(); } public searchOptions(searchText: string): void { @@ -341,6 +338,7 @@ export class SelectComponent implements ControlValueAccessor, AfterContentIni public writeValue(value?: V): void { this.setSelection(value); + this.cdr.markForCheck(); } public registerOnChange(onChange: (value: V | undefined) => void): void { diff --git a/projects/components/src/textarea/textarea.component.ts b/projects/components/src/textarea/textarea.component.ts index 71b8efb03..c1ef6ca38 100644 --- a/projects/components/src/textarea/textarea.component.ts +++ b/projects/components/src/textarea/textarea.component.ts @@ -1,4 +1,12 @@ -import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnInit, Output } from '@angular/core'; +import { + ChangeDetectionStrategy, + ChangeDetectorRef, + Component, + EventEmitter, + Input, + OnInit, + Output +} from '@angular/core'; import { ControlValueAccessor, NG_VALUE_ACCESSOR } from '@angular/forms'; import { LoggerService } from '@hypertrace/common'; @@ -44,7 +52,7 @@ export class TextareaComponent implements ControlValueAccessor, OnInit { @Output() public readonly valueChange: EventEmitter = new EventEmitter(); - public constructor(private readonly loggerService: LoggerService) {} + public constructor(private readonly loggerService: LoggerService, private readonly cdr: ChangeDetectorRef) {} public ngOnInit(): void { // tslint:disable-next-line:strict-type-predicates @@ -64,6 +72,7 @@ export class TextareaComponent implements ControlValueAccessor, OnInit { public writeValue(value?: string): void { this.value = value; + this.cdr.markForCheck(); } public registerOnChange(onChange: (value?: string) => void): void {