Socket
Book a DemoInstallSign in
Socket

react-pinboard

Package Overview
Dependencies
Maintainers
3
Versions
9
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

react-pinboard

Responsive Pinterest-style layouts for React.js

0.0.9
latest
Source
npmnpm
Version published
Maintainers
3
Created
Source

react-pinboard

<ReactPinboard> is a component for responsive Pinterest-style layouts. Pass in any number of children to see them rendered in equally-weighted, dynamic columns.

Props

  • cols: Can be a static number like 3 or an array of media objects, e.g.:

    [
      { media: '(max-width: 1000px)', cols: 4 },
      { media: '(max-width: 500px)', cols: 3 },
      { media: '', cols: 2 }
    ]
    

    The first-matching media query will be used, and the columns will be adjusted in real-time as the browser squishes and stretches.

  • spacing: The vertical and horizontal space between columns and children. Can be any CSS length value, e.g. 2em, 15px, 3vh.

Usage

Download on npm: npm install react-pinboard

Sample usage:

const ReactPinboard = require('react-pinboard');

const cols = [
  { media: '(max-width: 1000px)', cols: 4 },
  { media: '(max-width: 500px)', cols: 3 },
  { media: '', cols: 2 }
];

ReactDOM.render(
  <ReactPinboard cols={cols} spacing="2em">
    <img src="..." />
    <div>
      <h3>Heading</h3>
      <p>...</p>
    </div>
    <SomeOtherReactComponent />
    ...
  </ReactPinboard>,
  document.querySelector('pinboard-container');
);

Features

  • Accepts any child types. You can even mix and match images, text, and other rich components, to create a pinboard that's truly customized.

  • Child order is preserved. The children will appear in the pinboard in left-to-right, top-to-bottom order. This means that if your children have an obvious numeric order, you don't need to worry about adjacent children being spread way across from each other.

  • Auto-weighted columns. ReactPinboard is economical — it takes up as little vertical space as possible by ensuring that the columns are filled as close to equal-weigh as possible (while maintaining child order).

  • Safe for server-rendering. The server can't measure viewport size, so it assumes a "mobile-first" approach and determines column number from the last value of the cols array. The server-render also doesn't know the rendered child heights for column weighting, so it equally-weights the columns. This is naive, but hopefully close enough to the re-layout on mount that it still feels fast for your end users.

Examples

Here's a few places you can see react-pinboard in the wild:

  • http://www.thekitchn.com/what-to-read-this-weekend-october-19-25-225017
  • http://www.apartmenttherapy.com/renovation-diary-karin-jeffs-bathroom-221802 (Note: numeric ordering is preserved)

Keywords

react

FAQs

Package last updated on 25 May 2017

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.