bpk-scrim-utils

6.1.2 • Public • Published

bpk-scrim-utils

Higher order component that adds a scrim behind components and manages scroll states

Installation

npm install bpk-scrim-utils --save-dev
import { withScrim } from 'bpk-scrim-utils';

const Box = props => (
  <div ref={props.dialogRef}>
    <BpkButton onClick={props.onClose}>Close</BpkButton>
    Hello
  </div>
);

const BoxWithScrim = withScrim(Box);

withScrim sends all props it receives down to the component, except getApplicationElement and padded. It also adds some props that are used for a11y and closing the modal:

  • dialogRef should be set as the ref on the visible container on top of the scrim; it is used to set focus
  • onClose should be set as the onClick action on a button or a link
  • isIphone can be used to apply iPhone only styles or behaviour, as it has different scrolling behaviour

containerClassName can be used to apply styles to the full-screen container into which the enriched component is inserted (e.g. display: flex or display: grid)

Note: the pagewrap element id is a convention we use internally at Skyscanner. In most cases it should "just work".

Props

Property PropType Required Default Value
onClose func true See prop details
getApplicationElement func true -
isIphone bool false /iPhone/i.test(typeof window !== 'undefined' ? window.navigator.platform : '')
containerClassName string false ''
closeOnScrimClick bool false true
dark bool false false

Prop Details

onClose

This is required unless closeOnScrimClick is false.

Readme

Keywords

none

Package Sidebar

Install

npm i bpk-scrim-utils

Weekly Downloads

2,128

Version

6.1.2

License

Apache-2.0

Unpacked Size

39.5 kB

Total Files

18

Last publish

Collaborators

  • anambl
  • skyscanner-koalasquad
  • gert-jan.vercauteren
  • frugoman
  • marianeumayer-skyscanner
  • ojcurt
  • shaundon