Skip to content

Conversation

@brandyscarney
Copy link
Member

@brandyscarney brandyscarney commented Jan 29, 2026

Issue number: resolves #29862


What is the current behavior?

Range exposes a single part for both knobs & pins. This makes it impossible to style the knobs/pins differently when dual knobs is enabled.

What is the new behavior?

  • Adds range-dual-knobs to the host element when dualKnobs is enabled
  • Adds parts for the following:
    • knob-handle-a - The container element for the lower/left knob. Only available when dualKnobs is true.
    • knob-handle-b - The container element for the upper/right knob. Only available when dualKnobs is true.
    • pin-a - The counter that appears above the lower/left knob. Only available when dualKnobs is true.
    • pin-b - The counter that appears above the upper/right knob. Only available when dualKnobs is true.
    • knob-a - The visual knob element for the lower/left knob. Only available when dualKnobs is true.
    • knob-b - The visual knob element for the upper/right knob. Only available when dualKnobs is true.
    • pressed - Added to the knob-handle, knob, and pin that is currently being pressed to drag. Only one set has this part at a time.
    • focused - Added to the knob-handle, knob, and pin that currently has focus. Only one set has this part at a time.

Does this introduce a breaking change?

  • Yes
  • No

Other information

@vercel
Copy link

vercel bot commented Jan 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ionic-framework Ready Ready Preview, Comment Jan 30, 2026 10:23pm

Request Review

@github-actions github-actions bot added the package: core @ionic/core package label Jan 29, 2026
Copy link
Member Author

Choose a reason for hiding this comment

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

This change is required otherwise it won't match knob when it has knob knob-a.

Copy link
Member Author

Choose a reason for hiding this comment

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

I renamed the classes assigned to knob-handle from range-knob-a to range-knob-handle-a to match what they are actually applied to.

configs({ directions: ['ltr'] }).forEach(({ title, screenshot, config }) => {
test.describe(title('range: customization'), () => {
test('should be customizable', async ({ page }) => {
await page.goto(`/src/components/range/test/custom`, config);
Copy link
Member Author

Choose a reason for hiding this comment

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

I removed the screenshots here in favor of checking that the styles are applied to the right element when the part is styled.

@brandyscarney brandyscarney changed the title feat(range): add class and expose parts for dual knobs for easier styling feat(range): add class and expose parts for dual knobs for custom styling Jan 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

package: core @ionic/core package

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants