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

@tracksuitdev/use-ripple

v1.0.3

Published

Hook that generates positions and sizes of "ripples", allows you to easily recreate material UI ripple effect.

Downloads

9

Readme

useRipple

Hook that generates positions and sizes of "ripples", allows you to easily recreate material UI ripple effect.

Returns array of objects containing width, height, left and top style properties for each ripple, and onClick function that generates ripples.

Also includes ripple animation and default styles for ripple parent and ripple. You can use these styles (don't forget to specify ripple background-color yourself) or make your own, just be sure to adjust the duration parameter of useRipple hook if your custom animation has different duration.

Usage

Usage with default styles

import "use-ripple/index.css" // import this for ripple styles

const App = () => {
  const { styles, onClick } = useRipple();

  return (
    <button className="ripple-parent" onClick={onClick}>
      Ripple
      {styles?.map((style, index) => (
        <span key={index} className="ripple ripple-color" style={style} />
      ))}
    </button>
  );
};

Create css class for background color of ripple, or use something else to apply your preffered color.

.ripple-color {
  background-color: blue;
}

Usage with custom styles

Provide your animation duration in ms as parameter to useRipple if you use animation with duration different than the default duration (600ms). Also for ripples to render properly, parent node position must be relative and overflow has to be hidden and position of the ripple node must be absolute.

const { styles, onClick } = useRipple({ duration: CUSTOM_ANIMATION_DURATION })

Usage with onClick handler

const { styles, onClick } = useRipple();
const handleClick = (e) => {
  doSomething();
  onClick(e)
}

or pass click handler to useRipple and use returned value

const handleClick = (e) => {
  doSomething();
}
const { styles, onClick } = useRipple({ handleClick });

return <button onClick={onClick} ...

Props

|name |type |default |description | |------|-----|---------|-------------| |duration|number|600|duration of ripple animation in miliseconds |limit|number|100|maximum number of ripples to render (each click renders new ripple), use negative value for unlimited number of ripples |handleClick|MouseEventHandler|undefined|onClick handler of component that renders ripple, it will be wrapped in onClick function returned from useRipple

Return value

|name|type|description| |----|----|---------| |styles|Pick<CSSProperties, "width" | "height" | "left" | "top">[]| size and position for each ripple |onClick|MouseEventHandler|onClick handler that generates ripples