Skip to content

Commit 1b38e20

Browse files
committed
fix(editable-html-tip-tap): use strict greater-than for scrollbar viewport check inlinedropdown PIE-575
1 parent 8a93fb5 commit 1b38e20

2 files changed

Lines changed: 19 additions & 9 deletions

File tree

packages/editable-html-tip-tap/src/components/__tests__/InlineDropdown.test.jsx

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -464,6 +464,20 @@ describe('InlineDropdown', () => {
464464
expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();
465465
});
466466

467+
it('does not close toolbar when clicking the page scrollbar (documentElement)', async () => {
468+
const { queryByTestId } = render(<InlineDropdown {...defaultProps} selected={true} />);
469+
470+
await waitFor(() => {
471+
expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();
472+
});
473+
474+
fireEvent.mouseDown(document.documentElement);
475+
476+
await waitFor(() => {
477+
expect(queryByTestId('inline-dropdown-toolbar')).toBeInTheDocument();
478+
});
479+
});
480+
467481
it('renders delete control on portaled custom toolbar when container el is set', async () => {
468482
const { findByLabelText } = render(<InlineDropdown {...defaultProps} selected />);
469483
expect(await findByLabelText('Delete')).toBeInTheDocument();

packages/editable-html-tip-tap/src/components/respArea/InlineDropdown.jsx

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -94,15 +94,11 @@ const InlineDropdown = (props) => {
9494
}, [editor, node, selected]);
9595

9696

97-
const isScrollbarClicked = (event) => event.clientX >= document.documentElement.clientWidth ||
98-
event.clientY >= document.documentElement.clientHeight ||
99-
// macOS overlay: target is document.documentElement or document.body directly
100-
// when clicking the window scrollbar — never a child element
101-
(
102-
(event.target === document.documentElement || event.target === document.body) &&
103-
// within 20px of the right or bottom edge of the viewport
104-
(event.clientX >= window.innerWidth - 20 || event.clientY >= window.innerHeight - 20)
105-
);
97+
98+
const isScrollbarClicked = (event) =>
99+
event.clientX > document.documentElement.clientWidth ||
100+
event.clientY > document.documentElement.clientHeight ||
101+
event.target === document.documentElement;
106102

107103

108104
useEffect(() => {

0 commit comments

Comments
 (0)