Skip to content

Commit 2b0aa04

Browse files
committed
Test value accessors without UI. writeValue, etc.
1 parent 226d304 commit 2b0aa04

File tree

8 files changed

+196
-41
lines changed

8 files changed

+196
-41
lines changed

src/nativescript-angular/value-accessors/base-value-accessor.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
1+
import {View} from "ui/core/view";
12
import {ControlValueAccessor} from 'angular2/src/common/forms/directives/control_value_accessor';
23

3-
export class BaseValueAccessor implements ControlValueAccessor {
4+
export class BaseValueAccessor<TView> implements ControlValueAccessor {
5+
constructor(public view: TView) { }
6+
47
onChange = (_) => { };
58
private pendingChangeNotification: number = 0;
69

@@ -23,4 +26,4 @@ export class BaseValueAccessor implements ControlValueAccessor {
2326
registerOnTouched(fn: () => void): void {
2427
//
2528
}
26-
}
29+
}

src/nativescript-angular/value-accessors/checked-value-accessor.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {Directive, ElementRef, Renderer, Self, forwardRef, provide} from 'angula
22
import {NG_VALUE_ACCESSOR} from 'angular2/src/common/forms/directives/control_value_accessor';
33
import {isBlank} from 'angular2/src/facade/lang';
44
import {BaseValueAccessor} from './base-value-accessor';
5+
import {Switch} from "ui/switch";
56

67
const CHECKED_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forwardRef(() => CheckedValueAccessor), multi: true });
78

@@ -19,25 +20,24 @@ const CHECKED_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forward
1920
host: { '(checkedChange)': 'onChange($event.value)' },
2021
bindings: [CHECKED_VALUE_ACCESSOR]
2122
})
22-
export class CheckedValueAccessor extends BaseValueAccessor {
23+
export class CheckedValueAccessor extends BaseValueAccessor<Switch> {
2324
onTouched = () => { };
2425

25-
constructor(private _renderer: Renderer, private _elementRef: ElementRef) {
26-
super();
26+
constructor(elementRef: ElementRef) {
27+
super(elementRef.nativeElement);
2728
}
2829

2930
writeValue(value: any): void {
3031
let normalizedValue = false;
3132
if (!isBlank(value)) {
3233
if (typeof value === 'string') {
3334
normalizedValue = value.toLowerCase() === 'true' ? true : false;
34-
}
35-
else {
35+
} else {
3636
normalizedValue = !!value;
3737
}
3838
}
39-
this._elementRef.nativeElement.checked = normalizedValue;
39+
this.view.checked = normalizedValue;
4040
}
4141

4242
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
43-
}
43+
}

src/nativescript-angular/value-accessors/date-value-accessor.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {Directive, ElementRef, Renderer, Self, forwardRef, provide} from 'angula
22
import {NG_VALUE_ACCESSOR} from 'angular2/src/common/forms/directives/control_value_accessor';
33
import {isBlank, isDate} from 'angular2/src/facade/lang';
44
import {BaseValueAccessor} from './base-value-accessor';
5+
import {DatePicker} from "ui/date-picker";
56

67
const DATE_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forwardRef(() => DateValueAccessor), multi: true });
78

@@ -19,11 +20,11 @@ const DATE_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forwardRef
1920
host: { '(dateChange)': 'onChange($event.value)' },
2021
bindings: [DATE_VALUE_ACCESSOR]
2122
})
22-
export class DateValueAccessor extends BaseValueAccessor {
23+
export class DateValueAccessor extends BaseValueAccessor<DatePicker> {
2324
onTouched = () => { };
2425

25-
constructor(private _renderer: Renderer, private _elementRef: ElementRef) {
26-
super();
26+
constructor(elementRef: ElementRef) {
27+
super(elementRef.nativeElement);
2728
}
2829

2930
writeValue(value: any): void {
@@ -36,8 +37,8 @@ export class DateValueAccessor extends BaseValueAccessor {
3637
normalizedValue = new Date();
3738
}
3839
}
39-
this._elementRef.nativeElement.date = normalizedValue;
40+
this.view.date = normalizedValue;
4041
}
4142

4243
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
43-
}
44+
}

src/nativescript-angular/value-accessors/number-value-accessor.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {Directive, ElementRef, Renderer, Self, forwardRef, provide} from 'angula
22
import {NG_VALUE_ACCESSOR} from 'angular2/src/common/forms/directives/control_value_accessor';
33
import {isBlank, isNumber} from 'angular2/src/facade/lang';
44
import {BaseValueAccessor} from './base-value-accessor';
5+
import {Slider} from "ui/slider";
56

67
const NUMBER_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forwardRef(() => NumberValueAccessor), multi: true });
78

@@ -19,29 +20,27 @@ const NUMBER_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forwardR
1920
host: { '(valueChange)': 'onChange($event.value)' },
2021
bindings: [NUMBER_VALUE_ACCESSOR]
2122
})
22-
export class NumberValueAccessor extends BaseValueAccessor {
23+
export class NumberValueAccessor extends BaseValueAccessor<Slider> {
2324
onTouched = () => { };
2425

25-
constructor(private _renderer: Renderer, private _elementRef: ElementRef) {
26-
super();
26+
constructor(elementRef: ElementRef) {
27+
super(elementRef.nativeElement);
2728
}
2829

2930
writeValue(value: any): void {
3031
let normalizedValue;
3132
if (isBlank(value)) {
3233
normalizedValue = 0;
33-
}
34-
else {
34+
} else {
3535
if (isNumber(value)) {
3636
normalizedValue = value;
37-
}
38-
else {
37+
} else {
3938
let parsedValue = Number(value);
4039
normalizedValue = isNaN(parsedValue) ? 0 : parsedValue;
4140
}
4241
}
43-
this._elementRef.nativeElement.value = normalizedValue;
42+
this.view.value = normalizedValue;
4443
}
4544

4645
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
47-
}
46+
}

src/nativescript-angular/value-accessors/selectedIndex-value-accessor.ts

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ import {Directive, ElementRef, Renderer, Self, forwardRef, provide} from 'angula
22
import {NG_VALUE_ACCESSOR} from 'angular2/src/common/forms/directives/control_value_accessor';
33
import {isBlank, isNumber} from 'angular2/src/facade/lang';
44
import {BaseValueAccessor} from './base-value-accessor';
5+
import {View} from "ui/core/view";
56

67
const SELECTED_INDEX_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forwardRef(() => SelectedIndexValueAccessor), multi: true });
78

9+
type SelectableView = {selectedIndex: number} & View;
10+
811
/**
912
* The accessor for setting a selectedIndex and listening to changes that is used by the
1013
* {@link NgModel} directives.
@@ -19,29 +22,27 @@ const SELECTED_INDEX_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting:
1922
host: { '(selectedIndexChange)': 'onChange($event.value)' },
2023
bindings: [SELECTED_INDEX_VALUE_ACCESSOR]
2124
})
22-
export class SelectedIndexValueAccessor extends BaseValueAccessor {
25+
export class SelectedIndexValueAccessor extends BaseValueAccessor<SelectableView> {
2326
onTouched = () => { };
2427

25-
constructor(private _renderer: Renderer, private _elementRef: ElementRef) {
26-
super();
28+
constructor(elementRef: ElementRef) {
29+
super(elementRef.nativeElement);
2730
}
2831

2932
writeValue(value: any): void {
3033
let normalizedValue;
3134
if (isBlank(value)) {
3235
normalizedValue = 0;
33-
}
34-
else {
36+
} else {
3537
if (isNumber(value)) {
3638
normalizedValue = value;
37-
}
38-
else {
39+
} else {
3940
let parsedValue = parseInt(value);
4041
normalizedValue = isNaN(parsedValue) ? 0 : parsedValue;
4142
}
4243
}
43-
this._elementRef.nativeElement.selectedIndex = Math.round(normalizedValue);
44+
this.view.selectedIndex = Math.round(normalizedValue);
4445
}
4546

4647
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
47-
}
48+
}

src/nativescript-angular/value-accessors/text-value-accessor.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ import {Directive, ElementRef, Renderer, Self, forwardRef, provide} from 'angula
22
import {NG_VALUE_ACCESSOR} from 'angular2/src/common/forms/directives/control_value_accessor';
33
import {isBlank} from 'angular2/src/facade/lang';
44
import {BaseValueAccessor} from './base-value-accessor'
5+
import {View} from "ui/core/view";
56

67
const TEXT_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forwardRef(() => TextValueAccessor), multi: true });
78

9+
type TextView = {text: string} & View;
10+
811
/**
912
* The accessor for writing a text and listening to changes that is used by the
1013
* {@link NgModel} directives.
@@ -19,16 +22,16 @@ const TEXT_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forwardRef
1922
host: { '(textChange)': 'onChange($event.value)' },
2023
bindings: [TEXT_VALUE_ACCESSOR]
2124
})
22-
export class TextValueAccessor extends BaseValueAccessor {
25+
export class TextValueAccessor extends BaseValueAccessor<TextView> {
2326
onTouched = () => { };
2427

25-
constructor(private _renderer: Renderer, private _elementRef: ElementRef) {
26-
super();
28+
constructor(elementRef: ElementRef) {
29+
super(elementRef.nativeElement);
2730
}
2831

2932
writeValue(value: any): void {
3033
var normalizedValue = isBlank(value) ? '' : value.toString();
31-
this._elementRef.nativeElement.text = normalizedValue;
34+
this.view.text = normalizedValue;
3235
}
3336

3437
registerOnTouched(fn: () => void): void { this.onTouched = fn; }

src/nativescript-angular/value-accessors/time-value-accessor.ts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import {Directive, ElementRef, Renderer, Self, forwardRef, provide} from 'angula
22
import {NG_VALUE_ACCESSOR} from 'angular2/src/common/forms/directives/control_value_accessor';
33
import {isBlank, isDate} from 'angular2/src/facade/lang';
44
import {BaseValueAccessor} from './base-value-accessor';
5+
import {TimePicker} from "ui/time-picker";
56

67
const TIME_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forwardRef(() => TimeValueAccessor), multi: true });
78

@@ -19,11 +20,11 @@ const TIME_VALUE_ACCESSOR = provide(NG_VALUE_ACCESSOR, { useExisting: forwardRef
1920
host: { '(timeChange)': 'onChange($event.value)' },
2021
bindings: [TIME_VALUE_ACCESSOR]
2122
})
22-
export class TimeValueAccessor extends BaseValueAccessor {
23+
export class TimeValueAccessor extends BaseValueAccessor<TimePicker> {
2324
onTouched = () => { };
2425

25-
constructor(private _renderer: Renderer, private _elementRef: ElementRef) {
26-
super();
26+
constructor(elementRef: ElementRef) {
27+
super(elementRef.nativeElement);
2728
}
2829

2930
writeValue(value: any): void {
@@ -36,8 +37,8 @@ export class TimeValueAccessor extends BaseValueAccessor {
3637
normalizedValue = new Date();
3738
}
3839
}
39-
this._elementRef.nativeElement.time = normalizedValue;
40+
this.view.time = normalizedValue;
4041
}
4142

4243
registerOnTouched(fn: () => void): void { this.onTouched = fn; }
43-
}
44+
}

0 commit comments

Comments
 (0)