1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
| const OPEN_TYPES = {
| 'navigate': 'navigateTo',
| 'redirect': 'redirectTo',
| 'switchTab': 'switchTab',
| 'reLaunch': 'reLaunch',
| 'navigateBack': 'navigateBack'
| }
|
| function getNavigator (weex, uni) {
| return {
| name: 'Navigator',
| props: {
| url: {
| type: String,
| default: ''
| },
| openType: {
| type: String,
| default: 'navigate',
| validator (value) {
| return !!OPEN_TYPES[value]
| }
| },
| delta: {
| type: Number,
| default: 1
| },
| animationType: {
| type: String,
| default: 'pop-in/out'
| },
| animationTime: {
| type: Number,
| default: 300
| },
| hoverClass: {
| type: String,
| default: 'navigator-hover'
| },
| hoverStopPropagation: {
| type: Boolean,
| default: false
| },
| hoverStartTime: {
| type: [Number, String],
| default: 50
| },
| hoverStayTime: {
| type: [Number, String],
| default: 600
| }
| },
| methods: {
| _click: function _click () {
| if (this.openType === 'navigateBack') {
| return uni.navigateBack({
| delta: this.delta
| })
| }
| if (!this.url) {
| console.error(
| '<navigator/> should have url attribute when using navigateTo, redirectTo, reLaunch or switchTab'
| )
| return
| }
| uni[OPEN_TYPES[this.openType]]({
| url: this.url
| })
| }
| },
| render (createElement) {
| const _vm = this
| return createElement('view', _vm._g({
| attrs: {
| 'hoverClass': _vm.hoverClass,
| 'hoverStopPropagation': _vm.hoverStopPropagation,
| 'hoverStartTime': _vm.hoverStartTime,
| 'hoverStayTime': _vm.hoverStayTime
| },
| on: {
| 'click': _vm._click
| }
| }, _vm.$listeners), [_vm._t('default')], 2)
| },
| style: {
| 'navigator-hover': {
| 'backgroundColor': 'rgba(0,0,0,0.1)',
| 'opacity': 0.7
| }
| }
| }
| }
|
| export default function init (Vue, weex, instanceContext) {
| Vue.component('navigator', getNavigator(weex, instanceContext.uni))
| }
|
|