2025.2.27 • Published 4 months ago

react-clickout-ts v2025.2.27

Weekly downloads
-
License
MIT
Repository
github
Last release
4 months ago

react-clickout-ts

A React component to handle click-outside behavior for elements. Perfect for modals, dropdowns, and other overlay components.

npm version License: MIT

Features

Features

  • TypeScript-first implementation
  • Handle click outside for single or multiple elements
  • Ignore specific elements from triggering click-out
  • Customizable event triggers
  • Zero dependencies

Installation

  yarn add react-clickout-ts

or

  npm install --save react-clickout-ts

Getting Started

import React from 'react';
import { ClickOutHandler } from 'react-clickout-ts';

const Modal = () => {
  const handleClickOut = () => {
    console.log('Close modal!');
  };

  return (
    <ClickOutHandler onClickOut={handleClickOut}>
      <div className="modal">This is a modal! Click outside to close it.</div>
    </ClickOutHandler>
  );
};

Props

PropTypeRequiredDefaultDescription
childrenReactNodetrueThe element(s) you want to trigger the onClickOut callback when clicked outside of
enabledbooleanfalsetrueEnables or disables the clickout behavior. This can be useful to ensure the onClickOut callback is only executed when you want it to be.
eventsstring[]false['mousedown', 'touchstart']Allows for specifying custom events to trigger the onClickOut callback
ignoredElementsHTMLElement[]false[]An array of refs for elements to exclude from triggering the clickout behavior
onClickOut(ev: Event) => voidtrueFunction to be called when the clickout behavior is triggered. Receives the click event as an argument.

Examples

Excluding element(s)

If there are any elements outside of your ClickOutHandler component that you do not want to trigger the clickout behavior when clicked, you can pass a ref to the ignoredElements prop.

import { useRef, useState } from 'react'
import { ClickOutHandler } from 'react-clickout-ts'

const Component = () => {
  const ignoreRef = useRef<HTMLElement | null>(null)

  const handleClickOutside = (ev: Event) => {
    console.log('Clicked outside')
  }

  return (
    <div>
      <div ref={ignoreRef}>This should be ignored!</div>
      <ClickOutHandler ignoredElements={[ignoreRef.current]} onClickOut={handleClickOutside}>
        <div>Content goes here</div>
      </ClickOutHandler>
    </div>
  )
}

License

MIT

2025.1.31

4 months ago

2025.2.27

4 months ago

2025.2.1

4 months ago

2023.6.1

2 years ago

2023.0.4

2 years ago

2023.0.3

2 years ago

2023.1.1

2 years ago

2023.1.0

2 years ago

2023.0.5

2 years ago

1.2.2

2 years ago

1.2.0

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.5

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago