Skip to content

Commit 77ed88c

Browse files
authored
fix: numeric scale panning with dynamic limits (#915)
1 parent 679efbb commit 77ed88c

File tree

2 files changed

+9
-8
lines changed

2 files changed

+9
-8
lines changed

src/scale.types.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,8 @@ export function updateRange(
133133
scale: Scale,
134134
{ min, max }: ScaleRange,
135135
limits?: LimitOptions,
136-
zoom: boolean | 'pan' = false
136+
zoom = false,
137+
pan = false
137138
): boolean {
138139
const state = getState(scale.chart)
139140
const { options: scaleOpts } = scale
@@ -143,7 +144,7 @@ export function updateRange(
143144
const minLimit = getLimit(state, scale, scaleLimits, 'min', -Infinity)
144145
const maxLimit = getLimit(state, scale, scaleLimits, 'max', Infinity)
145146

146-
if (zoom === 'pan' && (min < minLimit || max > maxLimit)) {
147+
if (pan && (min < minLimit || max > maxLimit)) {
147148
// At limit: No change but return true to indicate no need to store the delta.
148149
return true
149150
}
@@ -246,7 +247,7 @@ const OFFSETS: Record<TimeUnit, number> = {
246247
year: 182 * 24 * 60 * 60 * 1000, // 182 d
247248
}
248249

249-
function panNumericalScale(scale: Scale, delta: number, limits: LimitOptions, pan = false) {
250+
function panNumericalScale(scale: Scale, delta: number, limits: LimitOptions, canZoom = false) {
250251
const { min: prevStart, max: prevEnd } = scale
251252
let offset = 0
252253
if (isTimeScale(scale)) {
@@ -260,7 +261,7 @@ function panNumericalScale(scale: Scale, delta: number, limits: LimitOptions, pa
260261
// with min === max or because the chart has 0 plottable area).
261262
return true
262263
}
263-
return updateRange(scale, { min: newMin, max: newMax }, limits, pan ? 'pan' : false)
264+
return updateRange(scale, { min: newMin, max: newMax }, limits, canZoom, true)
264265
}
265266

266267
function panNonLinearScale(scale: Scale, delta: number, limits: LimitOptions) {

test/specs/pan.spec.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -87,11 +87,11 @@ describe('pan', function () {
8787
expect(scale.min).toBe(1)
8888
expect(scale.max).toBe(3)
8989
chart.pan(-2000)
90-
expect(scale.min).toBe(2)
91-
expect(scale.max).toBe(4)
90+
expect(scale.min).toBe(1)
91+
expect(scale.max).toBe(3)
9292
chart.pan(-2000)
93-
expect(scale.min).toBe(2)
94-
expect(scale.max).toBe(4)
93+
expect(scale.min).toBe(1)
94+
expect(scale.max).toBe(3)
9595
chart.pan(50)
9696
expect(scale.min).toBeLessThan(2)
9797
expect(scale.max).toBe(scale.min + 2)

0 commit comments

Comments
 (0)