Skip to content

Commit f30baca

Browse files
committed
Added TabView compoenents, needs some clean up
1 parent 8a2ce67 commit f30baca

File tree

8 files changed

+144
-5
lines changed

8 files changed

+144
-5
lines changed

nativescript-vue/dist/index.js

Lines changed: 57 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nativescript-vue/dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

nativescript-vue/platform/nativescript/element-registry.js

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,12 +116,17 @@ registerElement("Switch", () => require("ui/switch").Switch, {
116116
event: 'checkedChange'
117117
}
118118
});
119-
registerElement("TabView", () => require("ui/tab-view").TabView, {
119+
120+
registerElement("NativeTabView", () => require("ui/tab-view").TabView, {
120121
model: {
121122
prop: 'selectedIndex',
122123
event: 'selectedIndexChange'
123124
}
124125
});
126+
registerElement("NativeTabViewItem", () => require("ui/tab-view").TabViewItem, {
127+
skipAddToDom: true
128+
});
129+
125130
registerElement("TextField", () => require("ui/text-field").TextField);
126131
registerElement("TextView", () => require("ui/text-view").TextView);
127132
registerElement("TimePicker", () => require("ui/time-picker").TimePicker, {
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1+
console.keys = function (object) {
2+
console.dir(Object.keys(object))
3+
}
4+
15
export {default} from './runtime/index'
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
import ListView from './list-view'
2+
import TabView from './tab-view'
3+
import TabViewItem from './tab-view-item'
24

35
export default {
4-
ListView
6+
ListView,
7+
TabView,
8+
TabViewItem,
59
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import {warn} from 'core/util/debug'
2+
3+
export default {
4+
name: 'tab-view-item',
5+
6+
template: `<native-tab-view-item ref="tabViewItem"><slot></slot></native-tab-view-item>`,
7+
8+
mounted() {
9+
if (this.$el.childNodes.length > 1) {
10+
warn('TabViewItem should contain only 1 root element', this)
11+
}
12+
13+
let _nativeView = this.$refs.tabViewItem.nativeView
14+
_nativeView.view = this.$el.childNodes[0].nativeView
15+
this.$parent.registerTab(_nativeView)
16+
}
17+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
export default {
2+
name: 'tab-view',
3+
4+
props: ['selectedTab'],
5+
6+
template: `<native-tab-view ref="tabView" v-model="selectedIndex"><slot></slot></native-tab-view>`,
7+
8+
data() {
9+
return {
10+
selectedIndex: 0
11+
}
12+
},
13+
14+
watch: {
15+
'selectedTab'(index) {
16+
this.selectedIndex = index
17+
}
18+
},
19+
20+
methods: {
21+
registerTab(tabView) {
22+
let items = this.$refs.tabView.nativeView.items || []
23+
24+
this.$refs.tabView.setAttribute('items', items.concat([tabView]))
25+
}
26+
}
27+
}

vue-sample/app/app-with-tab-view.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
const Vue = require('nativescript-vue/dist/index')
2+
3+
let app = new Vue({
4+
data: {
5+
selectedTab: 0,
6+
tabs: [
7+
{title: 'First Tab', text: 'im the first tab'},
8+
{title: 'Second Tab', text: 'im the second tab'},
9+
{title: 'Third Tab', text: 'im the third tab'},
10+
]
11+
},
12+
13+
template: `
14+
<page>
15+
<stack-layout>
16+
<button @tap="tabs.push({title: 'added', text: 'added tab'})">Click me!</button>
17+
<tab-view :selectedIndex="selectedTab">
18+
<tab-view-item v-for="(tab, i) in tabs" key="i" :title="tab.title">
19+
<label>{{ tab.text }}</label>
20+
</tab-view-item>
21+
</tab-view>
22+
</stack-layout>
23+
</page>
24+
`,
25+
})
26+
27+
app.$start()

0 commit comments

Comments
 (0)