Skip to content

Commit

Permalink
fix: revert changes to closeOnBlur and add closeOnClickOutside
Browse files Browse the repository at this point in the history
  • Loading branch information
Antonella Sgarlatta committed May 4, 2021
1 parent 15db476 commit 45357c1
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 16 deletions.
10 changes: 8 additions & 2 deletions app/assets/javascripts/components/NotesContextMenu.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,16 @@ const NotesContextMenu = observer(({ appState }: Props) => {
(open: boolean) => appState.notes.setContextMenuOpen(open)
);

const closeOnClickOutside = (event: MouseEvent) => {
if (!contextMenuRef.current?.contains(event.target as Node)) {
appState.notes.setContextMenuOpen(false);
}
};

useEffect(() => {
document.addEventListener('click', closeOnBlur);
document.addEventListener('click', closeOnClickOutside);
return () => {
document.removeEventListener('click', closeOnBlur);
document.removeEventListener('click', closeOnClickOutside);
};
});

Expand Down
5 changes: 1 addition & 4 deletions app/assets/javascripts/components/NotesOptions.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,7 @@ import { useRef } from 'preact/hooks';

type Props = {
appState: AppState;
closeOnBlur: (event: {
relatedTarget: EventTarget | null;
target: EventTarget | null;
}) => void;
closeOnBlur: (event: { relatedTarget: EventTarget | null }) => void;
setLockCloseOnBlur: (lock: boolean) => void;
};

Expand Down
13 changes: 3 additions & 10 deletions app/assets/javascripts/components/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,23 +10,16 @@ export function useCloseOnBlur(
container: { current: HTMLDivElement },
setOpen: (open: boolean) => void
): [
(event: {
relatedTarget: EventTarget | null;
target: EventTarget | null;
}) => void,
(event: { relatedTarget: EventTarget | null }) => void,
StateUpdater<boolean>
] {
const [locked, setLocked] = useState(false);
return [
useCallback(
function onBlur(event: {
relatedTarget: EventTarget | null;
target: EventTarget | null;
}) {
function onBlur(event: { relatedTarget: EventTarget | null }) {
if (
!locked &&
!container.current?.contains(event.relatedTarget as Node) &&
!container.current?.contains(event.target as Node)
!container.current?.contains(event.relatedTarget as Node)
) {
setOpen(false);
}
Expand Down

0 comments on commit 45357c1

Please sign in to comment.