npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-native-pagination

v1.5.5

Published

The best Pagination component for React Native.

Downloads

2,131

Readme

React Native Pagination

Roadmap

see: ROADMAP.md

Horizontal

To try these out yourself its prudy easy, Just open examples/ios/*.xcodeproj in Xcode, then press Cmd + R; you may edit examples/index.ios.js for switch cases.

Vertical

Getting Started

Installation

  • Install react-native first
$ npm i react-native -g
$ yarn add react-native-pagination
$ cd ReactNativePaginationExample
$ yarn install #(or with npm "npm i react-native-pagination —save")
$ react-native run-ios
  • Initialization of a react-native project
$ react-native init myReactNativePaginationExample
$ cd myReactNativePaginationExample
$ yarn install #(or with npm "npm i && npm i react-native-pagination —save")
$ yarn add react-native-pagination
$ react-native link
$ react-native run-ios

Example

or clone the repo and play with the example project

$ git clone https://github.com/garrettmac/react-native-pagination
$ cd react-native-pagination/ReactNativePaginationExample
$ yarn install
$ react-native link
$ react-native run-ios

one liner

git clone https://github.com/garrettmac/react-native-pagination && cd react-native-pagination/ReactNativePaginationExample && yarn install && react-native link && react-native run-ios

Quick start with ReactNativePaginationExample.

Development

in your project

$ yarn add react-native-pagination
$ react-native link #this makes sure react-native-vector-icons load correctly
$ react-native run-ios

Basic Usage

  • In your myApp/index.ios.js, use:
import React, { Component } from 'react';
import {AppRegistry,StyleSheet,View,FlatList,} from 'react-native';
import ContactItem from './Pages/widgets/ContactItem'; // https://github.com/garrettmac/react-native-pagination/blob/master/ReactNativePaginationExample/Pages/widgets/ContactItem.js
import faker from 'faker';//assuming you have this.
import _ from 'lodash';
import Pagination,{Icon,Dot} from 'react-native-pagination';//{Icon,Dot} also available

//lets use faker to create mock data
let MockPersonList = new _.times(35,(i)=>{
  return {
    id:i,
    index:i,
    name:faker.name.findName(),
    avatar:faker.internet.avatar(),
    group:_.sample(["Family","Friend","Acquaintance","Other"]),
    email:faker.internet.email(),
  }
})

export default class ReactNativePaginationExample extends Component {
  constructor(props){
     super(props);
      this.state = {
        items: MockPersonList,
      };
    }
    //create each list item
  _renderItem = ({item}) => {
    return (<ContactItem index={item.id}
        onPressItem={this.onPressItem.bind(this)}
        name={item.name}
        avatar={item.avatar}
        description={item.email}
        tag={item.group}
        createTagColor
      />)
    };
    //pressed an item
  onPressItem = (item) => console.log("onPressItem:item ",item);

  //map to some od. We use the "id" attribute of each item in our list created in our MockPersonList
  _keyExtractor = (item, index) => item.id;

  // REQUIRED for ReactNativePagination to work correctly
  onViewableItemsChanged = ({ viewableItems, changed }) =>this.setState({viewableItems})

  render() {
    return (
      <View style={[s.container]}>
          <FlatList
            data={this.state.items}
            ref={r=>this.refs=r}//create refrence point to enable scrolling
            keyExtractor={this._keyExtractor}//map your keys to whatever unique ids the have (mine is a "id" prop)
            renderItem={this._renderItem}//render each item
            onViewableItemsChanged={this.onViewableItemsChanged.bind(this)}//need this
          />

          <Pagination
            // dotThemeLight //<--use with backgroundColor:"grey"
            listRef={this.refs}//to allow React Native Pagination to scroll to item when clicked  (so add "ref={r=>this.refs=r}" to your list)
            paginationVisibleItems={this.state.viewableItems}//needs to track what the user sees
            paginationItems={this.state.items}//pass the same list as data
            paginationItemPadSize={3} //num of items to pad above and below your visable items
          />
        </View>
      )
  }
};

const s = StyleSheet.create({
  container: {
    flex: 1,
    // backgroundColor:"grey",//<-- use with "dotThemeLight"
  },
});

AppRegistry.registerComponent('ReactNativePaginationExample', () => App);

Currently only supported for FlatList's

Properties

All properties took text editors auto completion into consideration and follow the basic structure [prefix][body][suffix ] where [component name ][component attribute][continued component attribute / component change] to provide users with the full list of options when working with prefix's without having to revisit the official docs.

Most Common Component Prefix Options:dot, startDot,endDot Most Common Component Body Options:Icon, Font,Style ,Color Most Common Component Suffix Options:Hide, Size,IconFamily ,or NotActive,Active Empty Resulting props like dotIconHide ,startDotIconHide, or startFontSize,endDotStyle ect.

Basic

Basic Props

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| | paginationItems | [] | array |an array pagination Items| |paginationVisibleItems|[]|array|an array pagination visible items obtained by using React Native List Components onViewableItemsChanged callback function (see example) | |dotThemeLight |false|bool| if you pass in the dotThemeLight prop (setting it to true) the pagination dots swaps to a a light theme. By default they are dark. | |horizontal |false|bool| use to alternate between horizontal and vertical (just like you do with your list component) | |dotAnimation|LayoutAnimation.Presets.easeInEaseOut|Animation|dot Animation triggered when navigating| |paginationStyle|{}|style|pagination Styles| |pagingEnabled|false|bool| Enable Paging. This is a prop that is also used in React Native List Components (like FlatList) that gives you that paging effect that stops the scroll on every new page. | |hideEmptyDots|false|bool| Hide Empty Dots Icons| |paginationItemPadSize|3|number|pagination Item Pad Size|

Basic Styles

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| |paginationStyle when horizontal|{height, alignItems:"center" , justifyContent: 'space-between', position:"absolute", top:0, margin:0, bottom:0, right:0, bottom:0, padding:0, flex:1, } | style| default when horizontal| |paginationStyle when not horizontal|{width, alignItems:"center", justifyContent: 'space-between', position:"absolute", margin:0, bottom:10, left:0, right:0, padding:0, flex:1,} | style| default when not horizontal| |textStyle|{}|style object| global style object. Tread lightly it may overlay if you plan to use my default Light/Dark Themes | |dotStyle|{}|style object| addition style to use for pagination dots | |startDotStyle|{}|style object| addition style to use for start dots | |endDotStyle|{}|style object`| addition style to use for end dots |

this uses react-native-vector-icons [checkout here] (https://github.com/oblador/react-native-vector-icons)

Start/End Dots

Start/End Dot Basic Props

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| |startDotIconName (when horizontal)|”chevron-left”|icon name| Icon shown for dot at start of list | |startDotIconName (when vertical)|”chevron-up”|icon name| Icon shown for dot at start of list | |endDotIconName (when horizontal)|”chevron-right”|icon name| Icon shown for dot at start of list | |endDotIconName (when vertical )|”chevron-down”|icon name| Icon shown for dot at start of list | |startDotIconSize |15|number| end icon dot size| |endDotIconSize|15|number| end icon dot size| |startDotIconFamily / endDotIconFamily|MaterialCommunityIcons|string of font family name | Font Family for Icon. options: Entypo, EvilIcons, FontAwesome, Foundation, Ionicons, MaterialIcons, MaterialCommunityIcons, Octicons, Zocial, SimpleLineIcons (available in react-native-vector-icons package)|

Start/End Dot Text

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| |startDotFontSize|11|number|start Dot Font Size | |endDotFontSize|11|number|end Dot Font Size |

Pagination Dots

These are the list of dots that represent each item in your paginationItems

Pagination Dots Basic Props

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| |dotIconFamily|”MaterialCommunityIcons”|string of font family name | Font Family for Icon. options: Entypo, EvilIcons, FontAwesome, Foundation, Ionicons, MaterialIcons, MaterialCommunityIcons, Octicons, Zocial, SimpleLineIcons (available in react-native-vector-icons package) | |dotIconNameEmpty|”close”|icon name| Icon Shown when pagination dot is Empty | |dotIconNameActive|”checkbox-blank-circle”|icon name| Icon Shown when pagination dot is Active| |dotIconNameNotActive|”checkbox-blank-circle-outline”|icon name| Icon Shown when pagination dot is Not Active| |dotIconSizeActive|15|number| size of pagination icon when active | |dotIconSizeNotActive|10|number| size of pagination iconwhen vertical | |dotIconColorNotActive|”rgba(0,0,0,.5)”|color|dot Icon Font Size when on page but Not Active| |dotIconColorActive|”rgba(0,0,0,.3)”|color|dot Icon Font Size when on page but Not Active| |dotIconColorEmpty|”rgba(0,0,0,.2)”|color|dot Icon Font Size when on page but Not Active|

when using dotThemeLight

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| |dotIconColorNotActive| ”rgba(255,255,255,.4)”|color|dot Icon Font Size when on page but Not Active| |dotIconColorActive| ”rgba(255,255,255,.5)”|color|dot Icon Font Size when on page but Not Active| |dotIconColorEmpty| ”rgba(255,255,255,.2)”|color|dot Icon Font Size when on page but Not Active|

Dot Text

by default it displays index+1, if you'd like display text add the paginationDotText property to each one of your items before passing it into the Pagination

Component. Example:

paginationItems=paginationItems.map(o=>{
   o.paginationDotText=o.name;
  return o
})

Pagination Dots

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| |dotFontSizeActive|11|number|dot Text Font Size when Active on page | |dotFontSizeEmpty|11|number|dot Text Font Size when empty on page | |dotFontSizeNotActive|9|number|dot Text Font Size when on page but Not Active | |dotTextColorNotActive|”rgba(0,0,0,.5)” |color|dot Text Color when Not Active| |dotTextColorActive|”rgba(0,0,0,.3)” |color| dot Text Color when Active| |dotTextColorEmpty|”rgba(0,0,0,.2)” |color|dot Text Color when Empty|

when using dotThemeLight

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| |dotTextColorNotActive| ”rgba(255,255,255,.4)” |color|dot Text Color when Not Active| |dotTextColorActive| ”rgba(255,255,255,.5)” |color| dot Text Color when Active| |dotTextColorEmpty| ”rgba(255,255,255,.2)”|color|dot Text Color when Empty|

Advanced Positioning

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| |dotSwapAxis (all pagination dots)/ startDotSwapAxis / endDotSwapAxis|false|bool|keeps the lists in the correct position (horizontal or vertical) by swaps how dots display | |dotPositionSwap (all pagination dots)/startDotPositionSwap / endDotPositionSwap|false|bool| Swaps the dots flexDirection default style property. |

Wanna move anything to the left, right, top, or bottom of something? Then use dotSwapAxis in combination until you find the right mix startDotPositionSwap.

Visibility

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| |dotIconHide / startDotIconHide / endDotIconHide |false |bool| hide the dots icon | |dotIconHide / startDotIconHide / endDotIconHide |false|bool| hide the dots icon | |dotTextHide / startDotTextHide / endDotTextHide |false|bool| hide the dots text | |dotEmptyHide |false|bool| hide the dots text |

Methods

| Method Name | Description | |---------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | dotOnPress / startDotOnPress /endDotOnPress | by default it will scroll to the pagination dot pressed (disableDotOnPressNavigation to turn off), if you'd like a callback you can pass in the dotOnPress callback function |

Other

| Prop | Default | Type | Description | |------------------|------------------|------------------|------------------| |debugMode | false |bool| show console log results of list items |

Components

| Components | Required Params | Other Params | Description | |------------------|------------------|------------------|------------------| |Pagination | paginationItems,paginationVisibleItems |see above| main pagination Component | |Dot | `` |see above| Pagination Dot Component | |Icon | name | iconFamily,size,color | same as 'react-native-vector-icons' but with a iconFamily option|

Issues

Feel free to contact me or create an issue