Skip to content

Conversation

@tsullivan
Copy link
Member

@tsullivan tsullivan commented Oct 30, 2025

Summary

Makes the Flyout System truly opt-in by changing the session value default from inherit to never.

Module Change
EuiFlyout Changed: session prop
The default has been changed from inherit to never

Closes #9158.

Why are we making this change?

The default of inherit was problematic. It meant that a flyout with no session value added would automatically become a child if a session flyout is active. This would be a problem in Kibana, where all flyouts currently have no session value. Work would be needed to address the problem by adding session="start" on them to avoid possible bugs, which means the default logic planned would amount to a breaking change.

Impact to users

BREAKING CHANGE - the default of session has been changed to never.

The default value of EuiFlyout session prop is changing from inherit to never. This makes the flyout session management system truly opt-in: a flyout that has not been modified and has no session prop set will not become a child flyout of an active main flyout and will continue to act as a regular flyout. Flyouts will only become a child of when they have the session value set to inherit.

  • Not changed: if a flyout has an undefined value for session and is nested within a main flyout, it behaves as a child flyout.
  • Not changed: if a flyout has session="inherit" and there is no main flyout, it will behave as a regular flyout.

To continue the previous behavior of a flyout rendered as a child, you can explicitly set the session prop to inherit, or you can nest the flyout into a main flyout.

This breaking change only effects the code in the feature branch. There are no EUI releases that have the previous behavior.

QA

Remove or strikethrough items that do not apply to your PR.

General checklist

  • Browser QA
    • [ ] Checked in both light and dark modes
    • [ ] Checked in both MacOS and Windows high contrast modes
    • [ ] Checked in mobile
    • [ ] Checked in Chrome, Safari, Edge, and Firefox
    • [ ] Checked for accessibility including keyboard-only and screenreader modes
  • Docs site QA
  • Code quality checklist
  • Release checklist
    • A changelog entry exists and is marked appropriately
    • If applicable, added the breaking change issue label (and filled out the breaking change checklist)
    • [ ] If the changes unblock an issue in a different repo, smoke tested carefully (see Testing EUI features in Kibana ahead of time)
  • Designer checklist
    • [ ] If applicable, file an issue to update EUI's Figma library with any corresponding UI changes. (This is an internal repo, if you are external to Elastic, ask a maintainer to submit this request)

@tsullivan tsullivan force-pushed the flyout-system/fix-session-logic branch from 7e80d70 to 8231b64 Compare October 30, 2025 19:51
@tsullivan tsullivan changed the title Flyout system/fix session logic [Flyout System] Make session logic truly opt-in Oct 30, 2025
@tsullivan tsullivan added the breaking change PRs with breaking changes. (Don't delete - used for automation) label Oct 30, 2025
@tsullivan tsullivan force-pushed the flyout-system/fix-session-logic branch from f98c459 to 44c5fdb Compare October 30, 2025 20:10
@tsullivan tsullivan marked this pull request as ready for review October 30, 2025 20:14
@tsullivan tsullivan requested a review from a team as a code owner October 30, 2025 20:14
@tkajtoch tkajtoch self-requested a review October 30, 2025 21:50
@tkajtoch
Copy link
Member

tkajtoch commented Nov 4, 2025

I reviewed and tested this PR and found that the current behavior of the session prop for child flyouts might be confusing. We agreed with Tim to update the logic to default to session="inherit" when EuiFlyout is rendered inside of a main flyout.

@tsullivan
Copy link
Member Author

tsullivan commented Nov 4, 2025

As it currently is in this PR, a flyout could be structured within a managed flyout but not be a child - it would even then need session="inherit". This is not very intuitive. The routing logic we want is:

main flyout:
  - has `session="start"`
child flyout:
  - has `session="inherit"` OR
  - is structured inside of a "main"
normal flyout:
  - has `session="never"` OR
  - has no explicit session prop and is not nested inside of a "main"

cc @tkajtoch

@tkajtoch
Copy link
Member

tkajtoch commented Nov 4, 2025

I'm gonna test it shortly. Thank you @tsullivan!

@tsullivan
Copy link
Member Author

tsullivan commented Nov 6, 2025

Blocked on #9178

@tsullivan tsullivan changed the base branch from main to feat/flyout-system November 10, 2025 17:09
@tsullivan
Copy link
Member Author

The modifications mentioned here have been implemented.

@tkajtoch @weronikaolejniczak this is ready for another look

@weronikaolejniczak
Copy link
Contributor

@tsullivan I'll take a look at this today, one doubt I have is - we should merge it into the feature branch, not main, right?

@tsullivan tsullivan removed the breaking change PRs with breaking changes. (Don't delete - used for automation) label Nov 11, 2025
@elastic elastic deleted a comment from github-actions bot Nov 11, 2025
@tsullivan
Copy link
Member Author

I'll take a look at this today, one doubt I have is - we should merge it into the feature branch, not main, right?

@weronikaolejniczak thanks! You are correct. This PR is targeted to the feat/flyout-system feature branch.

@tsullivan
Copy link
Member Author

I've removed the breaking change label on this PR because the change only effects the code in the feat/flyout-system feature branch. There are no EUI releases that have the previous behavior, so it is not a true breaking change.

@tsullivan tsullivan force-pushed the flyout-system/fix-session-logic branch from cf826f9 to 0481268 Compare November 13, 2025 20:31
@tsullivan tsullivan force-pushed the flyout-system/fix-session-logic branch from 0481268 to 2b2ea52 Compare November 13, 2025 20:36
@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

@elasticmachine
Copy link
Collaborator

💚 Build Succeeded

History

Copy link
Member

@tkajtoch tkajtoch left a comment

Choose a reason for hiding this comment

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

Thank you for updating the session inheritance logic! LGTM

@tsullivan tsullivan merged commit e9787a9 into elastic:feat/flyout-system Nov 24, 2025
4 checks passed
@tsullivan tsullivan deleted the flyout-system/fix-session-logic branch November 24, 2025 14:38
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.

[Flyout System] The logic on allowed child flyouts causes breaking changes

4 participants