Skip to content

Commit 4df6f67

Browse files
Started Componet
1 parent 8d30675 commit 4df6f67

File tree

4 files changed

+140
-11
lines changed

4 files changed

+140
-11
lines changed

.DS_Store

6 KB
Binary file not shown.

components/ScrollMonthCalender/index.js

+90-10
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,98 @@ import React, {Component} from 'react';
1010
import {Platform, StyleSheet, Text, View, TouchableOpacity} from 'react-native';
1111
import style from './style'
1212

13-
type Props = {};
14-
export default class NumberView extends Component<Props> {
15-
render() {
13+
function ScrollMonthCalender({history, enableDefaultStyles , onMonthChange}){
14+
const scrollViewRef = useRef();
15+
const [monthNumber, setMonthNumber] = useState(0)
16+
const [heightArray , setArray ]= useState([]);
17+
let offset= 0
18+
useEffect(()=>{
19+
if(monthNumber>11)
20+
setMonthNumber(0)
21+
scrollViewRef.current.scrollTo({
22+
x: heightArray[monthNumber]-100,
23+
y:0,
24+
animated: true,
25+
});
26+
onMonthChange()
27+
},[monthNumber])
28+
1629
return (
17-
30+
<View style={styles.mainView}>
31+
<View style= {styles.flexRow} >
32+
<ScrollView
33+
horizontal
34+
showsHorizontalScrollIndicator={false}
35+
scrollEventThrottle={0}
36+
ref={scrollViewRef}
37+
onMomentumScrollBegin={
38+
(e)=>{
39+
var currentOffset = e.nativeEvent.contentOffset.x;
40+
var direction = currentOffset > offset ? 'left' : 'right';
41+
offset = currentOffset;
42+
if(direction==="left"){
43+
setMonthNumber(monthNumber+1)
44+
}
45+
}
46+
}
47+
>
48+
{
49+
history.map((item , i)=>{
50+
if(i===0) {
51+
return (<View key={i}
52+
style={styles.monthView}
53+
onLayout={event => {
54+
const layout = event.nativeEvent.layout;
55+
heightArray[i] = layout.x
56+
}}>
57+
<Text style={[styles.monthText,{marginLeft:100,opacity:i==monthNumber?1:0.5 }]}>{item.month}</Text>
58+
</View>)
59+
}
60+
if(i === history.length - 1) {
61+
return (<View key={i}
62+
style={styles.monthView}
63+
onLayout={event => {
64+
const layout = event.nativeEvent.layout;
65+
heightArray[i] = layout.x
66+
}}>
67+
<Text style={[styles.monthText,{marginRight:100, opacity:i==monthNumber?1:0.5 }]}>{item.month}</Text>
68+
</View>)
69+
}
70+
else
71+
return (<View key={i}
72+
style={styles.monthView}
73+
onLayout={event => {
74+
const layout = event.nativeEvent.layout;
75+
heightArray[i] = layout.x
76+
}}>
77+
<Text style={[styles.monthText, {opacity:i==monthNumber?1:0.5 }]}>{item.month}</Text>
78+
</View>)
79+
})
80+
}
81+
</ScrollView>
82+
</View>
83+
<View style={{flex:1, alignSelf:"center"}}>
84+
<Text style= {styles.task}>{history[monthNumber]?history[monthNumber].task:0 } Tasks Completed </Text>
85+
</View>
86+
</View>
1887
);
19-
}
2088
}
2189

22-
NumberView.defaultProps = {
23-
initialValue:0,
90+
ScrollMonthCalender.defaultProps = {
91+
history:[{month:"January", task: 10},
92+
{month:"February", task:20},
93+
{month:"March", task:1},
94+
{month:"April", task:44},
95+
{month:"May", task:77},
96+
{month:"June", task:9},
97+
{month:"July", task:27},
98+
{month:"August", task:0},
99+
{month:"September", task:8},
100+
{month:"October", task:2},
101+
{month:"November", task:7},
102+
{month:"December", task:26}],
24103
enableDefaultStyles:true,
25-
themeColor:false,
26-
maxLimit:false
27-
}
104+
}
105+
106+
107+
export default ScrollMonthCalender
+49
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/**
2+
* Sample React Native App
3+
* https://github.com/facebook/react-native
4+
*
5+
* @format
6+
* @flow
7+
*/
8+
9+
10+
import {StyleSheet} from 'react-native';
11+
12+
const style = StyleSheet.create({
13+
mainView : {
14+
flex:0,
15+
flexGrow:0,
16+
height:80,
17+
marginTop:40,
18+
marginBottom:40,
19+
backgroundColor:'#ffffff',
20+
},
21+
flexRow:{
22+
flexDirection:'row',
23+
},
24+
content:{
25+
width: 150,
26+
fontSize:14,
27+
textAlign:'center',
28+
opacity:1,
29+
fontFamily:"Brother1816-Medium",
30+
paddingTop:15,
31+
},
32+
monthView:{
33+
borderBottomWidth:1,
34+
flexDirection:'row' ,
35+
borderColor:"#F2F2F3",
36+
flexWrap:"wrap",
37+
},
38+
monthText:{
39+
textAlign: 'center',
40+
fontSize: 20,
41+
width: 180,
42+
opacity:0.5,
43+
textAlignVertical:"center",
44+
fontFamily:"Brother1816-Medium",
45+
paddingTop:11,
46+
}
47+
});
48+
49+
export default style;

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"name": "react-native-number-view",
2+
"name": "react-native-scroll-month-calender",
33
"version": "0.0.1",
44
"description": "A simple React Native scroll calender for Months ",
55
"main": "index.js",

0 commit comments

Comments
 (0)