From 93065d46caae79eaf1312f48fab771d65677cf6a Mon Sep 17 00:00:00 2001 From: robonen Date: Fri, 31 May 2024 01:17:35 +0700 Subject: [PATCH] feat(packages/vue): update useCounter composable to include additional functionality --- .../src/composables/useCounter/index.test.ts | 2 +- .../vue/src/composables/useCounter/index.ts | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/vue/src/composables/useCounter/index.test.ts b/packages/vue/src/composables/useCounter/index.test.ts index 6ad2196..fba7e50 100644 --- a/packages/vue/src/composables/useCounter/index.test.ts +++ b/packages/vue/src/composables/useCounter/index.test.ts @@ -1,6 +1,6 @@ import { it, expect, describe } from 'vitest'; -import { useCounter } from '.'; import { ref } from 'vue'; +import { useCounter } from '.'; describe('useCounter', () => { it('initialize count with the provided initial value', () => { diff --git a/packages/vue/src/composables/useCounter/index.ts b/packages/vue/src/composables/useCounter/index.ts index 3f27868..6b42ba4 100644 --- a/packages/vue/src/composables/useCounter/index.ts +++ b/packages/vue/src/composables/useCounter/index.ts @@ -1,4 +1,4 @@ -import { ref, unref, type MaybeRef } from 'vue'; +import { ref, unref, type MaybeRef, type Ref } from 'vue'; import { clamp } from '@robonen/stdlib'; export interface UseCounterOptions { @@ -6,6 +6,15 @@ export interface UseCounterOptions { max?: number; } +export interface UseConterReturn { + count: Ref; + increment: (delta?: number) => void; + decrement: (delta?: number) => void; + set: (value: number) => void; + get: () => number; + reset: (value?: number) => void; +} + /** * @name useCounter * @category Utilities @@ -15,6 +24,7 @@ export interface UseCounterOptions { * @param {UseCounterOptions} [options={}] The options for the counter * @param {number} [options.min=Number.MIN_SAFE_INTEGER] The minimum value of the counter * @param {number} [options.max=Number.MAX_SAFE_INTEGER] The maximum value of the counter + * @returns {UseConterReturn} The counter object * * @example * const { count, increment } = useCounter(0); @@ -22,7 +32,10 @@ export interface UseCounterOptions { * @example * const { count, increment, decrement, set, get, reset } = useCounter(0, { min: 0, max: 10 }); */ -export function useCounter(initialValue: MaybeRef = 0, options: UseCounterOptions = {}) { +export function useCounter( + initialValue: MaybeRef = 0, + options: UseCounterOptions = {}, +): UseConterReturn { let _initialValue = unref(initialValue); const count = ref(initialValue);