GeezerVison is showing github.com — fix(forms): default to unsetValue for value accessors (#846) · javaage/nativescript-angular@6940955
File tree
Expand file treeCollapse file tree
Open diff view settings
nativescript-angular/forms/value-accessors
Expand file treeCollapse file tree
Open diff view settings
Collapse file
Copy file name to clipboardExpand all lines: nativescript-angular/forms/value-accessors/base-value-accessor.ts +8-2Lines changed: 8 additions & 2 deletions | Original file line number | Diff line number | Diff line change |
|---|
|
1 | 1 | import { ControlValueAccessor } from "@angular/forms"; |
2 | | -import { View } from "tns-core-modules/ui/core/view"; |
| 2 | +import { View, unsetValue } from "tns-core-modules/ui/core/view"; |
| 3 | + |
| 4 | +import { isBlank } from "../../lang-facade"; |
3 | 5 |
|
4 | 6 | export class BaseValueAccessor<TView extends View> implements ControlValueAccessor { |
5 | 7 | private pendingChangeNotification: any = 0; |
@@ -28,5 +30,9 @@ export class BaseValueAccessor<TView extends View> implements ControlValueAccess |
28 | 30 | this.view.isEnabled = !isDisabled; |
29 | 31 | } |
30 | 32 |
|
31 | | - writeValue(_: any) { } |
| 33 | + writeValue(_: any) {} |
| 34 | + |
| 35 | + protected normalizeValue(value: any): any { |
| 36 | + return isBlank(value) ? unsetValue : value; |
| 37 | + } |
32 | 38 | } |
Collapse file
Copy file name to clipboardExpand all lines: nativescript-angular/forms/value-accessors/checked-value-accessor.ts +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -34,6 +34,7 @@ export class CheckedValueAccessor extends BaseValueAccessor<Switch> { // tslint: |
34 | 34 | } |
35 | 35 |
|
36 | 36 | writeValue(value: any): void { |
37 | | - this.view.checked = value; |
| 37 | + const normalized = super.normalizeValue(value); |
| 38 | + this.view.checked = normalized; |
38 | 39 | } |
39 | 40 | } |
Collapse file
Copy file name to clipboardExpand all lines: nativescript-angular/forms/value-accessors/date-value-accessor.ts +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -34,6 +34,7 @@ export class DateValueAccessor extends BaseValueAccessor<DatePicker> { // tslint |
34 | 34 | } |
35 | 35 |
|
36 | 36 | writeValue(value: any): void { |
37 | | - this.view.date = value; |
| 37 | + const normalized = super.normalizeValue(value); |
| 38 | + this.view.date = normalized; |
38 | 39 | } |
39 | 40 | } |
Collapse file
Copy file name to clipboardExpand all lines: nativescript-angular/forms/value-accessors/number-value-accessor.ts +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -33,6 +33,7 @@ export class NumberValueAccessor extends BaseValueAccessor<Slider> { // tslint:d |
33 | 33 | } |
34 | 34 |
|
35 | 35 | writeValue(value: any): void { |
36 | | - this.view.value = value; |
| 36 | + const normalized = super.normalizeValue(value); |
| 37 | + this.view.value = normalized; |
37 | 38 | } |
38 | 39 | } |
Collapse file
Copy file name to clipboardExpand all lines: nativescript-angular/forms/value-accessors/selectedIndex-value-accessor.ts +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -50,7 +50,8 @@ export class SelectedIndexValueAccessor extends BaseValueAccessor<SelectableView |
50 | 50 | private viewInitialized: boolean; |
51 | 51 |
|
52 | 52 | writeValue(value: any): void { |
53 | | - this.value = value; |
| 53 | + const normalized = super.normalizeValue(value); |
| 54 | + this.value = normalized; |
54 | 55 |
|
55 | 56 | if (this.viewInitialized) { |
56 | 57 | this.view.selectedIndex = this.value; |
|
Collapse file
Copy file name to clipboardExpand all lines: nativescript-angular/forms/value-accessors/text-value-accessor.ts +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -48,6 +48,7 @@ export class TextValueAccessor extends BaseValueAccessor<TextView> { // tslint:d |
48 | 48 | } |
49 | 49 |
|
50 | 50 | writeValue(value: any): void { |
51 | | - this.view.text = value; |
| 51 | + const normalized = super.normalizeValue(value); |
| 52 | + this.view.text = normalized; |
52 | 53 | } |
53 | 54 | } |
Collapse file
Copy file name to clipboardExpand all lines: nativescript-angular/forms/value-accessors/time-value-accessor.ts +2-1Lines changed: 2 additions & 1 deletion | Original file line number | Diff line number | Diff line change |
|---|
@@ -36,6 +36,7 @@ export class TimeValueAccessor extends BaseValueAccessor<TimePicker> { // tslint |
36 | 36 | } |
37 | 37 |
|
38 | 38 | writeValue(value: any): void { |
39 | | - this.view.time = value; |
| 39 | + const normalized = super.normalizeValue(value); |
| 40 | + this.view.time = normalized; |
40 | 41 | } |
41 | 42 | } |