Skip to content

Releases: vaadin/flow-components

Vaadin Flow Components V25.2.0-alpha5

30 Apr 11:05
773610f

Choose a tag to compare

Pre-release

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 isProcessing flag is only reset by streamResponseToMessage's doFinally, which is registered on the Reactor subscription. If processUserInput throws before the subscription is wired (e.g. when an AttachmentSubmitListener throws) doFinally never fires and the flag stays stuck. This PR wraps processUserInput in a try/catch that 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 a finish_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 a finish_reason and 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 a finish_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 MenuBarTooltipController in @vaadin/menu-bar 25.2.0-alpha9 (introduced in vaadin/web-components#11586) short-circuits in setTarget when the target's item has no tooltip property — it clears the target and closes the tooltip immediately. Flow's connector built items without a tooltip field (tooltip text was only stored on the wrapper component and read via a custom generator), so menu-bar tooltips never opened. menubarConnector.js so the controller's gating check recognizes the item as having a tooltip. The existing custom generator continues to read the live value from item.component.tooltip, so updates via setTooltipText still display the latest text. Verified MenuBarTooltipIT passes (3/3) against local web-components at main. ## 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's noTabFocus property in positive form (default true, matching the web component's default of noTabFocus = false). - When set to false, 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 for setCloseOnEsc / setCloseOnOutsideClick. ## Test plan - [x] Unit test PopoverTest#setTabFocusEnabled_isTabFocusEnabled covers the default state and toggling in both directions, asserting both the public getter and the underlying noTabFocus element property. - [x] mvn spotless:apply clean. - [x] mvn test -pl vaadin-popover-flow-parent/vaadin-popover-flow -Dtest='PopoverTest' passes. 🤖 Generated with Claude Code

Compatibility

Vaadin Flow Components V25.2.0-alpha4

27 Apr 14:38
b88af58

Choose a tag to compare

Pre-release

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 a finish_reason as 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 ChartAITools and GridAITools appended raw e.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 private ValidationException in 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 accessibleDisabledMenuItems feature 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 to src/main/resources/vaadin-featureflags.properties: com.vaadin.experimental.accessibleDisabledMenuItems = true The flag is registered via a new AccessibleDisabledMenuItemsFeatureFlagProvider in the vaadin-context-menu-flow module. vaadin-menu-bar-flow picks it up transitively via its existing dependency on context-menu-flow, so a single registration covers both components. Also refreshes the Button, MenuItem, and MenuBarItem setEnabled JSDocs to mirror the shorter wording used in the web-components PR. The MenuBarItem doc now covers both accessibleDisabledButtons (for root-level items) and accessibleDisabledMenuItems (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 filled variant (changes the item :hover and :active appearance) 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 accessibleDisabledMenuItems feature 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 to src/main/resources/vaadin-featureflags.properties: com.vaadin.experimental.accessibleDisabledMenuItems = true The flag is registered via a new AccessibleDisabledMenuItemsFeatureFlagProvider in the vaadin-context-menu-flow module. vaadin-menu-bar-flow picks it up transitively via its existing dependency on context-menu-flow, so a single registration covers both components. Also refreshes the Button, MenuItem, and MenuBarItem setEnabled JSDocs to mirror the shorter wording used in the web-components PR. The MenuBarItem doc now covers both accessibleDisabledButtons (for root-level items) and accessibleDisabledMenuItems (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 _resetColumnOrder method, 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 accessibleDisabledMenuItems feature 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 to src/main/resources/vaadin-featureflags.properties: com.vaadin.experimental.accessibleDisabledMenuItems = true The flag is registered via a new AccessibleDisabledMenuItemsFeatureFlagProvider in the vaadin-context-menu-flow module. vaadin-menu-bar-flow picks it up transitively via its existing dependency on context-menu-flow, so a single registration covers both components. Also refreshes the Button, MenuItem, and MenuBarItem setEnabled JSDocs to mirror the shorter wording used in the web-components PR. The MenuBarItem doc now covers both accessibleDisabledButtons (for root-level items) and accessibleDisabledMenuItems (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 filled variant (changes the item :hover and :active appearance) 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 filled variant (changes the item :hover and :active appearance) 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...
Read more

Vaadin Flow Components V25.1.4

27 Apr 09:22
7248023

Choose a tag to compare

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 _resetColumnOrder method, 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

  • This release use Web Components listed in Vaadin Platform 25.1.4
  • Tested with Vaadin Flow version 25.1.4

Vaadin Flow Components V25.0.10

27 Apr 09:22
c38e2ab

Choose a tag to compare

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:
    • Change client selectAll update to use LinkedHashSet (CP: 25.1) (#9169) (#9175) (CP: 25.0). PR:9178

      This PR cherry-picks changes from the original PR #9175 to branch 25.0. --- > This PR cherry-picks changes from the original PR #9169 to branch 25.1. > > --- > > > Fixes #9170

Compatibility

  • This release use Web Components listed in Vaadin Platform 25.0.10
  • Tested with Vaadin Flow version 25.0.11

Vaadin Flow Components V24.10.3

27 Apr 09:23
427d283

Choose a tag to compare

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:
    • Change client selectAll update to use LinkedHashSet (CP: 25.1) (#9169) (#9175) (CP: 24.10). PR:9177

      This PR cherry-picks changes from the original PR #9175 to branch 24.10. --- > This PR cherry-picks changes from the original PR #9169 to branch 25.1. > > --- > > > Fixes #9170

Compatibility

  • This release use Web Components listed in Vaadin Platform 24.10.3
  • Tested with Vaadin Flow version 24.10.3

Vaadin Flow Components V24.9.16

27 Apr 09:28
d7c2536

Choose a tag to compare

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:
    • Change client selectAll update to use LinkedHashSet (CP: 25.1) (#9169) (#9175) (CP: 24.9). PR:9179

      This PR cherry-picks changes from the original PR #9175 to branch 24.9. --- > This PR cherry-picks changes from the original PR #9169 to branch 25.1. > > --- > > > Fixes #9170

Compatibility

  • This release use Web Components listed in Vaadin Platform 24.9.16
  • Tested with Vaadin Flow version 24.9.17

Vaadin Flow Components V25.2.0-alpha3

22 Apr 10:04
5843890

Choose a tag to compare

Pre-release

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:
    • Increase Web-Component version
    • Increase Web-Component version
    • Increase Web-Component version
    • Increase Web-Component version

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_source tool description - Instructs the LLM to use _x, _y, and _series aliases 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 branch fix/chart-ai-controller-candlestick-volume-test Before: candlestick-before After: candlestick-after _

    • Add 3D chart support with options3d and frame configuration. PR:9093

      _## Summary - Add 3D chart support (options3d and frame configuration) 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 yAxis binding 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 PlotOptionsSchemaGenerator that builds JSON schemas for each chart type's plot options at build time, with property descriptions parsed from JavaDoc - Add PlotOptionsSchema runtime loader and get_plot_options_schema tool for LLMs to discover available styling properties - Replace hardcoded plot options in update_chart_configuration schema with additionalProperties and dynamic schema lookup - Refactor ChartConfigurationParser to use Jackson-based PlotOptions deserialization 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 an AIOrchestrator must be used by at most one orchestrator - Reusing an instance now throws IllegalStateException Fixes 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, applySeriesConfig only 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: Screenshot 2026-04-16 at 17 10 46 After: Screenshot 2026-04-16 at 17 12 45 ---------

    • Resolve unrecognized chart ID to single available chart. PR:9112

      ## Summary - Fixes IllegalStateException in ChartEntry.getOrCreate when the LLM provides an unrecognized chartId (e.g. "1" instead of "chart"). resolveChartId now 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.applyAxisDefaults when 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), a DataSeries containing FlagItem objects would not render as flags because it lacked PlotOptionsFlags - Adds applyFlagsPlotOptions() to ChartRenderer that auto-detects flag series by their data items and sets PlotOptionsFlags when missing, while preserving any pre-configured plot options _

    • Add XY series detection to data converter. PR:9095

      ## Summary - Adds tryXY pattern to DefaultDataConverter to handle data with _X and _Y column 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 ChartAITools that 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 expand enum-valued attribute on MasterDetailLayout with two independent boolean properties: - Removes the ExpandingArea enum and get/setExpandingArea methods - Adds isExpandMaster / setExpandMaster(boolean) (defaults to false) - Adds isExpandDetail / setExpandDetail(boolean) (defaults to false) - Drops the ExpandingArea parameter 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 MasterDetailLayoutVariant enum and drops HasThemeVariant<MasterDetailLayoutVariant> from MasterDetailLayout. - The sole variant AURA_INSET_DRAWER is b...

Read more

Vaadin Flow Components V25.0.9

20 Apr 09:34
2441b39

Choose a tag to compare

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 cellSelected feedback loop triggered by programmatic focus changes (e.g. inputElement.select()) in onCustomEditorDisplayed callbacks > - 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 recursive onCustomEditorDisplayed calls when callback code calls refreshCells() > > ## Root cause > CustomEditorEventListener.ONFOCUS unconditionally sent cellSelected to the server and updated the client-side selection on every focus event — including programmatic focus from inputElement.select() called in onCustomEditorDisplayed. 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): track mousedown/touchstart events to distinguish user-initiated focus from programmatic focus. Only update the selection and send cellSelected for user-initiated focus. For programmatic focus on a cell the user has already left, return focus to the sheet. Keyboard navigation is unaffected because SelectionHandler already handles selection updates and cellSelected independently. > > Server-side (Spreadsheet): reentrancy guard (insideCustomEditorCallback) on loadCustomEditorOnSelectedCell() to prevent recursive onCustomEditorDisplayed calls when user code in the callback calls refreshCells(). > > 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 existing CustomEditorIT tests 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/setVerticalSplitPosition behind split-exists checks but the else branches never explicitly reset the positions to 0 > > Fixes #9006 > > ## Test plan > - [x] New unit tests in SpreadsheetFactoryTest verify 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

  • This release use Web Components listed in Vaadin Platform 25.0.9
  • Tested with Vaadin Flow version 25.0.10

Vaadin Flow Components V25.1.3

17 Apr 12:53
23c291b

Choose a tag to compare

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

  • This release use Web Components listed in Vaadin Platform 25.1.3
  • Tested with Vaadin Flow version 25.1.3

Vaadin Flow Components V25.1.2

16 Apr 11:01
6b964d2

Choose a tag to compare

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 cellSelected feedback loop triggered by programmatic focus changes (e.g. inputElement.select()) in onCustomEditorDisplayed callbacks > - 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 recursive onCustomEditorDisplayed calls when callback code calls refreshCells() > > ## Root cause > CustomEditorEventListener.ONFOCUS unconditionally sent cellSelected to the server and updated the client-side selection on every focus event — including programmatic focus from inputElement.select() called in onCustomEditorDisplayed. 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): track mousedown/touchstart events to distinguish user-initiated focus from programmatic focus. Only update the selection and send cellSelected for user-initiated focus. For programmatic focus on a cell the user has already left, return focus to the sheet. Keyboard navigation is unaffected because SelectionHandler already handles selection updates and cellSelected independently. > > Server-side (Spreadsheet): reentrancy guard (insideCustomEditorCallback) on loadCustomEditorOnSelectedCell() to prevent recursive onCustomEditorDisplayed calls when user code in the callback calls refreshCells(). > > 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 existing CustomEditorIT tests 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/setVerticalSplitPosition behind split-exists checks but the else branches never explicitly reset the positions to 0 > > Fixes #9006 > > ## Test plan > - [x] New unit tests in SpreadsheetFactoryTest verify 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

  • This release use Web Components listed in Vaadin Platform 25.1.2
  • Tested with Vaadin Flow version 25.1.2