diff --git a/packages/shared/useCounter/index.test.ts b/packages/shared/useCounter/index.test.ts index c3229d79c8a..5c37d183505 100644 --- a/packages/shared/useCounter/index.test.ts +++ b/packages/shared/useCounter/index.test.ts @@ -18,10 +18,16 @@ describe('useCounter', () => { inc(2) expect(count.value).toBe(3) expect(get()).toBe(3) - dec() + inc(-1) expect(count.value).toBe(2) expect(get()).toBe(2) + dec() + expect(count.value).toBe(1) + expect(get()).toBe(1) dec(5) + expect(count.value).toBe(-4) + expect(get()).toBe(-4) + dec(-1) expect(count.value).toBe(-3) expect(get()).toBe(-3) set(100) @@ -87,6 +93,12 @@ describe('useCounter', () => { inc(20) expect(count.value).toBe(15) expect(get()).toBe(15) + inc(-20) + expect(count.value).toBe(-2) + expect(get()).toBe(-2) + dec(-20) + expect(count.value).toBe(15) + expect(get()).toBe(15) dec(2) expect(count.value).toBe(13) expect(get()).toBe(13) diff --git a/packages/shared/useCounter/index.ts b/packages/shared/useCounter/index.ts index 6718e28d678..bac44647595 100644 --- a/packages/shared/useCounter/index.ts +++ b/packages/shared/useCounter/index.ts @@ -24,8 +24,8 @@ export function useCounter(initialValue: MaybeRef = 0, options: UseCount min = Number.NEGATIVE_INFINITY, } = options - const inc = (delta = 1) => count.value = Math.min(max, count.value + delta) - const dec = (delta = 1) => count.value = Math.max(min, count.value - delta) + const inc = (delta = 1) => count.value = Math.max(Math.min(max, count.value + delta), min) + const dec = (delta = 1) => count.value = Math.min(Math.max(min, count.value - delta), max) const get = () => count.value const set = (val: number) => (count.value = Math.max(min, Math.min(max, val))) const reset = (val = _initialValue) => {