Skip to content

Commit b299ca7

Browse files
committed
fix(forms): extract on-touch logic to BaseValueAccessor
1 parent 4ba0e7c commit b299ca7

7 files changed

+7
-45
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { ControlValueAccessor } from "@angular/forms";
22

33
export class BaseValueAccessor<TView> implements ControlValueAccessor {
4-
constructor(public view: TView) { }
5-
6-
onChange = (_) => { };
74
private pendingChangeNotification: number = 0;
5+
onChange = (_) => { };
6+
onTouched = () => {};
7+
8+
constructor(public view: TView) { }
89

910
registerOnChange(fn: (_: any) => void): void {
1011
this.onChange = (arg) => {
@@ -18,11 +19,7 @@ export class BaseValueAccessor<TView> implements ControlValueAccessor {
1819
};
1920
}
2021

21-
writeValue(_: any) {
22-
//
23-
}
22+
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
2423

25-
registerOnTouched(_: () => void): void {
26-
//
27-
}
24+
writeValue(_: any) { }
2825
}

Diff for: nativescript-angular/value-accessors/checked-value-accessor.ts

-6
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,11 @@ const CHECKED_VALUE_ACCESSOR = {
2929
},
3030
})
3131
export class CheckedValueAccessor extends BaseValueAccessor<Switch> { // tslint:disable-line:directive-class-suffix
32-
onChange = (_: any) => {};
33-
onTouched = () => {};
34-
3532
constructor(elementRef: ElementRef) {
3633
super(elementRef.nativeElement);
3734
}
3835

3936
writeValue(value: any): void {
4037
this.view.checked = value;
4138
}
42-
43-
registerOnChange(fn: (_: any) => {}): void { this.onChange = fn; }
44-
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
4539
}

Diff for: nativescript-angular/value-accessors/date-value-accessor.ts

-6
Original file line numberDiff line numberDiff line change
@@ -30,17 +30,11 @@ const DATE_VALUE_ACCESSOR = {
3030
},
3131
})
3232
export class DateValueAccessor extends BaseValueAccessor<DatePicker> { // tslint:disable-line:directive-class-suffix
33-
onChange = (_: any) => {};
34-
onTouched = () => {};
35-
3633
constructor(elementRef: ElementRef) {
3734
super(elementRef.nativeElement);
3835
}
3936

4037
writeValue(value: any): void {
4138
this.view.date = value;
4239
}
43-
44-
registerOnChange(fn: (_: any) => {}): void { this.onChange = fn; }
45-
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
4640
}

Diff for: nativescript-angular/value-accessors/number-value-accessor.ts

-6
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,11 @@ const NUMBER_VALUE_ACCESSOR = {
2929
},
3030
})
3131
export class NumberValueAccessor extends BaseValueAccessor<Slider> { // tslint:disable-line:directive-class-suffix
32-
onChange = (_: any) => {};
33-
onTouched = () => {};
34-
3532
constructor(elementRef: ElementRef) {
3633
super(elementRef.nativeElement);
3734
}
3835

3936
writeValue(value: any): void {
4037
this.view.value = value;
4138
}
42-
43-
registerOnChange(fn: (_: any) => {}): void { this.onChange = fn; }
44-
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
4539
}

Diff for: nativescript-angular/value-accessors/selectedIndex-value-accessor.ts

+1-6
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,6 @@ export type SelectableView = {selectedIndex: number} & View;
4343
},
4444
})
4545
export class SelectedIndexValueAccessor extends BaseValueAccessor<SelectableView> implements AfterViewInit { // tslint:disable-line:max-line-length directive-class-suffix
46-
onChange = (_: any) => {};
47-
onTouched = () => {};
48-
4946
constructor(elementRef: ElementRef) {
5047
super(elementRef.nativeElement);
5148
}
@@ -55,6 +52,7 @@ export class SelectedIndexValueAccessor extends BaseValueAccessor<SelectableView
5552

5653
writeValue(value: any): void {
5754
this.value = value;
55+
5856
if (this.viewInitialized) {
5957
this.view.selectedIndex = this.value;
6058
}
@@ -64,7 +62,4 @@ export class SelectedIndexValueAccessor extends BaseValueAccessor<SelectableView
6462
this.viewInitialized = true;
6563
this.view.selectedIndex = this.value;
6664
}
67-
68-
registerOnChange(fn: (_: any) => {}): void { this.onChange = fn; }
69-
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
7065
}

Diff for: nativescript-angular/value-accessors/text-value-accessor.ts

-6
Original file line numberDiff line numberDiff line change
@@ -43,17 +43,11 @@ export type TextView = {text: string} & View;
4343
},
4444
})
4545
export class TextValueAccessor extends BaseValueAccessor<TextView> { // tslint:disable-line:directive-class-suffix
46-
onChange = (_: any) => {};
47-
onTouched = () => {};
48-
4946
constructor(elementRef: ElementRef) {
5047
super(elementRef.nativeElement);
5148
}
5249

5350
writeValue(value: any): void {
5451
this.view.text = value;
5552
}
56-
57-
registerOnChange(fn: (_: any) => {}): void { this.onChange = fn; }
58-
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
5953
}

Diff for: nativescript-angular/value-accessors/time-value-accessor.ts

-6
Original file line numberDiff line numberDiff line change
@@ -31,17 +31,11 @@ const TIME_VALUE_ACCESSOR = {
3131
},
3232
})
3333
export class TimeValueAccessor extends BaseValueAccessor<TimePicker> { // tslint:disable-line:directive-class-suffix
34-
onChange = (_: any) => {};
35-
onTouched = () => { };
36-
3734
constructor(elementRef: ElementRef) {
3835
super(elementRef.nativeElement);
3936
}
4037

4138
writeValue(value: any): void {
4239
this.view.time = value;
4340
}
44-
45-
registerOnChange(fn: (_: any) => {}): void { this.onChange = fn; }
46-
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
4741
}

0 commit comments

Comments
 (0)