Skip to content

Commit 5ecacd0

Browse files
author
Nedyalko Nikolov
committed
Merge pull request #228 from NativeScript/nnikolov/TabViewExample
Added example for TabView.
2 parents 2504d05 + bf1ffcc commit 5ecacd0

File tree

7 files changed

+57
-16
lines changed

7 files changed

+57
-16
lines changed

ng-sample/app/app.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import trace = require("trace");
1717
trace.enable();
1818

1919
import {RendererTest} from './examples/renderer-test';
20+
import {TabViewTest} from './examples/tab-view/tab-view-test';
2021
import {Benchmark} from './performance/benchmark';
2122
import {ListTest} from './examples/list/list-test';
2223
import {ListTestAsync} from "./examples/list/list-test-async";
@@ -27,7 +28,8 @@ import {ModalTest} from "./examples/modal/modal-test";
2728
import {PlatfromDirectivesTest} from "./examples/platform-directives/platform-directives-test";
2829
import {RouterOutletTest} from "./examples/navigation/router-outlet-test";
2930

30-
nativeScriptBootstrap(RendererTest);
31+
//nativeScriptBootstrap(RendererTest);
32+
nativeScriptBootstrap(TabViewTest);
3133
//nativeScriptBootstrap(Benchmark);
3234
//nativeScriptBootstrap(ListTest);
3335
//nativeScriptBootstrap(ListTestAsync);
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<TabView selectedIndex="1" selectedColor="#FF0000">
2+
<StackLayout *tabItem="{title: 'Profile', iconSource: '~/icon.png'}" >
3+
<Label text="First tab item"></Label>
4+
</StackLayout>
5+
<StackLayout *tabItem="{title: 'Stats'}">
6+
<Label text="Second tab item"></Label>
7+
</StackLayout>
8+
<StackLayout *tabItem="{title: 'Settings'}">
9+
<Label text="Third tab item"></Label>
10+
</StackLayout>
11+
</TabView>
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import {Component} from '@angular/core';
2+
3+
@Component({
4+
selector: 'tab-view-test',
5+
templateUrl: './examples/tab-view/tab-view-test.html'
6+
})
7+
export class TabViewTest {
8+
//public selectedIndex: number;
9+
10+
constructor() {
11+
//this.selectedIndex = 1;
12+
}
13+
}

ng-sample/app/icon.png

10.7 KB
Loading
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
import {isBlank, isNumber} from '@angular/core/src/facade/lang';
2+
3+
export function convertToInt(value): number {
4+
let normalizedValue;
5+
if (isBlank(value)) {
6+
normalizedValue = 0;
7+
} else {
8+
if (isNumber(value)) {
9+
normalizedValue = value;
10+
} else {
11+
let parsedValue = parseInt(value.toString());
12+
normalizedValue = isNaN(parsedValue) ? 0 : parsedValue;
13+
}
14+
}
15+
return Math.round(normalizedValue);
16+
}

src/nativescript-angular/directives/tab-view.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
import {ElementRef, Directive, Input, TemplateRef, ViewContainerRef} from "@angular/core";
22
import {TabView, TabViewItem} from "ui/tab-view";
3+
import * as utils from '../common/utils';
4+
import {isBlank} from '@angular/core/src/facade/lang';
35

46
@Directive({
57
selector: 'TabView',
@@ -14,8 +16,9 @@ export class TabViewDirective {
1416
return this._selectedIndex;
1517
}
1618

17-
set selectedIndex(value: number) {
18-
this._selectedIndex = value;
19+
set selectedIndex(value) {
20+
debugger;
21+
this._selectedIndex = utils.convertToInt(value);
1922
if (this.viewInitialized) {
2023
this.tabView.selectedIndex = this._selectedIndex;
2124
}
@@ -27,7 +30,11 @@ export class TabViewDirective {
2730

2831
ngAfterViewInit() {
2932
this.viewInitialized = true;
30-
this.tabView.selectedIndex = this._selectedIndex;
33+
debugger;
34+
console.log("this._selectedIndex: " + this._selectedIndex);
35+
if (!isBlank(this._selectedIndex)) {
36+
this.tabView.selectedIndex = this._selectedIndex;
37+
}
3138
}
3239
}
3340

@@ -49,6 +56,8 @@ export class TabViewItemDirective {
4956
ngOnInit() {
5057
this.item = new TabViewItem();
5158
this.item.title = this.config.title;
59+
60+
this.item.iconSource = this.config.iconSource;
5261

5362
const viewRef = this.viewContainer.createEmbeddedView(this.templateRef);
5463
//Filter out text nodes, etc

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

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import {NG_VALUE_ACCESSOR} from '@angular/common/src/forms/directives/control_va
33
import {isBlank, isNumber} from '@angular/core/src/facade/lang';
44
import {BaseValueAccessor} from './base-value-accessor';
55
import {View} from "ui/core/view";
6+
import * as utils from '../common/utils';
67

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

@@ -33,18 +34,7 @@ export class SelectedIndexValueAccessor extends BaseValueAccessor<SelectableView
3334
private viewInitialized: boolean;
3435

3536
writeValue(value: any): void {
36-
let normalizedValue;
37-
if (isBlank(value)) {
38-
normalizedValue = 0;
39-
} else {
40-
if (isNumber(value)) {
41-
normalizedValue = value;
42-
} else {
43-
let parsedValue = parseInt(value);
44-
normalizedValue = isNaN(parsedValue) ? 0 : parsedValue;
45-
}
46-
}
47-
this._normalizedValue = Math.round(normalizedValue);
37+
this._normalizedValue = utils.convertToInt(value);
4838
if (this.viewInitialized) {
4939
this.view.selectedIndex = this._normalizedValue;
5040
}

0 commit comments

Comments
 (0)