Skip to content

Commit e7cf43b

Browse files
Merge pull request #19 from mnoster/feature/onMenuToggle
Implemented onMenuToggle feature
2 parents 551a2b4 + 02b7fe8 commit e7cf43b

File tree

5 files changed

+13
-2
lines changed

5 files changed

+13
-2
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-multi-select-component",
3-
"version": "2.0.5",
3+
"version": "2.0.6",
44
"description": "Simple and lightweight multiple selection dropdown component with checkboxes, search and select-all",
55
"author": "Harsh Zalavadiya",
66
"license": "MIT",

src/lib/interfaces.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,5 @@ export interface ISelectProps {
3232
overrideStrings?: { [key: string]: string };
3333
labelledBy: string;
3434
className?: string;
35+
onMenuToggle?;
3536
}

src/multi-select/dropdown.tsx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
*/
66
import useOutsideClick from "@rooks/use-outside-click";
77
import { css } from "goober";
8-
import React, { useRef, useState } from "react";
8+
import React, { useRef, useState, useEffect } from "react";
99

1010
import Arrow from "./arrow";
1111
import Loading from "./loading";
@@ -18,6 +18,7 @@ interface IDropdownProps {
1818
disabled?: boolean;
1919
shouldToggleOnHover?: boolean;
2020
labelledBy?: string;
21+
onMenuToggle?;
2122
}
2223

2324
const PanelContainer = css({
@@ -75,6 +76,7 @@ const Dropdown = ({
7576
disabled,
7677
shouldToggleOnHover,
7778
labelledBy,
79+
onMenuToggle,
7880
}: IDropdownProps) => {
7981
const [expanded, setExpanded] = useState(false);
8082
const [hasFocus, setHasFocus] = useState(false);
@@ -83,6 +85,11 @@ const Dropdown = ({
8385

8486
useOutsideClick(wrapper, () => setExpanded(false));
8587

88+
/* eslint-disable react-hooks/exhaustive-deps */
89+
useEffect(() => {
90+
onMenuToggle && onMenuToggle(expanded);
91+
}, [expanded]);
92+
8693
const handleKeyDown = e => {
8794
switch (e.which) {
8895
case 27: // Escape

src/multi-select/index.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ const MultiSelect = ({
4343
disableSearch,
4444
filterOptions,
4545
labelledBy,
46+
onMenuToggle,
4647
}: ISelectProps) => {
4748
const nvalue = value || [];
4849
return (
@@ -66,6 +67,7 @@ const MultiSelect = ({
6667
}}
6768
disabled={disabled}
6869
labelledBy={labelledBy}
70+
onMenuToggle={onMenuToggle}
6971
>
7072
<DropdownHeader
7173
value={nvalue}

stories/default.stories.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ export const toStorybook = () => {
3030
value={selected}
3131
disabled={boolean("disabled", false)}
3232
onChange={setSelected}
33+
onMenuToggle={(s)=>{console.log("Select Toggle: ", s)}}
3334
labelledBy={text("labelledBy", "Select Fruits")}
3435
className={text("className", "multi-select")}
3536
/>

0 commit comments

Comments
 (0)