Skip to content

Commit b98ea4c

Browse files
committed
fix: onclickoutside selectinput
1 parent 99a45e9 commit b98ea4c

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

.changeset/sharp-steaks-nail.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
"@ultraviolet/ui": patch
3+
---
4+
5+
`SelectInput`:
6+
- click outside should work in every context
7+
- fix placeholder alignment when small

packages/ui/src/components/SelectInput/components/Dropdown.tsx

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -639,6 +639,29 @@ export const Dropdown = ({
639639
)
640640
const modalContext = useContext(ModalContext)
641641

642+
const handleClickOutside = useCallback(
643+
(event: MouseEvent) => {
644+
if (
645+
event.target instanceof Node &&
646+
ref.current &&
647+
!ref.current.contains(event.target) &&
648+
refSelect.current &&
649+
!refSelect.current.contains(event.target)
650+
) {
651+
setIsDropdownVisible(false)
652+
}
653+
},
654+
[setIsDropdownVisible, refSelect],
655+
)
656+
657+
useEffect(() => {
658+
document.addEventListener('mouseup', handleClickOutside)
659+
660+
return () => {
661+
document.removeEventListener('mouseup', handleClickOutside)
662+
}
663+
}, [handleClickOutside])
664+
642665
useEffect(() => {
643666
if (refSelect.current && isDropdownVisible) {
644667
const position =

packages/ui/src/components/SelectInput/components/SelectBar.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,6 @@ type DisplayValuesProps = {
7575
refPlusTag: RefObject<HTMLDivElement | null>
7676
displayShadowCopy?: boolean
7777
}
78-
7978
const DisplayValues = ({
8079
refTag,
8180
nonOverflowedValues,

0 commit comments

Comments
 (0)