Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(bubble-menu): add focusout handler for floating element #5882

Open
wants to merge 4 commits into
base: develop
Choose a base branch
from

Conversation

cairon666
Copy link

@cairon666 cairon666 commented Nov 27, 2024

Changes Overview

Fix the bug where the bubble menu does not hide

Implementation Approach

Add an additional focusout event handler to the floating element.

Also, set tabIndex to -1 for the bubble menu to ensure that clicking on an empty block in the bubble menu does not result in the parentNode being null.

Testing Done

Test on a local

Verification Steps

Add input into bubble-menu demo
Open BubbleMenu
Click on the input
Click outside the editor

Additional Notes

Checklist

  • I have created a changeset for this PR if necessary.
  • My changes do not break the library.
  • I have added tests where applicable.
  • I have followed the project guidelines.
  • I have fixed any lint issues.

Related Issues

#578

Copy link

changeset-bot bot commented Nov 27, 2024

🦋 Changeset detected

Latest commit: 32c4b2b

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 54 packages
Name Type
@tiptap/extension-bubble-menu Patch
@tiptap/react Patch
@tiptap/vue-2 Patch
@tiptap/vue-3 Patch
@tiptap/core Patch
@tiptap/extension-blockquote Patch
@tiptap/extension-bold Patch
@tiptap/extension-bullet-list Patch
@tiptap/extension-character-count Patch
@tiptap/extension-code-block-lowlight Patch
@tiptap/extension-code-block Patch
@tiptap/extension-code Patch
@tiptap/extension-collaboration-cursor Patch
@tiptap/extension-collaboration Patch
@tiptap/extension-color Patch
@tiptap/extension-document Patch
@tiptap/extension-dropcursor Patch
@tiptap/extension-floating-menu Patch
@tiptap/extension-focus Patch
@tiptap/extension-font-family Patch
@tiptap/extension-gapcursor Patch
@tiptap/extension-hard-break Patch
@tiptap/extension-heading Patch
@tiptap/extension-highlight Patch
@tiptap/extension-history Patch
@tiptap/extension-horizontal-rule Patch
@tiptap/extension-image Patch
@tiptap/extension-italic Patch
@tiptap/extension-link Patch
@tiptap/extension-list-item Patch
@tiptap/extension-list-keymap Patch
@tiptap/extension-mention Patch
@tiptap/extension-ordered-list Patch
@tiptap/extension-paragraph Patch
@tiptap/extension-placeholder Patch
@tiptap/extension-strike Patch
@tiptap/extension-subscript Patch
@tiptap/extension-superscript Patch
@tiptap/extension-table-cell Patch
@tiptap/extension-table-header Patch
@tiptap/extension-table-row Patch
@tiptap/extension-table Patch
@tiptap/extension-task-item Patch
@tiptap/extension-task-list Patch
@tiptap/extension-text-align Patch
@tiptap/extension-text-style Patch
@tiptap/extension-text Patch
@tiptap/extension-typography Patch
@tiptap/extension-underline Patch
@tiptap/extension-youtube Patch
@tiptap/html Patch
@tiptap/pm Patch
@tiptap/starter-kit Patch
@tiptap/suggestion Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

Copy link

netlify bot commented Nov 27, 2024

Deploy Preview for tiptap-embed ready!

Name Link
🔨 Latest commit 32c4b2b
🔍 Latest deploy log https://app.netlify.com/sites/tiptap-embed/deploys/674ba216626b3e0008965872
😎 Deploy Preview https://deploy-preview-5882--tiptap-embed.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

Copy link
Member

@bdbch bdbch left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good to me - would like to change the changeset a bit to be more clear about what changed.

.changeset/twelve-turtles-cry.md Outdated Show resolved Hide resolved
@@ -50,7 +50,7 @@ export const BubbleMenu = (props: BubbleMenuProps) => {
}, [props.editor, currentEditor, element])

return (
<div ref={setElement} className={props.className} style={{ visibility: 'hidden' }}>
<div ref={setElement} tabIndex={-1} className={props.className} style={{ visibility: 'hidden' }}>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Did you test if a negative tab index still allows the client to focus elements inside the div via the keyboard?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, you can still focus on other elements inside using tab

This is necessary so that event.relatedTarget is not null if an empty space was clicked inside the bubble-menu

Co-authored-by: bdbch <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants