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

pro-paginate

v1.1.2

Published

A open source pagination plugin using pure Javascript.

Downloads

14

Readme

pro-paginate

A open source pagination plugin using pure Javascript.

pro-paginate Example with default settings

Installation

To start using it straight away, place this in the head of your HTML code:

<link
  rel="stylesheet"
  href="https://cdn.jsdelivr.net/npm/[email protected]/src/style/style.css"
/>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/build/paginate.es5.js"></script>

Using a JavaScript package manager

If you use the npm package manager, you can fetch a local copy of pro-paginate by running:

npm install pro-paginate

You will find a copy of the pro-paginate release files in node_modules/pro-paginate/src.

Usage Guide

ProPaginate Class

ProPaginate class is to make the most modern pagination. This allows to make pagination for monthly data.

ProPaginate Class Usage Example

Here is the default creation of ProPaginate:

<div id="paginate"></div>
document.onreadystatechange = function () {
  if (document.readyState === 'complete') {
    const example_1 = new ProPaginate()
  }
}

You can do the customization and change the default settings providing the option object as parameter of ProPaginate class

<div id="paginate-2"></div>
const dummyData = [
  {
    month: 'jan',
    data: [
      {
        _date: 'Jan 20',
        location: 'Chattagram'
      }
    ]
  },
  {
    month: 'feb',
    data: [
      {
        _date: 'feb 20',
        location: 'Chattagram'
      }
    ]
  },
  {
    month: 'march',
    data: [
      {
        _date: 'march 12',
        location: 'Dhaka'
      }
    ]
  },
  {
    month: 'apr',
    data: [
      {
        _date: 'apr 12',
        location: 'Dhaka'
      },
      {
        _date: 'apr 32',
        location: 'Dhaka'
      }
    ]
  },
  {
    month: 'may',
    data: [
      {
        _date: 'may 5',
        location: 'Dhaka'
      },
      {
        _date: 'may 25',
        location: 'Dhaka'
      }
    ]
  },
  {
    month: 'jun',
    data: [
      {
        _date: 'jun 4',
        location: 'Dhaka'
      },
      {
        _date: 'jun 24',
        location: 'Dhaka'
      }
    ]
  },
  {
    month: 'jul',
    data: [
      {
        _date: 'jul 5',
        location: 'Dhaka'
      },
      {
        _date: 'jul 3',
        location: 'Dhaka'
      },
      {
        _date: 'jul 25',
        location: 'Dhaka'
      }
    ]
  },
  {
    month: 'aug',
    data: [
      {
        _date: 'aug 4',
        location: 'Dhaka'
      },
      {
        _date: 'aug 3',
        location: 'Dhaka'
      },
      {
        _date: 'aug 11',
        location: 'Dhaka'
      },
      {
        _date: 'aug 13',
        location: 'Dhaka'
      }
    ]
  },
  {
    month: 'sep',
    data: [
      {
        _date: 'sep 3',
        location: 'Dhaka'
      },
      {
        _date: 'sep 2',
        location: 'Dhaka'
      },
      {
        _date: 'sep 6',
        location: 'Dhaka'
      },
      {
        _date: 'sep 6',
        location: 'Dhaka'
      },
      {
        _date: 'sep 5',
        location: 'Dhaka'
      }
    ]
  },
  {
    month: 'oct',
    data: [
      {
        _date: 'oct 3',
        location: 'Dhaka'
      },
      {
        _date: 'oct 23',
        location: 'Dhaka'
      },
      {
        _date: 'oct 13',
        location: 'Dhaka'
      },
      {
        _date: 'oct 23',
        location: 'Dhaka'
      },
      {
        _date: 'oct 3',
        location: 'Dhaka'
      },
      {
        _date: 'oct 13',
        location: 'Dhaka'
      }
    ]
  },
  {
    month: 'nov',
    data: [
      {
        _date: 'nov 2',
        location: 'Dhaka'
      },
      {
        _date: 'nov 2',
        location: 'Dhaka'
      },
      {
        _date: 'nov 22',
        location: 'Dhaka'
      },
      {
        _date: 'nov 2',
        location: 'Dhaka'
      },
      {
        _date: 'nov 22',
        location: 'Dhaka'
      },
      {
        _date: 'nov 22',
        location: 'Dhaka'
      },
      {
        _date: 'nov 2',
        location: 'Dhaka'
      },
      {
        _date: 'nov 22',
        location: 'Dhaka'
      },
      {
        _date: 'nov 2',
        location: 'Dhaka'
      }
    ]
  },
  {
    month: 'dec',
    data: [
      {
        _date: 'dec 5',
        location: 'Dhaka'
      },
      {
        _date: 'dec 15',
        location: 'Dhaka'
      },
      {
        _date: 'dec 16',
        location: 'Dhaka'
      },
      {
        _date: 'dec 5',
        location: 'Dhaka'
      },
      {
        _date: 'dec 15',
        location: 'Dhaka'
      },
      {
        _date: 'dec 16',
        location: 'Dhaka'
      },
      {
        _date: 'dec 5',
        location: 'Dhaka'
      },
      {
        _date: 'dec 15',
        location: 'Dhaka'
      },
      {
        _date: 'dec 5',
        location: 'Dhaka'
      },
      {
        _date: 'dec 16',
        location: 'Dhaka'
      },
      {
        _date: 'dec 15',
        location: 'Dhaka'
      },
      {
        _date: 'dec 16',
        location: 'Dhaka'
      },
      {
        _date: 'dec 16',
        location: 'Dhaka'
      },
      {
        _date: 'dec 15',
        location: 'Dhaka'
      },
      {
        _date: 'dec 5',
        location: 'Dhaka'
      },
      {
        _date: 'dec 15',
        location: 'Dhaka'
      },
      {
        _date: 'dec 5',
        location: 'Dhaka'
      }
    ]
  }
]

let currentMonth = new Date().getMonth()
document.onreadystatechange = function () {
  if (document.readyState === 'complete') {
    const example_1 = new ProPaginate({
      data: dummyData,
      startpageNum: currentMonth,
      pageLinkAreaLabel: [
        'jan',
        'feb',
        'mar',
        'apr',
        'may',
        'jun',
        'jul',
        'aug',
        'sep',
        'oct',
        'nov',
        'dec'
      ],
      dataItemHtml:
        '<div class="data_item"><div class="data_item_details"><span class="data_item_date">${paginateDataObj._date == "Jan 20" ? "hello" : "hello world"}</span><span class="data_item_location">${paginateDataObj.location}</span></div></div>',

      dataItemsArrayPath: 'data'
    })
  }
}

Creation

| Factory | Description | | ----------------------------------------- | ---------------------------------------------------------------------------------------------- | | new ProPaginate( options?) | Instantiates a ProPaginate object optionally given an object literal with ProPaginate options. |

Options

| Option | Type | Default | Description | | ----------------------------------- | ------- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- | | mainContainerSelector | String | '#paginate' | The pagination wrapper section selector. any kind of css selector is excapted but id is recomended as the value. | | data | Array | 'this.#dummyData' | Array containing all data to show and paginate. | | dataItemsArrayPath | String | 'data' | Path from where the loop should be done in data array. | | dataItemHtml | String | '' | Html element to render as every page items. Please provide the property of the object like _date, location to show data on every items. | | showAlldataOnce | Boolean | false | Determine all items should be shown once or not. | | visibleDataonce | integer | 5 | The number of items that will show at once. | | showMoreAreaLabel | String | 'Show More' | Area label for show more items button. | | mainDataArrayEmptyErrorHtml | String | '' | Html element to show when the Data Array is empty. | | singleDataItemArrayEmptyErrorHtml | String | '' | Html element to show when a single item of the data Array is empty. |

Options inherited from Paginate class

| Option | Type | Default | Description | | -------------------------- | ------- | ------------------------------------------ | -------------------------------------------------------------------------------------------------------- | | itemsContainerClass | String | '.items_container' | The items' container custom class. | | paginationSelector | String | '.pagination' | The pagination' container selector. can be any valid css selector. | | paginationContainerClass | String | '.pagination_container' | The pagination container custom class. | | itemsView | String | 'row_view' | Determine The way all items should be presented, value can be eather row_view or column_view. | | | pageLinksToDisplay | integer | 10 | The number of page links to display at once. All other pages will be hidden or replaced with ... | | startpageNum | integer | 0 | The first page to show. To show page 3, the value will be 2 | | visiblePageCount | integer | 4 | Total page to show once in pagination. To show 5 page once in pagination, the value will be 5 | | wrapAround | Boolean | false | Determine if the pages should loop or not. | | firstAreaLabel | String | 'First' | The aria label for the first control. | | prevAreaLabel | String | 'Prev' | The aria label for the previous control. | | nextAreaLabel | String | 'Next' | The aria label for the next control. | | lastAreaLabel | String | 'Last' | The aria label for the last control. | | paginationOrder | Array | ["first", "prev", "num", "next", "last"] | The order of the controls. 'num' represents the page links. | | showFirstLast | Boolean | false | Determine if the first and last controls will show or not. | | showPrevNext | Boolean | true | Determine if the previous and next controls will show or not. | | hasEllips | Boolean | true | Determine if the less Ellips and more hasEllips will show or not. | | hideOnSmall | Boolean | false | Determine if the pagination shows when the number of items is smaller than the number of items per page. | | defaultClass | String | 'defaultclass' | A class to apply to all control elements. | | activeClass | String | 'active' | A class to apply to the active page link. | | disabledClass | String | 'disabled' | A class to apply to disabled controls. | | pageLinkAreaLabel | Array | [] | Array of text to show as arealabel of page links. |

Methods inherited from Paginate class

| Method | Type | Default | Description | | ----------------- | -------- | ------- | ----------------------------------------------------------------- | | onPageDisplayed | Function | false | Callback to be run once a page is displayed. | | onLinkClick | Function | false | Callback to be run once the user click on any specific page link. | | onFirstClick | Function | false | Callback to be run once the user click on the first link. | | onLastClick | Function | false | Callback to be run once the user click on the last link. | | onPrevClick | Function | false | Callback to be run once the user click on the prev link. | | onNextClick | Function | false | Callback to be run once the user click on the next link. | | onMoreClick | Function | false | Callback to be run once the user click on the more link. | | onLessClick | Function | false | Callback to be run once the user click on the less link. | | onDataUpdate | Function | false | Callback to be run once the data has been updated. | | onUpdatedDataRander | Function | false | Callback to be run once the data has been randered. | | onCurrentPageChange | Function | false | Callback to be run every time the Current Page index Change. | | onPageRender | Function | false | Callback to be run every time the page render. |

Browser Support

When using the Ecmascript 5 version, supports goes all the way back to Internet Explorer 10. I have used Babel to convert the code into Ecmascript 5 compatible code.

License

MIT License See LICENSE.txt