1.0.1 • Published 3 years ago

@anubra266/stickyreact v1.0.1

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

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'The Sticky Element Instance

Used By

This project is used by the following Projects: