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

@helios-interactive/budgie

v1.0.12

Published

A plugin to handle all your scrolling needs.

Downloads

13

Readme

Budgie

An infinite scrolling plugin, that tackles grid layout of the items being scrolled, and can adapt as the list of items it is scrolling changes.

Demos

https://heliosinteractive.github.io/budgie/

Instalation

npm install @helios-interactive/budgie --save

Usage

Note:

Budgie element refers to the whole element, with all items contained inside of it.

Budgie item refers to a single items within the Budgie Element

Currently including the script file is the only way to use budgie.

Budgie will be available in the global namespace once it has been included with the script tag

<script src="node_modules/@helios-interactive/budgie/dist/budgie.min.js" type="text/javascript"></script>

To create a Budgie element, you will need a list of items that you want to make up the tiles within the Budgie element. You will also need to have an empty div on your page that will contain the Budgie element. You can also supply additional optional configuration as an options object

<script>
    new Budgie(items, '.element', options)
</script>

What can it display?

Budgie accepts three types of content as Budgie items.

  • Elements
    • Any HTMLElement can be passed as an item to budgie.
  • Images - as a source string
    • The following extensions wil be created as images: ['jpg', 'gif', 'png', 'bmp', 'jpeg']
  • Videos - as a source string
    • The following extensions wil be created as videos: ['mp4','ogg', 'webm']

You can send the whole list as one of these types, or mix and match them as desired.

How can I customize the styling?

Budgie intentionally does very little with styling so that the user can have full control of that aspect. All styles applied by budgie are applied as classes, so issues with specificty should be rare.

All Budgie items will have the class of budgie-item. You can use this to select the items and apply a class, or add your styling to that class.

The Budgie element will have a class of budgie-container

Can I have multiple Budgie containers on the same page?

Yep. Each Budgie will generate a code to keep it uniquely identified. This is stored on the Budgie object as budgieId

If you have multiple budgie elements, then you can use the budgieId to select the one you want. Budgie items will have the class budgie-item-<budgieId>. The Budgie element will have the class budgie-container-<budgieId>

Configuration

Configuration options are passed on initialization as an options object.

|Option|Type|Choices|Default|Description| |---|---|---|---|---| |numberHigh|Integer|1...n|1|This determines the number of Budgie items that will be stacked vertically.| |numberWide|Integer|1...n|1|This determines the number of Budgie items that will be stacked horizontally.| |direction|String|'vertical', 'horizontal'|'vertical'|This will set which axis the Budgie element will scroll on.| |inverted|Boolean|true, false|false|By default horizontal will scroll from left to right, and vertical will scroll from top to bottom. This will invert those directions so that horizontal will scroll from right to left, and vertical will scroll from bottom to top. This is only used if autoScroll is true.| |fps|Integer|1...n|60|This determines how often Budgie animates. A higher fps will provide a smoother animation, at the cost of performance. Between 30 and 60 is usually optimal. This is only used if autoScroll is true.| |secondsOnPage|Float|1.0...n|1.0|This determines how long a Budgie Item stays within the Budgie element (how long the viewer can see it before it goes off screen). The lower the number, the faster it will go. This combined with the size of the Budgie Element will determine the speed of the scroll. This is only used if autoScroll is true.| |infiniteScroll|Boolean|true, false|true|If this is set to true, then scrolling will wrap around allowing for infinite scrolling (scrolling down will wrap around and put you at the top, or vice versa).| |autoScroll|Boolean|true, false|true|If autoScroll is on, then Budgie will automatically scroll through the elements using the secondsOnPage and Budgie element size to determine speed.| |autoStart|Boolean|true, false|true|If this is true, then the Budgie element will automatically start on new Budgie. Otherwise it can be manually started with Budgie.budgieAnimate() This is only used if autoScroll is true.|

Methods available

The following methods are available on the Budgie object that is returned from new Budgie.

|Method|Arguments|Description| |---|---|---| |setItems|items - the array of items that you want budgie to display|This method will compare the items passed as arguments, to Budgie's previous set of items. It will then update Budgie, adding/removing elements where needed.| |budgieAnimate||Will start Budgie autoscrolling| |stopAnimate||Will stop Budgie from autoscrolling| |changeInversion||Will toggle the inversion to the opposite of it's current setting| |removeBudgie||Will remove the budgie element from the dom. It cannot be added back, and will need replaced with a new Budgie|

The following array methods will update the Budgie element if executed on the array of items passed to budgie.

|Method|Description| |---|---| |pop|Normal Array behavior. Will pop the associated element off of Budgie| |push|Normal Array behavior. Will push the associated element onto Budgie| |shift|Normal Array behavior. Will shift the associated element off of Budgie| |unshift|Normal Array behavior. Will unshift the associated element off of Budgie| |splice|Normal Array behavior. Will splice the associated element(s) on/off of Budgie|

Browser support

  • IE11
  • Edge11
  • Chrome 49
  • Opera 42
  • Safari 9.2
  • Firefox 50
  • Sorry, no Netscape Navigator or Lynx support :/

For more support add:

License

MIT License

Copyright (c) [2017] [Adam McFadden]

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.