npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

react-menu-portal

v0.0.6

Published

React Menu Portal is a lightweight React component that simplifies the integration of custom dropdown menus into your applications. Whether you're building a table, form, or any other UI component, React Menu Portal allows you to easily open dropdown menu

Downloads

10

Readme

react-menu-portal

React Menu Portal is a lightweight React component that simplifies the integration of custom dropdown menus into your applications. Whether you're building a table, form, or any other UI component, React Menu Portal allows you to easily open dropdown menus in a portal, ensuring proper rendering and positioning regardless of the parent container. Best use-cases could be when Custom Dropdown are used inside of React-Select , React-Select rendered inside of React-table ....

Features

  • Seamlessly integrate custom dropdown menus (wrapper of React-Select / react-async paginate) into any React application.
  • Render dropdown menus in a portal to avoid styling and positioning issues.
  • Easily open dropdown menus on user interaction, such as clicking or hovering.

Why We Built It

Integrating dropdown menus into complex UI components like tables or forms can be challenging, especially when dealing with z-index stacking contexts and overflow issues. React Menu Portal simplifies this process by handling the rendering of dropdown menus in a portal, ensuring they appear above other elements and are positioned correctly within the viewport.

Key Technologies Used

Get Started

To get started with React Menu Portal, install the package via npm:

npm install react-menu-portal

How to use react-menu-portal component

Import PortalWrapper where you want to open the dropdown-menuList let's say in a form you built a custom dropdown with react-select named CommonDropdown inside a table / react-table.

import {PortalWrapper} from "react-menu-portal"

// rest of the code

<PortalWrapper ref={dropdownRef}>
          {(position) => (
            <CommonDropdown
              {...props}
              menuListPosition={position}
            />
          )}
</PortalWrapper>

now let's see how do you configure your custom dropdown that is built in react-select for example, we will just use createPortal from react-dom

import createPortal from 'react-dom'

const MenuList = wrapMenuList((props) =>
    menuListPosition ? (
      createPortal(
        <div
          style={{ position: "absolute", top: menuListPosition.top, left: menuListPosition.left }}
        >
          <CustomMenuComponent
            props={props}
            title={createTitle}
            isVisible={!isEmpty(createDetails)}
            handleCreate={() => setIsModalOpen(true)}
          />
        </div>,
        document.body
      )
    ) : (
      <CustomMenuComponent
        props={props}
        title={createTitle}
        isVisible={!isEmpty(createDetails)}
        handleCreate={() => setIsModalOpen(true)}
      />
    )
  );

So we just need to add our menuList Component and load it inside the create-portal component.

createPortal(
        <div
          style={{ position: "absolute", top: menuListPosition.top, left: menuListPosition.left }}
        >
         <!-- Any Menu Component of the dropdown (React-Select , React-Async-Paginate and many more) above we configured MenuList Component of React-Select -->
        </div>,
        document.body
      )

Future Enhancement :

Currently We are developing and testing more and more to cancel out and optimise the above steps, We would love to see you help and support on this library to make a go-to library for custom styled dropdown library with the soul motive of faster development and versatility across code-base

If you're interested in contributing to or collaborating on React Menu Portal, we'd love to hear from you! Feel free to reach out to us via email at Shrey's Email or on Twitter @shreykoradia. Let's work together to make React Menu Portal the go-to solution for integrating custom dropdown menus in React applications!