@de-formed/react-validations
Advanced tools
@@ -45,12 +45,15 @@ import { renderHook, act } from '@testing-library/react-hooks'; | ||
| name: { | ||
| dirty: false, | ||
| errors: [], | ||
| isValid: true, | ||
| errors: [], | ||
| }, | ||
| age: { | ||
| dirty: false, | ||
| errors: [], | ||
| isValid: true, | ||
| errors: [], | ||
| }, | ||
| agreement: { | ||
| dirty: false, | ||
| errors: [], | ||
| isValid: true, | ||
| errors: [], | ||
| }, | ||
@@ -84,4 +87,4 @@ }; | ||
| expect(typeof result.current.validateAll).toBe('function'); | ||
| expect(typeof result.current.validateAllIfTrue).toBe('function'); | ||
| expect(typeof result.current.validateIfTrue).toBe('function'); | ||
| expect(typeof result.current.validateAllIfDirty).toBe('function'); | ||
| expect(typeof result.current.validateIfDirty).toBe('function'); | ||
| expect(typeof result.current.validateOnBlur).toBe('function'); | ||
@@ -107,4 +110,4 @@ expect(typeof result.current.validateOnChange).toBe('function'); | ||
| 'validateAll', | ||
| 'validateAllIfTrue', | ||
| 'validateIfTrue', | ||
| 'validateAllIfDirty', | ||
| 'validateIfDirty', | ||
| 'validateOnBlur', | ||
@@ -283,4 +286,5 @@ 'validateOnChange', | ||
| name: { | ||
| dirty: true, | ||
| errors: ['Must be dingo.'], | ||
| isValid: false, | ||
| errors: ['Must be dingo.'], | ||
| }, | ||
@@ -335,2 +339,3 @@ }; | ||
| name: { | ||
| dirty: true, | ||
| errors: ['Cannot be bob.'], | ||
@@ -340,2 +345,3 @@ isValid: false, | ||
| age: { | ||
| dirty: true, | ||
| errors: ['Must be 18'], | ||
@@ -345,2 +351,3 @@ isValid: false, | ||
| agreement: { | ||
| dirty: true, | ||
| errors: [], | ||
@@ -392,3 +399,3 @@ isValid: true, | ||
| describe('validateAllIfTrue', () => { | ||
| describe('validateAllIfDirty', () => { | ||
| it('returns a boolean', () => { | ||
@@ -398,3 +405,3 @@ const { result } = renderHook(() => useValidation(schema)); | ||
| act(() => { | ||
| output = result.current.validateAllIfTrue(defaultState); | ||
| output = result.current.validateAllIfDirty(defaultState); | ||
| }); | ||
@@ -408,3 +415,3 @@ expect(typeof output).toBe('boolean'); | ||
| act(() => { | ||
| output = result.current.validateAllIfTrue(defaultState); | ||
| output = result.current.validateAllIfDirty(defaultState); | ||
| }); | ||
@@ -417,3 +424,3 @@ expect(output).toBe(true); | ||
| act(() => { | ||
| const output = result.current.validateAllIfTrue(failingState); | ||
| const output = result.current.validateAllIfDirty(failingState); | ||
| expect(output).toBe(true); | ||
@@ -428,3 +435,3 @@ }); | ||
| act(() => { | ||
| output = data.map((s) => result.current.validateAllIfTrue(s)); | ||
| output = data.map((s) => result.current.validateAllIfDirty(s)); | ||
| expect(output).toStrictEqual([true, true, true]); | ||
@@ -437,7 +444,7 @@ }); | ||
| act(() => { | ||
| result.current.validateAllIfTrue(failingState); | ||
| result.current.validateAllIfDirty(failingState); | ||
| }); | ||
| expect(result.current.getError('age')).toBe(''); | ||
| act(() => { | ||
| result.current.validateAllIfTrue(failingState, ['name']); | ||
| result.current.validateAllIfDirty(failingState, ['name']); | ||
| }); | ||
@@ -459,3 +466,3 @@ expect(result.current.getError('age')).toBe(''); | ||
| act(() => { | ||
| result.current.validateAllIfTrue(failingState); | ||
| result.current.validateAllIfDirty(failingState); | ||
| }); | ||
@@ -466,3 +473,3 @@ expect(result.current.getError('canSave')).toBe(''); | ||
| describe('validateIfTrue', () => { | ||
| describe('validateIfDirty', () => { | ||
| it('returns a boolean if key exists', () => { | ||
@@ -477,3 +484,3 @@ const { result } = renderHook(() => useValidation(schema)); | ||
| act(() => { | ||
| output = result.current.validateIfTrue(name, state); | ||
| output = result.current.validateIfDirty(name, state); | ||
| }); | ||
@@ -492,3 +499,3 @@ expect(typeof output).toBe('boolean'); | ||
| act(() => { | ||
| output = result.current.validateIfTrue(name, state); | ||
| output = result.current.validateIfDirty(name, state); | ||
| }); | ||
@@ -498,7 +505,4 @@ expect(output).toBe(true); | ||
| it('updates the validationState when validation fails', () => { | ||
| it('does not update the validationState when isDirty is false', () => { | ||
| const { result } = renderHook(() => useValidation(schema)); | ||
| const validationState = { | ||
| ...mockValidationState, | ||
| }; | ||
| const name = 'name'; | ||
@@ -511,6 +515,6 @@ const state = { | ||
| act(() => { | ||
| result.current.validateIfTrue(name, state); | ||
| result.current.validateIfDirty(name, state); | ||
| }); | ||
| expect(result.current.isValid).toBe(true); | ||
| expect(result.current.validationState).toStrictEqual(validationState); | ||
| expect(result.current.validationState).toStrictEqual(mockValidationState); | ||
| }); | ||
@@ -520,2 +524,9 @@ | ||
| const { result } = renderHook(() => useValidation(schema)); | ||
| const validationState = { | ||
| ...mockValidationState, | ||
| name: { | ||
| ...mockValidationState.name, | ||
| dirty: true | ||
| } | ||
| }; | ||
| const state = { | ||
@@ -529,5 +540,2 @@ ...defaultState, | ||
| }; | ||
| const validationState = { | ||
| ...mockValidationState, | ||
| }; | ||
| act(() => { | ||
@@ -538,3 +546,3 @@ result.current.validate('name', state); | ||
| act(() => { | ||
| result.current.validateIfTrue('name', state2); | ||
| result.current.validateIfDirty('name', state2); | ||
| }); | ||
@@ -541,0 +549,0 @@ expect(result.current.isValid).toBe(true); |
+2
-18
@@ -1,18 +0,2 @@ | ||
| import React from 'react'; | ||
| import { GetAllErrors, GetError, GetFieldValid, ResetValidationState, Validate, ValidateAll, ValidateAllIfTrue, ValidateIfTrue, ValidateOnBlur, ValidateOnChange, ValidationSchema, ValidationState } from '@de-formed/base'; | ||
| export declare const useValidation: <S>(validationSchema: ValidationSchema<S>) => { | ||
| getAllErrors: GetAllErrors<S>; | ||
| getError: GetError<S>; | ||
| getFieldValid: GetFieldValid<S>; | ||
| isValid: boolean; | ||
| resetValidationState: ResetValidationState; | ||
| setValidationState: React.Dispatch<React.SetStateAction<ValidationState>>; | ||
| validate: Validate<S>; | ||
| validateAll: ValidateAll<S>; | ||
| validateAllIfTrue: ValidateAllIfTrue<S>; | ||
| validateIfTrue: ValidateIfTrue<S>; | ||
| validateOnBlur: ValidateOnBlur<S>; | ||
| validateOnChange: ValidateOnChange<S>; | ||
| validationErrors: string[]; | ||
| validationState: ValidationState; | ||
| }; | ||
| import { ValidationObject, ValidationSchema } from '@de-formed/base'; | ||
| export declare const useValidation: <S>(validationSchema: ValidationSchema<S>) => ValidationObject<S>; |
+4
-4
@@ -15,5 +15,5 @@ "use strict"; | ||
| const validate = (0, base_1.createValidate)(validationSchema, validationState, setValidationState); | ||
| const validateIfTrue = (0, base_1.createValidateIfTrue)(validationSchema, validationState, setValidationState); | ||
| const validateIfDirty = (0, base_1.createValidateIfDirty)(validationSchema, validationState, setValidationState); | ||
| const validateAll = (0, base_1.createValidateAll)(validationSchema, validationState, setValidationState); | ||
| const validateAllIfTrue = (0, base_1.createValidateAllIfTrue)(validationSchema, validationState, setValidationState); | ||
| const validateAllIfDirty = (0, base_1.createValidateAllIfDirty)(validationSchema, validationState, setValidationState); | ||
| const validateOnBlur = (0, base_1.createValidateOnBlur)(validationSchema, validationState, setValidationState); | ||
@@ -37,4 +37,4 @@ const validateOnChange = (0, base_1.createValidateOnChange)(validationSchema, validationState, setValidationState); | ||
| validateAll, | ||
| validateAllIfTrue, | ||
| validateIfTrue, | ||
| validateAllIfDirty, | ||
| validateIfDirty, | ||
| validateOnBlur, | ||
@@ -41,0 +41,0 @@ validateOnChange, |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,0CAyByB;AAQlB,MAAM,aAAa,GAAG,CAAI,gBAAqC,EAAE,EAAE;IAExE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,eAAK,CAAC,QAAQ,CAC1D,GAAG,EAAE,CAAC,IAAA,4BAAqB,EAAC,gBAAgB,CAAC,CAC9C,CAAC;IACF,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAW,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAU,IAAI,CAAC,CAAC;IAI5D,MAAM,oBAAoB,GAAyB,GAAG,EAAE,CACtD,kBAAkB,CAAC,IAAA,4BAAqB,EAAC,gBAAgB,CAAC,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAgB,IAAA,qBAAc,EAC1C,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,cAAc,GAAsB,IAAA,2BAAoB,EAC5D,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,WAAW,GAAmB,IAAA,wBAAiB,EACnD,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,iBAAiB,GAAyB,IAAA,8BAAuB,EACrE,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,cAAc,GAAsB,IAAA,2BAAoB,EAC5D,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,gBAAgB,GAAwB,IAAA,6BAAsB,EAClE,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,YAAY,GAAoB,IAAA,yBAAkB,EAAC,eAAe,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAgB,IAAA,qBAAc,EAAC,eAAe,CAAC,CAAC;IAE9D,MAAM,aAAa,GAAqB,IAAA,0BAAmB,EAAC,eAAe,CAAC,CAAC;IAG7E,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,mBAAmB,CAAC,IAAA,6BAAsB,EAAC,eAAe,CAAC,CAAC,CAAC;QAC7D,UAAU,CAAC,IAAA,uBAAgB,EAAC,eAAe,CAAC,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,gBAAgB,GAAG;QACvB,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,OAAO;QACP,oBAAoB;QACpB,kBAAkB;QAClB,QAAQ;QACR,WAAW;QACX,iBAAiB;QACjB,cAAc;QACd,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;KAChB,CAAC;IAEF,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AA/EW,QAAA,aAAa,iBA+ExB"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,kDAA0B;AAC1B,0CA0ByB;AAQlB,MAAM,aAAa,GAAG,CAAI,gBAAqC,EAAE,EAAE;IAExE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,eAAK,CAAC,QAAQ,CAC1D,GAAG,EAAE,CAAC,IAAA,4BAAqB,EAAC,gBAAgB,CAAC,CAC9C,CAAC;IACF,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAW,EAAE,CAAC,CAAC;IAC7E,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,eAAK,CAAC,QAAQ,CAAU,IAAI,CAAC,CAAC;IAI5D,MAAM,oBAAoB,GAAyB,GAAG,EAAE,CACtD,kBAAkB,CAAC,IAAA,4BAAqB,EAAC,gBAAgB,CAAC,CAAC,CAAC;IAE9D,MAAM,QAAQ,GAAgB,IAAA,qBAAc,EAC1C,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,eAAe,GAAuB,IAAA,4BAAqB,EAC/D,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,WAAW,GAAmB,IAAA,wBAAiB,EACnD,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,kBAAkB,GAA0B,IAAA,+BAAwB,EACxE,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,cAAc,GAAsB,IAAA,2BAAoB,EAC5D,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,gBAAgB,GAAwB,IAAA,6BAAsB,EAClE,gBAAgB,EAChB,eAAe,EACf,kBAAkB,CACnB,CAAC;IAEF,MAAM,YAAY,GAAoB,IAAA,yBAAkB,EAAC,eAAe,CAAC,CAAC;IAE1E,MAAM,QAAQ,GAAgB,IAAA,qBAAc,EAAC,eAAe,CAAC,CAAC;IAE9D,MAAM,aAAa,GAAqB,IAAA,0BAAmB,EAAC,eAAe,CAAC,CAAC;IAG7E,eAAK,CAAC,SAAS,CAAC,GAAG,EAAE;QACnB,mBAAmB,CAAC,IAAA,6BAAsB,EAAC,eAAe,CAAC,CAAC,CAAC;QAC7D,UAAU,CAAC,IAAA,uBAAgB,EAAC,eAAe,CAAC,CAAC,CAAC;IAChD,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,gBAAgB,GAAwB;QAC5C,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,OAAO;QACP,oBAAoB;QACpB,kBAAkB;QAClB,QAAQ;QACR,WAAW;QACX,kBAAkB;QAClB,eAAe;QACf,cAAc;QACd,gBAAgB;QAChB,gBAAgB;QAChB,eAAe;KAChB,CAAC;IAEF,OAAO,gBAAgB,CAAC;AAC1B,CAAC,CAAC;AA/EW,QAAA,aAAa,iBA+ExB"} |
+8
-9
| { | ||
| "name": "@de-formed/react-validations", | ||
| "version": "3.0.1", | ||
| "version": "4.0.0", | ||
| "description": "Modular, Function-driven Validations", | ||
@@ -22,3 +22,3 @@ "main": "dist/index", | ||
| "dependencies": { | ||
| "@de-formed/base": "^3.0.0" | ||
| "@de-formed/base": "^4.0.0" | ||
| }, | ||
@@ -29,13 +29,12 @@ "peerDependencies": { | ||
| "devDependencies": { | ||
| "@testing-library/jest-dom": "^5.14.1", | ||
| "@testing-library/react": "^12.1.0", | ||
| "@testing-library/react-hooks": "^7.0.2", | ||
| "@testing-library/user-event": "^13.2.1", | ||
| "@testing-library/react-hooks": "^8.0.1", | ||
| "@types/jest": "^27.0.1", | ||
| "@types/react": "^17.0.20", | ||
| "@types/react": "^18.0.21", | ||
| "@types/react-dom": "^18.0.6", | ||
| "@types/testing-library__dom": "^7.5.0", | ||
| "jest": "^27.1.1", | ||
| "prettier": "^2.4.0", | ||
| "react": "^17.0.2", | ||
| "react-test-renderer": "^17.0.2", | ||
| "react": "^18.2.0", | ||
| "react-dom": "^18.2.0", | ||
| "react-test-renderer": "^18.2.0", | ||
| "ts-jest": "^27.0.5", | ||
@@ -42,0 +41,0 @@ "tslint": "^6.1.3", |
+10
-9
@@ -9,4 +9,4 @@ import React from 'react'; | ||
| createValidateAll, | ||
| createValidateAllIfTrue, | ||
| createValidateIfTrue, | ||
| createValidateAllIfDirty, | ||
| createValidateIfDirty, | ||
| createValidateOnBlur, | ||
@@ -22,6 +22,7 @@ createValidateOnChange, | ||
| ValidateAll, | ||
| ValidateAllIfTrue, | ||
| ValidateIfTrue, | ||
| ValidateAllIfDirty, | ||
| ValidateIfDirty, | ||
| ValidateOnBlur, | ||
| ValidateOnChange, | ||
| ValidationObject, | ||
| ValidationSchema, | ||
@@ -56,3 +57,3 @@ ValidationState, | ||
| const validateIfTrue: ValidateIfTrue<S> = createValidateIfTrue( | ||
| const validateIfDirty: ValidateIfDirty<S> = createValidateIfDirty( | ||
| validationSchema, | ||
@@ -69,3 +70,3 @@ validationState, | ||
| const validateAllIfTrue: ValidateAllIfTrue<S> = createValidateAllIfTrue( | ||
| const validateAllIfDirty: ValidateAllIfDirty<S> = createValidateAllIfDirty( | ||
| validationSchema, | ||
@@ -100,3 +101,3 @@ validationState, | ||
| const validationObject = { | ||
| const validationObject: ValidationObject<S> = { | ||
| getAllErrors, | ||
@@ -110,4 +111,4 @@ getError, | ||
| validateAll, | ||
| validateAllIfTrue, | ||
| validateIfTrue, | ||
| validateAllIfDirty, | ||
| validateIfDirty, | ||
| validateOnBlur, | ||
@@ -114,0 +115,0 @@ validateOnChange, |
14
-6.67%37142
-1.4%822
-0.84%+ Added
- Removed
Updated