Fix Safari category dropdown closing on interaction due to event propagation #905
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Safari users could not create or select categories—the dropdown closed immediately on any interaction. The issue also affected the emoji picker.
Root Cause
Click events from interactive elements inside the dropdown bubbled to the document-level "click outside" handler, closing the dropdown prematurely. Safari's stricter event handling made this more apparent than in Chrome/Firefox.
Changes
Event Propagation
event.stopPropagation()to all interactive handlers (toggleDropdown,toggleEmojiPicker,custom_category,handleEmojiSelect)on:click|stopPropagationto dropdown containers, input fields, category buttons, and emoji pickerHTML Semantics
<div role="button">to<button type="button">for proper Safari compatibilityaria-expanded,aria-haspopup) for accessibilityKeyboard Handling
handleInputKeydown()to prevent Enter key from triggering form submissions or closing the dropdownType Safety
Eventto specificMouseEvent/KeyboardEventtypesFile modified:
frontend/src/lib/components/CategoryDropdown.svelteWarning
Firewall rules blocked me from connecting to one or more addresses (expand for details)
I tried to connect to the following addresses, but was blocked by firewall rules:
flagcdn.compython manage.py download-countries(dns block)If you need me to access, download, or install something from one of these locations, you can either:
Original prompt
💡 You can make Copilot smarter by setting up custom instructions, customizing its development environment and configuring Model Context Protocol (MCP) servers. Learn more Copilot coding agent tips in the docs.