Skip to content
Draft
Show file tree
Hide file tree
Changes from 14 commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
ef2eb94
feat(range): add knob parts for A and B when dualKnobs is enabled
brandyscarney Jan 27, 2026
915bf05
test(range): update references to old knob handle class
brandyscarney Jan 27, 2026
67f605b
test(range): add spec test for new css class and parts
brandyscarney Jan 27, 2026
f57efc4
feat(range): add pin a and b parts
brandyscarney Jan 27, 2026
83803c6
feat(range): add pressed and focused parts for knob-handle, knob and pin
brandyscarney Jan 28, 2026
d5b2570
test(range): add pressed and focused parts to spec test
brandyscarney Jan 29, 2026
6741093
test(range): update custom test to check styles instead of screenshots
brandyscarney Jan 29, 2026
ac39d58
Merge branch 'feature-8.8' into FW-6582
brandyscarney Jan 29, 2026
a305510
test(range): target knob by handle a or b
brandyscarney Jan 30, 2026
e617be3
feat(range): add upper and lower knob parts and fix related focus bugs
brandyscarney Jan 30, 2026
7924d58
fix(range): add focus back to the range for keyboard movements
brandyscarney Jan 30, 2026
6c5bfac
test(range): update custom test to include lower/upper parts
brandyscarney Jan 30, 2026
f08715b
feat(range): add hover part for knob-handle, knob and pin
brandyscarney Feb 3, 2026
bfcd5e5
test(range): add hover styles to custom test
brandyscarney Feb 3, 2026
64c2fa2
test(range): update custom to have different hover styles
brandyscarney Feb 3, 2026
0a920f7
Merge branch 'feature-8.8' into FW-6582
brandyscarney Feb 4, 2026
6fc5e15
feat(range): apply range-pressed classes to host based on the knob
brandyscarney Feb 20, 2026
9964121
test(range): add test for range-pressed classes
brandyscarney Feb 20, 2026
4f4c2cf
feat(range): add the activated part for handle, knob and pin
brandyscarney Feb 20, 2026
d63cdd6
fix(range): check for MutationObserver
brandyscarney Feb 23, 2026
8522c1a
test(range): clean up duplicated part checks
brandyscarney Feb 23, 2026
524469f
test(range): add tests for the dual knob lower and upper parts, restr…
brandyscarney Feb 23, 2026
4fb4aca
test(range): add a test for swapping the knobs
brandyscarney Feb 23, 2026
d3b2332
test(range): add check for label part
brandyscarney Feb 23, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions core/api.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1475,9 +1475,25 @@ ion-range,css-prop,--pin-color,ios
ion-range,css-prop,--pin-color,md
ion-range,part,bar
ion-range,part,bar-active
ion-range,part,focused
ion-range,part,hover
ion-range,part,knob
ion-range,part,knob-a
ion-range,part,knob-b
ion-range,part,knob-handle
ion-range,part,knob-handle-a
ion-range,part,knob-handle-b
ion-range,part,knob-handle-lower
ion-range,part,knob-handle-upper
ion-range,part,knob-lower
ion-range,part,knob-upper
ion-range,part,label
ion-range,part,pin
ion-range,part,pin-a
ion-range,part,pin-b
ion-range,part,pin-lower
ion-range,part,pin-upper
ion-range,part,pressed
ion-range,part,tick
ion-range,part,tick-active

Expand Down
4 changes: 3 additions & 1 deletion core/setupJest.js
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.

Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,9 @@ expect.extend({
throw new Error('expected toHaveShadowPart to be called on an element with a shadow root');
}

const shadowPart = received.shadowRoot.querySelector(`[part="${part}"]`);
// Use attribute selector with ~= to match space-separated part values
// e.g., [part~="knob"] matches elements with part="knob" or part="knob knob-a"
const shadowPart = received.shadowRoot.querySelector(`[part~="${part}"]`);
const pass = shadowPart !== null;

const message = `expected ${received.tagName.toLowerCase()} to have shadow part "${part}"`;
Expand Down
2 changes: 2 additions & 0 deletions core/src/components/range/range-interface.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
export type KnobName = 'A' | 'B' | undefined;

export type KnobPosition = 'lower' | 'upper' | undefined;

export type RangeValue = number | { lower: number; upper: number };

export type PinFormatter = (value: number) => number | string;
Expand Down
Loading
Loading