Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

@anubra266/stickyreact

Package Overview
Dependencies
Maintainers
1
Versions
3
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@anubra266/stickyreact

Create Sticky Elements in React [![NPM](https://img.shields.io/npm/v/@anubra266/stickyreact.svg)](https://www.npmjs.com/package/@anubra266/stickyreact) [![JavaScript Style Guide](https://img.shields.io/badge/code_style-standard-brightgreen.svg)](https://s

  • 1.0.1
  • latest
  • npm
  • Socket score

Version published
Weekly downloads
3
Maintainers
1
Weekly downloads
 
Created
Source

Sticky React

Create Sticky Elements in React NPM JavaScript Style Guide

Install

npm install --save @anubra266/stickyreact
#OR
yarn add @anubra266/stickyreact

Usage

import Component from 'my-project';

function App() {
  const handleStuck = target => {
    target?.classList.add('stuck');
  };

  const handleUnstuck = target => {
    target?.classList.remove('stuck');
  };

  const handleChange = ({ target, type }) => {
    if (type === 'stuck') {
      target?.classList.add('stuck');
    } else {
      target?.classList.remove('stuck');
    }
  };
  return (
    <StickyViewport as="div">
      <StickyBoundary
        onStuck={handleStuck}
        onUnstuck={handleUnstuck}
        onChange={handleChange}
      >
        <Sticky> I'm Sticky </Sticky>
        <div> I'm not Sticky </div>
        <div> I'm not Sticky too </div>
      </StickyBoundary>
      <StickyBoundary
        onStuck={handleStuck}
        onUnstuck={handleUnstuck}
        onChange={handleChange}
      >
        <Sticky>
          I'm also Sticky, but I override the above once I'm scrolled to
        </Sticky>
        <div> I'm not Sticky </div>
        <div> I'm not Sticky too </div>
      </StickyBoundary>
    </StickyViewport>
  );
}

API Reference

StickyViewport

Wrapper and Provider for Sticky App

<StickyViewport>...</StickyViewport>
ParameterTypeDescriptionRequiredDeffault
asstring or ReactElementReact Element used in displayfalsediv
StickyBoundary

Container that wraps each Sticky Element

<StickyBoundary>...</StickyBoundary>
ParameterTypeDescriptionRequiredDeffault
asstring or ReactElementReact Element used in displayfalsediv
onStuck(target)=>voidCallback when a child becomes Stickyfalse--------
onUnstuck(target)=>voidCallback when a child is no longer Stickyfalse--------
onChange({target,type})=>voidCallback when a child changes it's Sticky Statefalse--------
Sticky

Makes it's content Sticky

<Sticky>...</Sticky>
ParameterTypeDescriptionRequiredDeffault
asstring or ReactElementReact Element used in displayfalsediv
onStuck

Callback when a child becomes Sticky.

(target: ReactNode) => {
  target?.classList.add('stuck');
};
ParameterTypeDescription
targetReactNodeThe Sticky Element Instance
onUnstuck

Callback when a child is no longer Sticky.

(target: ReactNode) => {
  target?.classList.remove('stuck');
};
ParameterTypeDescription
targetReactNodeThe Sticky Element Instance
onChange

Callback when a child becomes Sticky or Losesthe Sticky State.

NB: It provides a destructurable parameter

({ target, type }: { target: ReactNode, type: 'stuck' | 'unstuck' }) => {
  if (type === 'stuck') {
    target?.classList.add('stuck');
  } else {
    target?.classList.remove('stuck');
  }
};

NB: The paramters are to be destructured

ParameterTypeDescription
targetReactNodeThe Sticky Element Instance
type`'stuck''unstuck'`

Used By

This project is used by the following Projects:

  • Choc UI - Site search bar

FAQs

Package last updated on 23 Apr 2021

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

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc