File tree Expand file tree Collapse file tree 5 files changed +46
-6
lines changed
Expand file tree Collapse file tree 5 files changed +46
-6
lines changed Original file line number Diff line number Diff line change 11# [ Versions] ( https://github.com/Tracktor/react-utils/releases )
22
3- ## v1.27.1
4- - ** [ fix ] ** : Enhance play function in useAudio hook to reset currentTime before playback
3+ ## v1.28.0
4+ - ** [ FEAT ] ** : add toNumberOrNull utility function for safe number conversion
Original file line number Diff line number Diff line change 11{
22 "name" : " @tracktor/react-utils" ,
33 "description" : " React data table and react data grid" ,
4- "version" : " 1.27.1 " ,
4+ "version" : " 1.28.0 " ,
55 "private" : false ,
66 "license" : " ISC" ,
77 "type" : " module" ,
Original file line number Diff line number Diff line change 1- // Hook
2-
31export * from "@/hooks/useAudio/useAudio" ;
42export { default as useAudio } from "@/hooks/useAudio/useAudio" ;
53export * from "@/hooks/useDebounce/useDebounce" ;
@@ -52,14 +50,15 @@ export * from "@/utils/is/isRef";
5250export { default as isRef } from "@/utils/is/isRef" ;
5351export * from "@/utils/is/isString" ;
5452export { default as isString } from "@/utils/is/isString" ;
53+ export * from "@/utils/number/toNumber/toNumberOrNull" ;
54+ export { default as toNumberOrNull } from "@/utils/number/toNumber/toNumberOrNull" ;
5555export * from "@/utils/number/toNumber/toNumberOrZero" ;
5656export { default as toNumberOrZero } from "@/utils/number/toNumber/toNumberOrZero" ;
5757export * from "@/utils/object/getObjectValue/getObjectValue" ;
5858export { default as getObjectValue } from "@/utils/object/getObjectValue/getObjectValue" ;
5959export * from "@/utils/object/isDeepEqualObject" ;
6060export { default as isDeepEqualObject } from "@/utils/object/isDeepEqualObject" ;
6161export * from "@/utils/object/removeObjectProperty" ;
62- // Utils
6362export { default as removeObjectProperty } from "@/utils/object/removeObjectProperty" ;
6463export * from "@/utils/string/capitalize" ;
6564export { default as capitalize } from "@/utils/string/capitalize" ;
Original file line number Diff line number Diff line change 1+ import { describe , expect , it } from "vitest" ;
2+ import toNumberOrNull from "./toNumberOrNull" ;
3+
4+ describe ( "toNumberOrNull" , ( ) => {
5+ it ( "devrait retourner un nombre pour les valeurs numériques" , ( ) => {
6+ expect ( toNumberOrNull ( 42 ) ) . toBe ( 42 ) ;
7+ expect ( toNumberOrNull ( "42" ) ) . toBe ( 42 ) ;
8+ expect ( toNumberOrNull ( 0 ) ) . toBe ( 0 ) ;
9+ expect ( toNumberOrNull ( "0" ) ) . toBe ( 0 ) ;
10+ expect ( toNumberOrNull ( - 42 ) ) . toBe ( - 42 ) ;
11+ expect ( toNumberOrNull ( "-42" ) ) . toBe ( - 42 ) ;
12+ expect ( toNumberOrNull ( 3.14 ) ) . toBe ( 3.14 ) ;
13+ expect ( toNumberOrNull ( "3.14" ) ) . toBe ( 3.14 ) ;
14+ } ) ;
15+
16+ it ( "devrait retourner null pour les valeurs non numériques" , ( ) => {
17+ expect ( toNumberOrNull ( "abc" ) ) . toBeNull ( ) ;
18+ expect ( toNumberOrNull ( null ) ) . toBeNull ( ) ;
19+ expect ( toNumberOrNull ( undefined ) ) . toBeNull ( ) ;
20+ expect ( toNumberOrNull ( { } ) ) . toBeNull ( ) ;
21+ expect ( toNumberOrNull ( [ ] ) ) . toBeNull ( ) ;
22+ expect ( toNumberOrNull ( NaN ) ) . toBeNull ( ) ;
23+ expect ( toNumberOrNull ( true ) ) . toBeNull ( ) ;
24+ expect ( toNumberOrNull ( false ) ) . toBeNull ( ) ;
25+ } ) ;
26+ } ) ;
Original file line number Diff line number Diff line change 1+ /**
2+ * Convert a value to a number or return null
3+ * This function avoid NaN values
4+ * @param value
5+ */
6+ const toNumberOrNull = ( value : unknown ) : number | null => {
7+ if ( value === null || value === undefined || typeof value === "boolean" || typeof value === "object" ) {
8+ return null ;
9+ }
10+
11+ const num = Number ( value ) ;
12+ return Number . isNaN ( num ) ? null : num ;
13+ } ;
14+
15+ export default toNumberOrNull ;
You can’t perform that action at this time.
0 commit comments