UNPKG

3.25 kBMarkdownView Raw
1# PageSlider
2
3[![npm version](https://badgen.net/npm/v/@pietile-native-kit/page-slider?color=56C838)](https://www.npmjs.com/package/@pietile-native-kit/page-slider)
4[![install size](https://badgen.net/packagephobia/install/@pietile-native-kit/page-slider)](https://packagephobia.now.sh/result?p=@pietile-native-kit/page-slider)
5
6Helps to implement swipeable pages. `PageSlider` is controlled with `selectedPage` prop component and
7can work in two modes: `page` when page occupies whole width of the screen and `card` when
8adjacent pages are visible at sides.
9
10<img src="https://media.giphy.com/media/IgX3ycAhBlONUdl9zd/giphy.gif" />
11
12## Installation
13
14Using yarn
15
16```sh
17yarn add @pietile-native-kit/page-slider
18```
19
20or using npm
21
22```sh
23npm install -S @pietile-native-kit/page-slider
24```
25
26## Usage
27
28`PageSlider` should occupy whole width of the screen. Each element inside will be wrapped
29with a view and you can safely use all available space in it. `PageSlider` is controlled so you should
30pass at least `selectedPage` and implement `onSelectedPageChange`. There is also optional `onCurrentPageChange`
31callback that fires currently active page (for example while the page is being dragged). By default
32`PageSlider` works in `page` mode.
33
34## Example
35
36```jsx
37import React, { useState } from 'react';
38
39import { PageSlider } from '@pietile-native-kit/page-slider';
40import { StyleSheet, Text, View } from 'react-native';
41
42function PageSliderExample() {
43 const [selectedPage, setSelectedPage] = useState(0);
44
45 return (
46 <PageSlider
47 style={styles.pageSlider}
48 selectedPage={selectedPage}
49 onSelectedPageChange={setSelectedPage}
50 >
51 <View style={[styles.page, { backgroundColor: 'red' }]}>
52 <Text>1</Text>
53 </View>
54 <View style={[styles.page, { backgroundColor: 'orange' }]}>
55 <Text>2</Text>
56 </View>
57 <View style={[styles.page, { backgroundColor: 'yellow' }]}>
58 <Text>3</Text>
59 </View>
60 </PageSlider>
61 );
62}
63
64const styles = StyleSheet.create({
65 pageSlider: {
66 width: '100%',
67 },
68 page: {
69 alignItems: 'center',
70 height: 128,
71 justifyContent: 'center',
72 padding: 16,
73 },
74});
75```
76
77## API
78
79### Properties
80
81| name | description | type | default |
82| :--------------------- | :---------------------------------------- | -------: | :------ |
83| children | Content | Node | - |
84| mode | "page" or "card" | string | page |
85| contentPaddingVertical | Vertical padding of content container | number | - |
86| pageMargin | Space between pages | number | 8 |
87| peek | Space between page and edge of the screen | number | 24 |
88| selectedPage | Selected page index | number | - |
89| style | Style of component itself | style | - |
90| onCurrentPageChange | Fires when current page changed | function | - |
91| onSelectedPageChange | Fires when selected page changed | function | - |
92
93## License
94
95Pietile PageSlider is MIT License.