Releases: vaadin/flow-components
Vaadin Flow Components V25.2.0-alpha5
Vaadin Flow Components 25.2.0-alpha5
This is a release of the Java integration for Vaadin Components to be used from the Java server side with Vaadin Flow.
Changes in Flow Components from 25.2.0-alpha4
Changes in vaadin-ai-components-flow
- Fixes:
-
⧉ Keep orchestrator usable after a sync failure. PR:9213
## Description After a synchronous failure during prompt processing, the orchestrator can get permanently stuck, the subsequent prompts can be logged as "Ignoring prompt: another request is already in progress" and silently dropped. The
isProcessingflag is only reset bystreamResponseToMessage'sdoFinally, which is registered on the Reactor subscription. IfprocessUserInputthrows before the subscription is wired (e.g. when anAttachmentSubmitListenerthrows)doFinallynever fires and the flag stays stuck. This PR wrapsprocessUserInputin atry/catchthat resets the flag and re-throws. The original exception still propagate to the caller, but the orchestrator stays usable so a retry once the dependency recovers actually reaches the provider. ## Type of change - [x] Bugfix - [ ] Feature ## Checklist - [x] I have read the contribution guide: https://vaadin.com/docs/latest/contributing/overview - [x] I have added a description following the guideline. - [ ] The issue is created in the corresponding repository and I have referenced it. - [x] I have added tests to ensure my change is effective and works as intended. - [x] New and existing tests are passing locally with my change. - [x] I have performed self-review and corrected misspellings. -
⧉ Detect silent abort after tool calls. PR:9212
## Description Follow-up to #9195. That previous fix catches a streaming response that ends without any
finish_reason. But it misses a related case: a tool-using exchange where the first roundtrip succeeds (emitting tool calls and afinish_reason) but the follow-up roundtrip silently aborts. The check is sticky: once a real terminal chunk has been observed, trailing metadata-only chunks (e.g. OpenAI's streamUsage trailer with empty choices and usage stats) cannot flip the gate back. This PR widens the check to track whether any chunk in the stream represented a terminal model state — a chunk that has afinish_reasonand no pending tool calls. Pending tool calls mean Spring AI is going to make another roundtrip, so a chunk with them is intermediate even if it has afinish_reason. The signal is a logged warning rather than a thrown error. The heuristic cannot enumerate every provider quirk across vendors and configurations, so a false positive must not surface as a user-visible failure on a valid response. Developers retain observability via logs; if responses appear truncated, the warning is the signal. ## Type of change - [x] Bugfix - [ ] Feature ## Checklist - [x] I have read the contribution guide: https://vaadin.com/docs/latest/contributing/overview - [x] I have added a description following the guideline. - [ ] The issue is created in the corresponding repository and I have referenced it. - [x] I have added tests to ensure my change is effective and works as intended. - [x] New and existing tests are passing locally with my change. - [x] I have performed self-review and corrected misspellings.
-
Changes in vaadin-menu-bar-flow
- Fixes:
-
⧉ Propagate menu-bar item tooltip to connector items. PR:9216
## Description The new
MenuBarTooltipControllerin@vaadin/menu-bar25.2.0-alpha9 (introduced in vaadin/web-components#11586) short-circuits insetTargetwhen the target's item has notooltipproperty — it clears the target and closes the tooltip immediately. Flow's connector built items without atooltipfield (tooltip text was only stored on the wrapper component and read via a custom generator), so menu-bar tooltips never opened.menubarConnector.jsso the controller's gating check recognizes the item as having a tooltip. The existing custom generator continues to read the live value fromitem.component.tooltip, so updates viasetTooltipTextstill display the latest text. VerifiedMenuBarTooltipITpasses (3/3) against localweb-componentsatmain. ## Type of change - Bugfix ---------
-
Changes in vaadin-popover-flow
- New Features:
-
⧉ Add setTabFocusEnabled API to Popover. PR:9208
## Summary Related to vaadin/web-components#11423 - Adds
Popover#setTabFocusEnabled(boolean)/isTabFocusEnabled()to the Flow wrapper, mapping to the web component'snoTabFocusproperty in positive form (defaulttrue, matching the web component's default ofnoTabFocus = false). - When set tofalse, pressing Tab on the target/sibling skips past the popover and Shift+Tab does not move focus into the popover's last focusable. Has no effect on modal popovers (which use their own focus trap), as documented in the Javadoc. - Mirrors the existing inverted-boolean pattern used forsetCloseOnEsc/setCloseOnOutsideClick. ## Test plan - [x] Unit testPopoverTest#setTabFocusEnabled_isTabFocusEnabledcovers the default state and toggling in both directions, asserting both the public getter and the underlyingnoTabFocuselement property. - [x]mvn spotless:applyclean. - [x]mvn test -pl vaadin-popover-flow-parent/vaadin-popover-flow -Dtest='PopoverTest'passes. 🤖 Generated with Claude Code
-
Compatibility
- This release use Web Components listed in Vaadin Platform 25.2.0-alpha5
- Tested with Vaadin Flow version 25.2.0-alpha9
Vaadin Flow Components V25.2.0-alpha4
Vaadin Flow Components 25.2.0-alpha4
This is a release of the Java integration for Vaadin Components to be used from the Java server side with Vaadin Flow.
Changes in Flow Components from 25.2.0-alpha3
Changes in All Components
- Chore:
- ⧉ Increase Web-Component version
Changes in vaadin-ai-components-flow
- Fixes:
-
⧉ Handle stream ends with no finish reasons. PR:9195
## Description In some cases, the response terminates without a
finish_reason. One case it happens is a request going over the context limit, and the result is treated like an empty response rather than an error. This is reproducible using LM Studio with a local model and setting the context length less than 4k for a chart generation query. This PR reports any response without afinish_reasonas an exception. This allows the developer to see the server logs for the details, and the user to see a generic error message that they can report. ## Type of change - [x] Bugfix - [ ] Feature ## Checklist - [x] I have read the contribution guide: https://vaadin.com/docs/latest/contributing/overview - [x] I have added a description following the guideline. - [ ] The issue is created in the corresponding repository and I have referenced it. - [x] I have added tests to ensure my change is effective and works as intended. - [x] New and existing tests are passing locally with my change. - [x] I have performed self-review and corrected misspellings. -
⧉ Surface controller render errors in chat. PR:9174
## Summary - Chart and grid controllers render synchronously; failures now propagate to the orchestrator instead of being swallowed inside a deferred lambda. - On controller failure, the orchestrator appends a new assistant message to the chat (e.g. "An error occurred. Please try again."). Fixes https://github.com/orgs/vaadin/projects/103/views/3?pane=issue&itemId=178096320 🤖 Generated with Claude Code
-
⧉ Do not leak exception messages to the LLM. PR:9172
## Summary - Tool error responses in
ChartAIToolsandGridAIToolsappended rawe.getMessage()to the string returned to the LLM, so any detail carried by an exception from a callback, JDBC driver, filesystem, or Jackson coercion could be repeated back to the end user via the model. - Introduced a privateValidationExceptionin each class. Only our own curated messages (e.g."chartId is required when multiple charts exist. Available chart IDs: [...]") pass through to the LLM; all other throwables are logged and replaced with a generic"Error ..."string. 🤖 Generated with Claude Code ---------
-
Changes in vaadin-button-flow
- New Features:
-
⧉ Add accessibleDisabledMenuItems feature flag. PR:9183
## Description Follow-up to vaadin/web-components#11541, which introduced the
accessibleDisabledMenuItemsfeature flag making disabled context-menu and menu-bar sub-menu items focusable and hoverable while still preventing selection and sub-menu opening. This PR registers the flag on the Flow side so users can opt in by adding the following tosrc/main/resources/vaadin-featureflags.properties:com.vaadin.experimental.accessibleDisabledMenuItems = trueThe flag is registered via a newAccessibleDisabledMenuItemsFeatureFlagProviderin thevaadin-context-menu-flowmodule.vaadin-menu-bar-flowpicks it up transitively via its existing dependency on context-menu-flow, so a single registration covers both components. Also refreshes theButton,MenuItem, andMenuBarItemsetEnabledJSDocs to mirror the shorter wording used in the web-components PR. TheMenuBarItemdoc now covers bothaccessibleDisabledButtons(for root-level items) andaccessibleDisabledMenuItems(for sub-menu items). ## Type of change - Feature ---------
-
Changes in vaadin-combo-box-flow
- New Features:
-
⧉ Add Aura filled variant to components supporting it. PR:9182
## Description Related to vaadin/web-components#11511 Added
filledvariant (changes the item:hoverand:activeappearance) to the following components: - ComboBox - MultiSelectComboBox - MenuBar - Select - TimePicker ## Type of change - Feature
-
Changes in vaadin-context-menu-flow
- New Features:
-
⧉ Add accessibleDisabledMenuItems feature flag. PR:9183
## Description Follow-up to vaadin/web-components#11541, which introduced the
accessibleDisabledMenuItemsfeature flag making disabled context-menu and menu-bar sub-menu items focusable and hoverable while still preventing selection and sub-menu opening. This PR registers the flag on the Flow side so users can opt in by adding the following tosrc/main/resources/vaadin-featureflags.properties:com.vaadin.experimental.accessibleDisabledMenuItems = trueThe flag is registered via a newAccessibleDisabledMenuItemsFeatureFlagProviderin thevaadin-context-menu-flowmodule.vaadin-menu-bar-flowpicks it up transitively via its existing dependency on context-menu-flow, so a single registration covers both components. Also refreshes theButton,MenuItem, andMenuBarItemsetEnabledJSDocs to mirror the shorter wording used in the web-components PR. TheMenuBarItemdoc now covers bothaccessibleDisabledButtons(for root-level items) andaccessibleDisabledMenuItems(for sub-menu items). ## Type of change - Feature ---------
-
Changes in vaadin-grid-flow
- Fixes:
-
⧉ Reset cell order according to order of columns in DOM. PR:9190. Ticket:9119
## Description As a follow-up to vaadin/web-components#11522, this makes the Flow component use the newly introduced
_resetColumnOrdermethod, and updates a test with a previously incorrect test setup to serve as a proper regression test. ## Type of change - Bugfix --------- -
⧉ Change client selectAll update to use LinkedHashSet. PR:9169. Ticket:9170
---------
-
Changes in vaadin-menu-bar-flow
- New Features:
-
⧉ Add accessibleDisabledMenuItems feature flag. PR:9183
## Description Follow-up to vaadin/web-components#11541, which introduced the
accessibleDisabledMenuItemsfeature flag making disabled context-menu and menu-bar sub-menu items focusable and hoverable while still preventing selection and sub-menu opening. This PR registers the flag on the Flow side so users can opt in by adding the following tosrc/main/resources/vaadin-featureflags.properties:com.vaadin.experimental.accessibleDisabledMenuItems = trueThe flag is registered via a newAccessibleDisabledMenuItemsFeatureFlagProviderin thevaadin-context-menu-flowmodule.vaadin-menu-bar-flowpicks it up transitively via its existing dependency on context-menu-flow, so a single registration covers both components. Also refreshes theButton,MenuItem, andMenuBarItemsetEnabledJSDocs to mirror the shorter wording used in the web-components PR. TheMenuBarItemdoc now covers bothaccessibleDisabledButtons(for root-level items) andaccessibleDisabledMenuItems(for sub-menu items). ## Type of change - Feature --------- -
⧉ Add Aura filled variant to components supporting it. PR:9182
## Description Related to vaadin/web-components#11511 Added
filledvariant (changes the item:hoverand:activeappearance) to the following components: - ComboBox - MultiSelectComboBox - MenuBar - Select - TimePicker ## Type of change - Feature
-
Changes in vaadin-select-flow
- New Features:
-
⧉ Add Aura filled variant to components supporting it. PR:9182
## Description Related to vaadin/web-components#11511 Added
filledvariant (changes the item:hoverand:activeappearance) to the following components: - ComboBox - MultiSelectComboBox - MenuBar - Select - TimePicker ## Type of change - Feature
-
Changes in vaadin-slider-flow
- Breaking Changes:
- ⧉ Add "Decimal" prefix to decimal slider var...
Vaadin Flow Components V25.1.4
Vaadin Flow Components 25.1.4
This is a release of the Java integration for Vaadin Components to be used from the Java server side with Vaadin Flow.
Changes in Flow Components from 25.1.3
Changes in All Components
- Chore:
- ⧉ Increase Web-Component version
Changes in vaadin-grid-flow
- Fixes:
-
⧉ Reset cell order according to order of columns in DOM (#9190) (CP: 25.1). PR:9198
This PR cherry-picks changes from the original PR #9190 to branch 25.1. --- > ## Description > > As a follow-up to vaadin/web-components#11522, this makes the Flow component use the newly introduced
_resetColumnOrdermethod, and updates a test with a previously incorrect test setup to serve as a proper regression test. > > Fixes #9119 > > ## Type of change > > - Bugfix > -
⧉ Change client selectAll update to use LinkedHashSet (CP: 25.1) (#9169). PR:9175
This PR cherry-picks changes from the original PR #9169 to branch 25.1. --- > Fixes #9170
-
Compatibility
Vaadin Flow Components V25.0.10
Vaadin Flow Components 25.0.10
This is a release of the Java integration for Vaadin Components to be used from the Java server side with Vaadin Flow.
Changes in Flow Components from 25.0.9
Changes in All Components
- Chore:
- ⧉ Increase Web-Component version
Changes in vaadin-grid-flow
- Fixes:
Compatibility
Vaadin Flow Components V24.10.3
Vaadin Flow Components 24.10.3
This is a release of the Java integration for Vaadin Components to be used from the Java server side with Vaadin Flow.
Changes in Flow Components from 24.10.2
Changes in All Components
- Chore:
- ⧉ Increase Web-Component version
Changes in vaadin-grid-flow
- Fixes:
Compatibility
Vaadin Flow Components V24.9.16
Vaadin Flow Components 24.9.16
This is a release of the Java integration for Vaadin Components to be used from the Java server side with Vaadin Flow.
Changes in Flow Components from 24.9.15
Changes in All Components
- Chore:
- ⧉ Increase Web-Component version
Changes in vaadin-grid-flow
- Fixes:
Compatibility
Vaadin Flow Components V25.2.0-alpha3
Vaadin Flow Components 25.2.0-alpha3
This is a release of the Java integration for Vaadin Components to be used from the Java server side with Vaadin Flow.
Changes in Flow Components from 25.2.0-alpha2
Changes in All Components
- Chore:
Changes in vaadin-ai-components-flow
-
New Features:
-
⧉ Add OHLC volume series guidance to chart AI tools. PR:9114
_## Summary - Adds LLM guidance for the OHLC/candlestick + volume series pattern to the
update_chart_data_sourcetool description - Instructs the LLM to use_x,_y, and_seriesaliases for the volume query so the series gets proper datetime X values and a name for per-series config matching ### Testing - The fix can be tested using branchfix/chart-ai-controller-candlestick-volume-testBefore:
After:
_ -
⧉ Add 3D chart support with options3d and frame configuration. PR:9093
_## Summary - Add 3D chart support (
options3dandframeconfiguration) to the chart AI tools schema _ -
⧉ Per-series configuration and dual y-axis support. PR:9084
_## Summary - Add per-series configuration support allowing mixed chart types and individual series styling (e.g., one series as column, another as line) - Add dual y-axis support via series-level
yAxisbinding and array-based y-axis configuration schema Part of https://github.com/orgs/vaadin/projects/103/views/3?pane=issue&itemId=173099386 Related to #9071 Depends on #9079 _ -
⧉ Add generic plot options schema generation and lookup tool. PR:9079
## Summary - Add
PlotOptionsSchemaGeneratorthat builds JSON schemas for each chart type's plot options at build time, with property descriptions parsed from JavaDoc - AddPlotOptionsSchemaruntime loader andget_plot_options_schematool for LLMs to discover available styling properties - Replace hardcoded plot options inupdate_chart_configurationschema withadditionalPropertiesand dynamic schema lookup - RefactorChartConfigurationParserto use Jackson-basedPlotOptionsdeserialization with Color support, lenient enums, and field-based access Part of https://github.com/orgs/vaadin/projects/103/views/3?pane=issue&itemId=173099386 Related to #9071 ---------
-
-
Fixes:
-
⧉ Prevent AIOrchestrator instances from sharing resources. PR:9161
## Summary - Each
LLMProvider, message list, input, file receiver, and controller passed to anAIOrchestratormust be used by at most one orchestrator - Reusing an instance now throwsIllegalStateExceptionFixes https://github.com/orgs/vaadin/projects/103/views/3?pane=issue&itemId=178098791 --------- -
⧉ Match config series to data by name, fall back to position. PR:9142
## Summary - Series configuration templates (names,
plotOptions,yAxis) are matched to data series by name first, with positional fallback for unmatched ones, so LLM-specified legend labels always take effect without swapping data under the wrong labels when SQL returns series in a different order than the config - Previously,applySeriesConfigonly matched by name, which failed for unnamed multi-query series (e.g., candlestick + volume) and for_SERIES-named series where the config used different labels Before:
After:
--------- -
⧉ Resolve unrecognized chart ID to single available chart. PR:9112
## Summary - Fixes
IllegalStateExceptioninChartEntry.getOrCreatewhen the LLM provides an unrecognizedchartId(e.g."1"instead of"chart").resolveChartIdnow validates the provided ID against available charts and falls back to the single available chart when there is exactly one. - Found during a DX test. --------- -
⧉ Avoid NPE in ChartRenderer when chart type is null. PR:9111
_## Summary - Fixes NPE in
ChartRenderer.applyAxisDefaultswhen chart type is not set (data-only update without configuration).Set.of().contains(null)throws NPE; added null guard to treat unset type as default (line chart with category axis). - Found during a DX test. _ -
⧉ Set PlotOptionsFlags on flags data series. PR:9097
_## Summary - When the chart-level type differs from
flags(e.g.column), aDataSeriescontainingFlagItemobjects would not render as flags because it lackedPlotOptionsFlags- AddsapplyFlagsPlotOptions()toChartRendererthat auto-detects flag series by their data items and setsPlotOptionsFlagswhen missing, while preserving any pre-configured plot options _ -
⧉ Add XY series detection to data converter. PR:9095
## Summary - Adds
tryXYpattern toDefaultDataConverterto handle data with_Xand_Ycolumn aliases - Without this, scatter charts and candlestick volume series fall through to the fallback handler which misclassifies columns (dates become category names, second numeric column is ignored) --------- -
⧉ Add missing descriptions to tool parameter schema properties. PR:9087
## Summary - Add descriptions to all tool parameter schema properties in
ChartAIToolsthat were previously missing them, improving the quality of LLM tool-calling by providing clear semantics for each property ---------
-
Changes in vaadin-map-flow
- Fixes:
-
⧉ Register Map resources on the Map element. PR:9134. Ticket:9129
## Description Map uses a custom JSON serializer to automatically register stream resources in the UI when it encounters those during serialization. Currently, those are registered on the UI itself and not on the Map element. This results in access to those resources being denied from the server while a server-side modal is opened. This fixes the serializer to register the stream resources on the map. Thus clients are allowed to access these resources when the map is within a strict modal dialog for example. ## Type of change - Bugfix
-
Changes in vaadin-master-detail-layout-flow
- Breaking Changes:
-
⧉ Replace ExpandingArea with expandMaster and expandDetail. PR:9156
## Description Follow-up to the web component change vaadin/web-components#11521 Replaces the
expandenum-valued attribute onMasterDetailLayoutwith two independent boolean properties: - Removes theExpandingAreaenum andget/setExpandingAreamethods - AddsisExpandMaster/setExpandMaster(boolean)(defaults tofalse) - AddsisExpandDetail/setExpandDetail(boolean)(defaults tofalse) - Drops theExpandingAreaparameter from the two convenience constructors; callers configure expansion via the new setters Part of vaadin/web-components#11519 ## Type of change - Refactor -
⧉ Remove MasterDetailLayoutVariant. PR:9150
_## Summary - Deletes the
MasterDetailLayoutVariantenum and dropsHasThemeVariant<MasterDetailLayoutVariant>fromMasterDetailLayout. - The sole variantAURA_INSET_DRAWERis b...
-
Vaadin Flow Components V25.0.9
Vaadin Flow Components 25.0.9
This is a release of the Java integration for Vaadin Components to be used from the Java server side with Vaadin Flow.
Changes in Flow Components from 25.0.8
Changes in All Components
- Chore:
- ⧉ Increase Web-Component version
Changes in vaadin-map-flow
- Fixes:
-
⧉ Register Map resources on the Map element (#9134) (CP: 25.0). PR:9139
This PR cherry-picks changes from the original PR #9134 to branch 25.0. --- > ## Description > > Map uses a custom JSON serializer to automatically register stream resources in the UI when it encounters those during serialization. Currently, those are registered on the UI itself and not on the Map element. This results in access to those resources being denied from the server while a server-side modal is opened. > > This fixes the serializer to register the stream resources on the map. Thus clients are allowed to access these resources when the map is within a strict modal dialog for example. > > Fixes #9129 > > ## Type of change > > - Bugfix >
-
Changes in vaadin-spreadsheet-flow
- Fixes:
-
⧉ Prevent infinite focus loop and stale selection in custom editors (CP: 25.1) (#9120). PR:9124
This PR cherry-picks changes from the original PR #9113 to branch 25.1. --- > ## Summary > - Fix infinite
cellSelectedfeedback loop triggered by programmatic focus changes (e.g.inputElement.select()) inonCustomEditorDisplayedcallbacks > - Prevent delayed server responses from hijacking the cell selection when the user has already navigated away, including via keyboard navigation through cells with custom editors > - Add server-side reentrancy guard to prevent recursiveonCustomEditorDisplayedcalls when callback code callsrefreshCells()> > ## Root cause >CustomEditorEventListener.ONFOCUSunconditionally sentcellSelectedto the server and updated the client-side selection on every focus event — including programmatic focus frominputElement.select()called inonCustomEditorDisplayed. When the callback had non-trivial processing time, the delayed response would steal focus and selection from whatever cell the user had since navigated to, and could trigger an infinite client→server→client loop. > > ## Approach > Client-side (CustomEditorEventListener): trackmousedown/touchstartevents to distinguish user-initiated focus from programmatic focus. Only update the selection and sendcellSelectedfor user-initiated focus. For programmatic focus on a cell the user has already left, return focus to the sheet. Keyboard navigation is unaffected becauseSelectionHandleralready handles selection updates andcellSelectedindependently. > > Server-side (Spreadsheet): reentrancy guard (insideCustomEditorCallback) onloadCustomEditorOnSelectedCell()to prevent recursiveonCustomEditorDisplayedcalls when user code in the callback callsrefreshCells(). > > Fixes #9036 > > ## Test plan > - [ ]CustomEditorIT#comboBoxEditorWithSelect_clickCell_callbackFiredOnce— verifies single click triggers exactly 1 callback (no loop) > - [ ]CustomEditorIT#comboBoxEditorWithSelect_switchBetweenCells_noInfiniteLoop— rapidly clicks through editor cells to a non-editor cell, verifies selection stays on the final cell and callback count is bounded > - [ ] All 26 existingCustomEditorITtests pass (keyboard navigation, Tab, Shift+Tab, F2, Enter, ESC, shared editors, frozen panes, always-visible mode) > > 🤖 Generated with Claude Code -
⧉ Reset freeze pane split positions when switching sheets (#9035) (CP: 25.0). PR:9045
This PR cherry-picks changes from the original PR #9035 to branch 25.0. --- > ## Summary > - Fixes freeze pane state bleeding between sheets when switching tabs in Spreadsheet > - When switching from a sheet with a freeze pane split to one without that split type, the previous sheet's split position was not reset to 0, causing it to persist visually > - Root cause: commit a1963f9 guarded
setHorizontalSplitPosition/setVerticalSplitPositionbehind split-exists checks but theelsebranches never explicitly reset the positions to 0 > > Fixes #9006 > > ## Test plan > - [x] New unit tests inSpreadsheetFactoryTestverify all freeze pane combinations (both splits, only rows, only columns, none) and the sheet-switching bleed scenario > - [x] Rollback verification: 3 of 5 unit tests fail without the fix, pass with it > - [x] Existing regression tests (HiddenAndFrozenIT,LoadFileWithFrozenPaneScrolledIT,MergedCellFrozenIT) all pass > > 🤖 Generated with Claude Code ---------
-
Compatibility
Vaadin Flow Components V25.1.3
Vaadin Flow Components 25.1.3
This is a release of the Java integration for Vaadin Components to be used from the Java server side with Vaadin Flow.
Changes in Flow Components from 25.1.2
Changes in vaadin-map-flow
- Fixes:
-
⧉ Register Map resources on the Map element (#9134) (CP: 25.1). PR:9138
This PR cherry-picks changes from the original PR #9134 to branch 25.1. --- > ## Description > > Map uses a custom JSON serializer to automatically register stream resources in the UI when it encounters those during serialization. Currently, those are registered on the UI itself and not on the Map element. This results in access to those resources being denied from the server while a server-side modal is opened. > > This fixes the serializer to register the stream resources on the map. Thus clients are allowed to access these resources when the map is within a strict modal dialog for example. > > Fixes #9129 > > ## Type of change > > - Bugfix >
-
Compatibility
Vaadin Flow Components V25.1.2
Vaadin Flow Components 25.1.2
This is a release of the Java integration for Vaadin Components to be used from the Java server side with Vaadin Flow.
Changes in Flow Components from 25.1.1
Changes in All Components
- Chore:
- ⧉ Increase Web-Component version
Changes in vaadin-spreadsheet-flow
- Fixes:
-
⧉ Prevent infinite focus loop and stale selection in custom editors (CP: 25.1). PR:9120
This PR cherry-picks changes from the original PR #9113 to branch 25.1. --- > ## Summary > - Fix infinite
cellSelectedfeedback loop triggered by programmatic focus changes (e.g.inputElement.select()) inonCustomEditorDisplayedcallbacks > - Prevent delayed server responses from hijacking the cell selection when the user has already navigated away, including via keyboard navigation through cells with custom editors > - Add server-side reentrancy guard to prevent recursiveonCustomEditorDisplayedcalls when callback code callsrefreshCells()> > ## Root cause >CustomEditorEventListener.ONFOCUSunconditionally sentcellSelectedto the server and updated the client-side selection on every focus event — including programmatic focus frominputElement.select()called inonCustomEditorDisplayed. When the callback had non-trivial processing time, the delayed response would steal focus and selection from whatever cell the user had since navigated to, and could trigger an infinite client→server→client loop. > > ## Approach > Client-side (CustomEditorEventListener): trackmousedown/touchstartevents to distinguish user-initiated focus from programmatic focus. Only update the selection and sendcellSelectedfor user-initiated focus. For programmatic focus on a cell the user has already left, return focus to the sheet. Keyboard navigation is unaffected becauseSelectionHandleralready handles selection updates andcellSelectedindependently. > > Server-side (Spreadsheet): reentrancy guard (insideCustomEditorCallback) onloadCustomEditorOnSelectedCell()to prevent recursiveonCustomEditorDisplayedcalls when user code in the callback callsrefreshCells(). > > Fixes #9036 > > ## Test plan > - [ ]CustomEditorIT#comboBoxEditorWithSelect_clickCell_callbackFiredOnce— verifies single click triggers exactly 1 callback (no loop) > - [ ]CustomEditorIT#comboBoxEditorWithSelect_switchBetweenCells_noInfiniteLoop— rapidly clicks through editor cells to a non-editor cell, verifies selection stays on the final cell and callback count is bounded > - [ ] All 26 existingCustomEditorITtests pass (keyboard navigation, Tab, Shift+Tab, F2, Enter, ESC, shared editors, frozen panes, always-visible mode) > > 🤖 Generated with Claude Code -
⧉ Reset freeze pane split positions when switching sheets (#9035) (CP: 25.1). PR:9041
This PR cherry-picks changes from the original PR #9035 to branch 25.1. --- > ## Summary > - Fixes freeze pane state bleeding between sheets when switching tabs in Spreadsheet > - When switching from a sheet with a freeze pane split to one without that split type, the previous sheet's split position was not reset to 0, causing it to persist visually > - Root cause: commit a1963f9 guarded
setHorizontalSplitPosition/setVerticalSplitPositionbehind split-exists checks but theelsebranches never explicitly reset the positions to 0 > > Fixes #9006 > > ## Test plan > - [x] New unit tests inSpreadsheetFactoryTestverify all freeze pane combinations (both splits, only rows, only columns, none) and the sheet-switching bleed scenario > - [x] Rollback verification: 3 of 5 unit tests fail without the fix, pass with it > - [x] Existing regression tests (HiddenAndFrozenIT,LoadFileWithFrozenPaneScrolledIT,MergedCellFrozenIT) all pass > > 🤖 Generated with Claude Code
-