1
1
import React , { Component } from 'react' ;
2
2
import { ActivityIndicator } from 'react-native' ;
3
- import { TabController , Colors , View , Text , Image , Assets , Button } from 'react-native-ui-lib' ; //eslint-disable-line
3
+ import {
4
+ TabController ,
5
+ Colors ,
6
+ View ,
7
+ Text ,
8
+ Button
9
+ } from 'react-native-ui-lib' ; //eslint-disable-line
4
10
import { gestureHandlerRootHOC } from 'react-native-gesture-handler' ;
5
11
import _ from 'lodash' ;
6
12
7
13
import Tab1 from './tab1' ;
8
14
import Tab2 from './tab2' ;
9
15
import Tab3 from './tab3' ;
10
16
11
- const TABS = [ 'Home' , 'Posts' , 'Reviews' , 'Videos' , 'Photos' , 'Events' , 'About' , 'Community' , 'Groups' , 'Offers' ] ;
17
+ const TABS = [
18
+ 'Home' ,
19
+ 'Posts' ,
20
+ 'Reviews' ,
21
+ 'Videos' ,
22
+ 'Photos' ,
23
+ 'Events' ,
24
+ 'About' ,
25
+ 'Community' ,
26
+ 'Groups' ,
27
+ 'Offers'
28
+ ] ;
12
29
13
30
class TabControllerScreen extends Component {
14
31
state = {
15
32
asCarousel : true ,
16
33
centerSelected : false ,
34
+ fewItems : false ,
17
35
selectedIndex : 0 ,
18
36
items : _ . chain ( TABS )
19
37
. map ( ( tab ) => ( { label : tab , key : tab } ) )
@@ -39,10 +57,32 @@ class TabControllerScreen extends Component {
39
57
const { tabsCount} = this . state ;
40
58
41
59
if ( tabsCount < 6 ) {
42
- this . setState ( { tabsCount : tabsCount + 1 , key : Date . now ( ) , selectedIndex : tabsCount } ) ;
60
+ this . setState ( {
61
+ tabsCount : tabsCount + 1 ,
62
+ key : Date . now ( ) ,
63
+ selectedIndex : tabsCount
64
+ } ) ;
43
65
}
44
66
} ;
45
67
68
+ toggleItemsCount = ( ) => {
69
+ const { fewItems} = this . state ;
70
+
71
+ let items ;
72
+ if ( fewItems ) {
73
+ items = _ . chain ( TABS )
74
+ . map ( ( tab ) => ( { label : tab , key : tab } ) )
75
+ . value ( ) ;
76
+ } else {
77
+ items = _ . chain ( TABS )
78
+ . take ( 3 )
79
+ . map ( ( tab ) => ( { label : tab , key : tab } ) )
80
+ . value ( ) ;
81
+ }
82
+
83
+ this . setState ( { fewItems : ! fewItems , items, key : Date . now ( ) } ) ;
84
+ } ;
85
+
46
86
toggleCarouselMode = ( ) => {
47
87
this . setState ( {
48
88
asCarousel : ! this . state . asCarousel ,
@@ -84,7 +124,12 @@ class TabControllerScreen extends Component {
84
124
< TabController . TabPage index = { 1 } >
85
125
< Tab2 />
86
126
</ TabController . TabPage >
87
- < TabController . TabPage index = { 2 } lazy lazyLoadTime = { 1500 } renderLoading = { this . renderLoadingPage } >
127
+ < TabController . TabPage
128
+ index = { 2 }
129
+ lazy
130
+ lazyLoadTime = { 1500 }
131
+ renderLoading = { this . renderLoadingPage }
132
+ >
88
133
< Tab3 />
89
134
</ TabController . TabPage >
90
135
@@ -102,14 +147,21 @@ class TabControllerScreen extends Component {
102
147
}
103
148
104
149
render ( ) {
105
- const { key, selectedIndex, asCarousel, centerSelected, items} = this . state ;
150
+ const {
151
+ key,
152
+ selectedIndex,
153
+ asCarousel,
154
+ centerSelected,
155
+ fewItems,
156
+ items
157
+ } = this . state ;
106
158
return (
107
159
< View flex bg-grey70 >
108
160
< TabController
109
161
key = { key }
110
162
asCarousel = { asCarousel }
111
163
selectedIndex = { selectedIndex }
112
- onChangeIndex = { this . onChangeIndex }
164
+ onChangeIndex = { this . onChangeIndex }
113
165
items = { items }
114
166
>
115
167
< TabController . TabBar
@@ -130,6 +182,14 @@ class TabControllerScreen extends Component {
130
182
{ this . renderTabPages ( ) }
131
183
</ TabController >
132
184
< View absB left margin-20 marginB-100 style = { { zIndex : 1 } } >
185
+ < Button
186
+ bg-green10 = { ! fewItems }
187
+ bg-green30 = { fewItems }
188
+ label = { fewItems ? 'Show Many Items' : 'Show Few Items' }
189
+ marginB-12
190
+ size = "small"
191
+ onPress = { this . toggleItemsCount }
192
+ />
133
193
< Button
134
194
bg-grey20 = { ! asCarousel }
135
195
bg-green30 = { asCarousel }
0 commit comments