Skip to content

feat: create Slider component#8485

Merged
vursen merged 56 commits intomainfrom
slider-component
Feb 4, 2026
Merged

feat: create Slider component#8485
vursen merged 56 commits intomainfrom
slider-component

Conversation

@vursen
Copy link
Copy Markdown
Contributor

@vursen vursen commented Jan 14, 2026

Description

The PR introduces a Flow counterpart for the <vaadin-slider> web component, with the following API:

Constructors:

  1. Slider()
  2. Slider(valueChangeListener)
  3. Slider(min, max, value)
  4. Slider(min, max, value, valueChangeListener)
  5. Slider(min, max, step, value)
  6. Slider(min, max, step, value, valueChangeListener)
  7. Slider(label)
  8. Slider(label, valueChangeListener)
  9. Slider(label, min, max, value)
  10. Slider(label, min, max, value, valueChangeListener)
  11. Slider(label, min, max, step, value)
  12. Slider(label, min, max, step, value, valueChangeListener)

Methods:

  • setValue(value)
  • setValue(value, min, max)
  • setValue(value, min, max, step)
  • setMin(min)
  • getMin()
  • setMax(max)
  • getMax()
  • setStep(step)
  • getStep()

Fixes #8480

Type of change

  • Feature

@vursen vursen changed the title feat: add vaadin-slider-flow-parent module feat: create Slider component Jan 14, 2026
Comment thread vaadin-slider-flow-parent/pom.xml
@vursen vursen force-pushed the slider-component branch 2 times, most recently from ce3a04e to 35b5b9d Compare January 16, 2026 08:42
@Tag("vaadin-slider")
// @NpmPackage(value = "@vaadin/slider", version = "25.1.0-alpha1")
// @JsModule("@vaadin/slider/src/vaadin-slider.js")
public class Slider extends SliderBase<Slider, Double> {
Copy link
Copy Markdown
Contributor

@knoobie knoobie Jan 16, 2026

Choose a reason for hiding this comment

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

Thinking out load: I'm wondering if it's better for java developer to either use

Slider<T extends Number> or IntSlider / DoubleSlider.

Having to deal with double all the time when I just have a simple 0-5 slider feels awkward. (Same could be said for min/max and step.. might be good to add overloaded methods?)

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Valid point, thank you. We could add an IntegerSlider later

@vursen vursen linked an issue Jan 18, 2026 that may be closed by this pull request
Comment thread vaadin-slider-flow-parent/vaadin-slider-flow/pom.xml
@vursen vursen mentioned this pull request Jan 26, 2026
1 task
vursen and others added 21 commits February 2, 2026 18:30
Add Slider Flow component wrapping <vaadin-slider> web component.
The Slider extends AbstractSinglePropertyField and provides min, max,
step, and value properties.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Remove explicit flow dependency versions from integration-tests pom.xml
- Add README.md and LICENSE files
- Add vite.config.ts for integration tests

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add tests for constructors, min/max/step properties, and validation
that throws IllegalArgumentException for invalid values.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…ider

- Add ExperimentalFeatureException thrown when feature flag is disabled
- Add feature flag check in Slider.onAttach
- Add getMin, getMax, getStep methods to SliderElement
- Add basic integration test verifying slider properties

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…rties

- Create SliderBase<TComponent, TValue> abstract class extending AbstractSinglePropertyField
- Move min, max, step getters/setters with validation to SliderBase
- Update Slider to extend SliderBase<Slider, Double>

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Move min, max, step tests to SliderBaseTest. Add tests for SliderBase
constructors and value change listener constructors.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add a utility method to schedule actions that run before the client
response, with deduplication by key. This allows deferring state
validity checks until all property changes are complete.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Log warnings when setMin, setMax, or setStep is called and the current
value becomes inconsistent with the new constraints. The warnings are
deferred using beforeClientResponse to check the final state after all
property changes in the current request are complete.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add tests verifying that warnings are logged when value doesn't align
with min, max, or step constraints after property changes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Change SliderBase constructor from protected to package-private.
Update SliderTest to use the 4-parameter constructor with step value.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@vursen vursen marked this pull request as ready for review February 3, 2026 12:06
vursen and others added 9 commits February 3, 2026 18:25
Remove redundant override methods in Slider that just called super.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Change setValue(min, max, value) to setValue(value, min, max) and
setValue(min, max, step, value) to setValue(value, min, max, step).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
SliderBase now implements InputField which consolidates HasLabel,
HasHelper, HasSize, HasStyle, HasTooltip, HasEnabled, and HasValue.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Remove getEmptyValue() override and have clear() directly set value
to minimum. Add test for clear() behavior.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Invalid values (out of range or not aligned with step) sent from the
client are now silently ignored, returning the current value instead
of throwing an exception.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
vursen and others added 3 commits February 4, 2026 11:06
Synchronize slider value with the server on the change event instead
of relying on deferred updates. This also adds TestBench utility
interfaces and a setValue method for emulating user input in tests.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Verify that setValue synchronizes the value to the server by checking
the value change event is fired with the correct value.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
vursen and others added 3 commits February 4, 2026 12:57
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Avoid using the word "range" in Slider Javadoc to prevent confusion
with RangeSlider. Also rename requireValidRange to requireValidMinMax.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented Feb 4, 2026

@vursen vursen enabled auto-merge (squash) February 4, 2026 09:29
@vursen vursen merged commit d5164db into main Feb 4, 2026
5 checks passed
@vursen vursen deleted the slider-component branch February 4, 2026 10:09
@vaadin-bot
Copy link
Copy Markdown
Collaborator

This ticket/PR has been released with Vaadin 25.1.0-alpha6.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Slider] Add feature flag to activate flow counterparts [Slider] Create Slider flow counterpart

5 participants