Repository navigation
ELEMENTS-2095: Keep calendar open during month navigation [lts-2025] - #1735
Open
vivekchaturved013 wants to merge 5 commits into
Open
vivekchaturved013 wants to merge 5 commits into
vivekchaturved013 wants to merge 5 commits into
Conversation
Remove the wrapper focusout workaround that refocused the text input and closed the calendar when a day or navigation control lost focus. Resolve focus across nested shadow roots and keep external focus requests inside the open popover, rather than relying on a 200 ms suppression window. Avoid rebuilding unused month-year options during navigation. Cover unbounded navigation, focus loss, nested hosts, keyboard interaction, outside focus, typing, year selection, and first-click date selection.
vivekchaturved013
requested review from
akoppaka and
naveen-konda
and removed request for
a team
October 9, 2026 06:53
Contributor
There was a problem hiding this comment.
🟢 Approval recommended
The focused implementation addresses the reported conflict and is supported by comprehensive regression coverage.
0 open findings
What changed in this PR
Fixes calendar dismissal during month navigation by correcting focus handling across nested shadow roots.
Changes:
- Removes conflicting refocus and timing-based suppression logic.
- Preserves calendar focus while retaining outside-focus dismissal.
- Adds comprehensive focus, navigation, and date-selection regressions.
| File | Description |
|---|---|
ui/widgets/nuxeo-date-picker.js |
Removes wrapper-driven refocusing. |
ui/widgets/custom-date-picker.js |
Adds shadow-aware focus handling and simplifies navigation. |
ui/test/nuxeo-date-picker.test.js |
Covers wrapper and nested-focus regressions. |
ui/test/custom-date-picker.test.js |
Expands focus, navigation, boundary, and keyboard coverage. |
🧠 Review effort: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
This pull request was retargeted from the release branch to its dev branch. GitHub does not re-run checks on a base change, so this empty commit forces a fresh run against the new base. No content change.
…-2025 Conflict: custom-date-picker.js module scope. develop-2025 hoisted COMMON_INPUT_FORMATS and VALID_MOMENT_TOKENS next to FOCUS_SUPPRESSION_MS; this branch deletes FOCUS_SUPPRESSION_MS. Kept both new constants and the deletion.
… date The focus() fallback test pinned min to 2026-10-15 and viewed October 2026. _getDayTabIndex makes today's cell the tab stop whenever today is in the viewed month, so the test only saw a disabled tab stop while the suite ran before 15 October 2026, and started failing on the 16th. View January 2020 instead: no selection and no today in that month, so the tab stop is the 1st, and a min of 2020-02-01 leaves it disabled whatever the current date is. min is assigned last because _minChanged is what regenerates the grid.
|
narasimhahyland
approved these changes
Oct 16, 2026
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.



The calendar can close after Previous-month navigation when a calendar control loses focus. The
nuxeo-date-pickerwrapper refocuses the text input onfocusout, and the inner picker closes its popover when that input receives focus. Its 200 ms suppression window does not remove that conflict.Changes
min, focus loss after the old grace period, nested hosts, Enter/Space, the year dropdown, and first-click date selection. Add a disabled minimum-date focus target regression and retain the existing min-boundary tests.Validation
npm run format,npm run lint, andnpm testpassed on both release bases.Reproduction and limits
Both the isolated browser harness and the actual Workspace edit dialog reproduce the focus-loss chain after navigating back one month and blurring the focused day cell after the 200 ms window. The baseline closes the calendar and the patched code leaves it open. Previous-click alone did not close it in this environment, consistent with the ticket's earlier analysis; this evidence is a deterministic reproduction of the focus conflict, rather than a claim that every reported environment was reproduced.
The shared picker is used by document create/edit/import layouts, History date ranges, permission dates, workflow forms, and addons. QA should verify these consumers with mouse and keyboard. No new i18n keys, dependency changes, or vendored changes.