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

@webhare/dompack-masonry

v0.2.0

Published

Dompack Masonry

Downloads

807

Readme

dompack-masonry

clean and simple masonry using ES6 and dompack as only dependencies

Usage

This Masonry is set will some specific features:

  • lightweight
  • layout totally based on columns, so changes in CSS width's won't screw up layout
  • only have dompack as dependancy

Initialization through Javascript

Initialization is done though Javascript so you have total control on the order of initialization of page elements.

import DompackMasonry from "dompack-masonry";

// initialize in the DOMContentLoaded event or using dompack.register
dompack.register(".widget--widgetsgroup--masonry", (node, idx) =>
{
    masonry = new DompackMasonry(grid
            , { columns:  columns
              , gutter_x: 20
              , gutter_y: 20
              , items:    ".widget"
              //, equalizeheight: equalizeheight // We do equalizeheight using flexbox, because we don't need animating through abs.pos
              });
}

Settings options in the DOM

Options can also be set through the DOM. This can be usefull if you can have an arbitrary amount of masonries in a page which can have different settings. You can then use a generic initialization and set some details that differ per masonry in the data-masonry attribute. (NOTE: the setting specified in JS override the settings specified in the data-masonry attribute)

    <div class="wh-masonry" data-masonry='{"cols":3}'>...</div>

    <div class="wh-masonry" data-masonry='{"cols":3,"equalizeheight":true}'>...</div>

Advanced use-cases

Reorder items without changing the DOM order

The best way is to pass your own array of nodes in the 'items' option, in the order you want to use the items. The position in the DOM will stay the same but the left/top will be changed, allowing you to perform CSS transitions.

Nesting (a Masonry in a Masonry item)

This is possible if you use different CSS selectors/classnames in the option "items" when initializing the masonry.

Future plans

  • Support for positioning through column div's instead of absolute positioning. You will lose the ability to animate (using transitions), but any change in the masonry item's size will cause the browser to correct the positions of the widgets.

  • A 'clear / nextline' trigger?