@shopgate/engage
Version:
Shopgate's ENGAGE library.
4 lines • 1.59 kB
JavaScript
function _slicedToArray(arr,i){return _arrayWithHoles(arr)||_iterableToArrayLimit(arr,i)||_nonIterableRest();}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance");}function _iterableToArrayLimit(arr,i){var _arr=[];var _n=true;var _d=false;var _e=undefined;try{for(var _i=arr[Symbol.iterator](),_s;!(_n=(_s=_i.next()).done);_n=true){_arr.push(_s.value);if(i&&_arr.length===i)break;}}catch(err){_d=true;_e=err;}finally{try{if(!_n&&_i["return"]!=null)_i["return"]();}finally{if(_d)throw _e;}}return _arr;}function _arrayWithHoles(arr){if(Array.isArray(arr))return arr;}import{useState,useEffect,useCallback}from'react';import{validate as validator}from"./validation";/**
* @param {Object} constraints The rules.
* @returns {{ valid: ?boolean, validationErrors: ?Object, validate: Function }}
*/export function useValidation(constraints){var _useState=useState(null),_useState2=_slicedToArray(_useState,2),valid=_useState2[0],setValid=_useState2[1];var _useState3=useState(undefined),_useState4=_slicedToArray(_useState3,2),validationErrors=_useState4[0],setValidationErrors=_useState4[1];useEffect(function(){setValid(null);setValidationErrors(undefined);},[constraints]);var validate=useCallback(function(values){var _validator=validator(values,constraints),isValid=_validator.valid,errors=_validator.validationErrors;setValid(isValid);setValidationErrors(errors);return isValid;},[constraints]);var reset=useCallback(function(){setValidationErrors();},[]);return{valid:valid,validationErrors:validationErrors,validate:validate,reset:reset};}