Skip to content

Added changes to fix modal backdrop issue#2410

Open
1307-Dev wants to merge 3 commits intosiemens:mainfrom
1307-Dev:ix-3980-modal
Open

Added changes to fix modal backdrop issue#2410
1307-Dev wants to merge 3 commits intosiemens:mainfrom
1307-Dev:ix-3980-modal

Conversation

@1307-Dev
Copy link
Collaborator

💡 What is the current behavior?

When anything component inside modal content is clicked which extends beyond the border for the modal when close on backdrop click property is true, the modal closes.

GitHub Issue Number: #2401
Jira Ticket Number: IX-3980

🆕 What is the new behavior?

Checks the dom correctly and doesn't close the modal as long as the component belongs inside the modal.

🏁 Checklist

A pull request can only be merged if all of these conditions are met (where applicable):

  • 🦮 Accessibility (a11y) features were implemented
  • 🗺️ Internationalization (i18n) - no hard coded strings
  • 📲 Responsiveness - components handle viewport changes and content overflow gracefully
  • 📕 Add or update a Storybook story
  • 📄 Documentation was reviewed/updated siemens/ix-docs
  • 🧪 Unit tests were added/updated and pass (pnpm test)
  • 📸 Visual regression tests were added/updated and pass (Guide)
  • 🧐 Static code analysis passes (pnpm lint)
  • 🏗️ Successful compilation (pnpm build, changes pushed)

👨‍💻 Help & support

@changeset-bot
Copy link

changeset-bot bot commented Feb 24, 2026

⚠️ No Changeset found

Latest commit: 9e2dc4e

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go. If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

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

@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @1307-Dev, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request addresses a bug in the modal component where clicking on certain interactive elements, such as dropdowns or selects, that extend visually outside the modal's bounding box would cause the modal to unexpectedly close when the closeOnBackdropClick property was active. The changes enhance the modal's event handling logic to accurately determine if a click originates from within its content, preventing unintended closures and improving user experience.

Highlights

  • Modal Backdrop Interaction Fix: Corrected an issue where modals with closeOnBackdropClick enabled would prematurely close if a click occurred on interactive components (like dropdowns or selects) that visually extended beyond the modal's immediate boundaries.
  • Enhanced Click Detection Logic: Modified the onMouseDown and onMouseUp event handlers to incorporate a new check, isTargetInsideModalContent, alongside the existing isPointInsideDialog check, ensuring more accurate detection of clicks originating from within the modal's content.
  • Robust DOM Traversal for Containment: Introduced isTargetInsideModalContent to identify if the clicked element is a specific modal content tag (IX-DROPDOWN, IX-SELECT) and then uses isElementInsideModal to verify if that element is truly a descendant of the modal's host, correctly handling Shadow DOM boundaries.
Changelog
  • packages/core/src/components/modal/modal.tsx
    • Modified onMouseDown and onMouseUp methods to include a new check, isTargetInsideModalContent, ensuring clicks on elements within the modal's content are properly recognized.
    • Added a new private method isTargetInsideModalContent which checks if the event target is one of the designated modal content tags (e.g., IX-DROPDOWN, IX-SELECT) and if it is contained within the modal.
    • Implemented a new private helper method isElementInsideModal to recursively traverse the DOM, including Shadow DOM roots, to verify if a given HTML element is a descendant of the modal's host element.
Activity
  • The pull request description includes a checklist for various development aspects (accessibility, internationalization, responsiveness, documentation, testing, linting, compilation), with static code analysis and successful compilation marked as complete.
  • No human comments or reviews have been recorded yet.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

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

Code Review

The pull request successfully addresses the issue where clicking overflowing components inside a modal (such as dropdowns or selects) causes the modal to close when closeOnBackdropClick is enabled. The fix introduces a check to see if the click target belongs to specific components (IX-DROPDOWN or IX-SELECT) that are descendants of the modal.

While effective, the current implementation has some maintenance and performance drawbacks: it uses a hardcoded list of tags and performs manual DOM traversal on every mouse event. I have suggested a more generic and performant approach that leverages the event target and the existing dialog element to distinguish between content and backdrop clicks without needing to know specific component tags.

@1307-Dev 1307-Dev marked this pull request as ready for review March 2, 2026 04:04
@sonarqubecloud
Copy link

sonarqubecloud bot commented Mar 2, 2026

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.

1 participant