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 |
|
6 | Helps to implement swipeable pages. `PageSlider` is controlled with `selectedPage` prop component and
|
7 | can work in two modes: `page` when page occupies whole width of the screen and `card` when
|
8 | adjacent pages are visible at sides.
|
9 |
|
10 | <img src="https://media.giphy.com/media/IgX3ycAhBlONUdl9zd/giphy.gif" />
|
11 |
|
12 | ## Installation
|
13 |
|
14 | Using yarn
|
15 |
|
16 | ```sh
|
17 | yarn add @pietile-native-kit/page-slider
|
18 | ```
|
19 |
|
20 | or using npm
|
21 |
|
22 | ```sh
|
23 | npm 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
|
29 | with a view and you can safely use all available space in it. `PageSlider` is controlled so you should
|
30 | pass at least `selectedPage` and implement `onSelectedPageChange`. There is also optional `onCurrentPageChange`
|
31 | callback 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
|
37 | import React, { useState } from 'react';
|
38 |
|
39 | import { PageSlider } from '@pietile-native-kit/page-slider';
|
40 | import { StyleSheet, Text, View } from 'react-native';
|
41 |
|
42 | function 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 |
|
64 | const 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 |
|
95 | Pietile PageSlider is MIT License.
|