Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

🎯 Solution for WAI ARIA compatible modal dialogs or full-screen tasks, you were looking for

License

NotificationsYou must be signed in to change notification settings

theKashey/react-focus-on

Repository files navigation


lock and loaded!
Build statusnpm downloadsbundle size

The final solution for WAI ARIA compatible Modal Dialogs or any full-screen tasks:

Now you couldfocus on a single task.

This is basically theinert

Minimal size -no more than 2kb,maximal - no more that 6kb. See sidecar example for details.

Example

Code sandbox example -https://codesandbox.io/s/p3vjp8mzw7

import{FocusOn}from'react-focus-on';<FocusOnonClickOutside={callback}onEscapeKey={callback}shards={[externalRef]}> content you should be "focused" on</FocusOn>

API

FocusOn

FocusOn - the focus on component

  • enabled - controls behaviour
  • [shards] - a list of Refs to be considered as a part of the Lock. A way to properly handle portals or scattered lock.


  • [gapMode] - the way removed ScrollBar would becompensated - margin(default), or padding. Seescroll-locky documentation to find the one you need.
  • [noIsolation] - disables aria-hidden isolation
  • [inert] - enables pointer-events isolation (☠️ dangerous, use to disable "parent scrollbars", refer toreact-remove-scroll documentation)
  • [allowPinchZoom] - enables "pinch-n-zoom" behavior. By default it might be prevented, refer toreact-remove-scroll documentation
  • [preventScrollOnFocus] - prevents aside effect of a programatic page scroll caused by focusing elements. Especially useful to address modal animations.

  • [onActivation] - on activation callback
  • [onDeactivation] - on deactivation callback

  • [onClickOutside] - on click outside of "focus" area. (actually on any event "outside")
  • [onEscapeKey] - on Esc key down (and not defaultPrevented)

Additional API

Exposed from React-Focus-Lock

  • AutoFocusInside - to mark autofocusable element
  • MoveFocusInside - to move focus inside a component on mount
  • InFocusGuard - to "guard" a shard node (place an invisible node before and after)

Seereact-focus-lock documentation for details.

Exposed from React-Remove-Scroll

  • classNames.fullWidth - "100%" width (will not change on scrollbar removal)
  • classNames.zeroRight - "0" right (will not change on scrollbar removal)

Seereact-remove-scroll for details.

PS: Version 1 used React-scroll-locky which was replaced by remove-scroll.

Size

  • (🧩 full) 5.7kb after compression (excluding tslib).

  • (👁 UI)2kb, visual elements only
  • (🚗 sidecar) 4kb, side effects

Import full

import{FocusOn}from'react-focus-on';<FocusOn>{content}</FocusOn>

Import UI only

import{FocusOn}from'react-focus-on/UI';import{sidecar}from"use-sidecar";constFocusOnSidecar=sidecar(()=>import(/* webpackPrefetch: true */"react-focus-on/sidecar"));<FocusOnsideCar={FocusOnSidecar}>{content}</FocusOn>

React versions

  • v1 and v2 might work with React 15/16
  • v3 require React 16.8+ (hooks)

Licence

MIT

About

🎯 Solution for WAI ARIA compatible modal dialogs or full-screen tasks, you were looking for

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp