forked from gusgard/react-native-swiper-flatlist
-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
69 lines (64 loc) · 1.73 KB
/
index.js
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
import React from 'react';
import PropTypes from 'prop-types';
import { StyleSheet, TouchableOpacity, View, ViewPropTypes } from 'react-native';
import { colors, vertical, horizontal } from '../../themes';
const styles = StyleSheet.create({
container: {
position: 'absolute',
flexDirection: 'row',
marginVertical: vertical.xxSmall,
justifyContent: 'center',
bottom: 0,
width: '100%',
},
pagination: {
width: horizontal.small,
height: horizontal.small,
borderRadius: 25,
marginHorizontal: horizontal.xSmall,
},
});
const Pagination = ({
size,
paginationIndex,
scrollToIndex,
paginationDefaultColor,
paginationActiveColor,
paginationStyle,
paginationStyleItem,
}) => {
return (
<View style={[styles.container, paginationStyle]}>
{Array.from({ length: size }).map((_, index) => (
<TouchableOpacity
style={[
styles.pagination,
paginationStyleItem,
paginationIndex === index
? { backgroundColor: paginationActiveColor }
: { backgroundColor: paginationDefaultColor },
]}
key={index}
onPress={() => scrollToIndex({ index })}
/>
))}
</View>
);
};
Pagination.propTypes = {
scrollToIndex: PropTypes.func.isRequired,
size: PropTypes.number.isRequired,
paginationIndex: PropTypes.number,
paginationActiveColor: PropTypes.string,
paginationDefaultColor: PropTypes.string,
paginationStyle: ViewPropTypes.style,
paginationStyleItem: ViewPropTypes.style,
};
Pagination.defaultProps = {
paginationIndex: 0,
paginationActiveColor: colors.white,
paginationDefaultColor: colors.gray,
paginationStyle: {},
paginationStyleItem: {},
};
export default Pagination;