@sparkstone/solid-validation
Version:
A lightweight form validation library for Solid.js with PocketBase integration.
3 lines (2 loc) • 4.26 kB
JavaScript
import{createSignal as t}from"solid-js";import{createStore as n}from"solid-js/store";const e="undefined"!=typeof Symbol?Symbol.iterator||(Symbol.iterator=Symbol("Symbol.iterator")):"@@iterator";function r(t,n,e){if(!t.s){if(e instanceof i){if(!e.s)return void(e.o=r.bind(null,t,n));1&n&&(n=e.s),e=e.v}if(e&&e.then)return void e.then(r.bind(null,t,n),r.bind(null,t,2));t.s=n,t.v=e;var o=t.o;o&&o(t)}}var i=/*#__PURE__*/function(){function t(){}return t.prototype.then=function(n,e){var i=new t,o=this.s;if(o){var u=1&o?n:e;if(u){try{r(i,1,u(this.v))}catch(t){r(i,2,t)}return i}return this}return this.o=function(t){try{var o=t.v;1&t.s?r(i,1,n?n(o):o):e?r(i,1,e(o)):r(i,2,o)}catch(t){r(i,2,t)}},i},t}();function o(t){return t instanceof i&&1&t.s}function u(t,n,e){var u,a,c=-1;return function s(l){try{for(;++c<t.length&&(!e||!e());)if((l=n(c))&&l.then){if(!o(l))return void l.then(s,a||(a=r.bind(null,u=new i,2)));l=l.v}u?r(u,1,l):u=l}catch(t){r(u||(u=new i),2,t)}}(),u}function a(t,n,a){var c=t.element,s=t.validators,l=void 0===s?[]:s;return function(){try{var t=function(){var t,e;return s&&(a&&c.classList.toggle(a,!0),c.setAttribute("aria-invalid","true"),n(((e={})[null!=(t=c.name)?t:c.dataset.name]=s,e))),s};null==c.setCustomValidity||c.setCustomValidity(""),null==c.checkValidity||c.checkValidity();var s=c.validationMessage,f=function(){if(!s){var t,n=function(t,n,a){if("function"==typeof t[e]){var c,s,l,f=function(t){try{for(;!((c=v.next()).done||a&&a());)if((t=n(c.value))&&t.then){if(!o(t))return void t.then(f,l||(l=r.bind(null,s=new i,2)));t=t.v}s?r(s,1,t):s=t}catch(t){r(s||(s=new i),2,t)}},v=t[e]();if(f(),v.return){var m=function(t){try{c.done||v.return()}catch(t){}return t};if(s&&s.then)return s.then(m,function(t){throw m(t)});m()}return s}if(!("length"in t))throw new TypeError("Object is not iterable");for(var d=[],h=0;h<t.length;h++)d.push(t[h]);return u(d,function(t){return n(d[t])},a)}(l,function(n){if(n)return Promise.resolve(n(c)).then(function(n){n&&(s=n,null==c.setCustomValidity||c.setCustomValidity(n),t=1)})},function(){return t});if(n&&n.then)return n.then(function(){})}}();return Promise.resolve(f&&f.then?f.then(t):t())}catch(t){return Promise.reject(t)}}}function c(e){var r=function(t,n){try{var e=function(){if(!r)return m(!0),Promise.resolve(t(n)).then(function(t){if(m(!1),t instanceof Object){for(var n in t)n in b&&b[n].element.setAttribute("aria-invalid","true");l(t)}else p(),h(!0)})},r=!1,i=function(t){var n=[];for(var e in t)n.push(e);return u(n,function(t){return function(t){var n=b[t];if(n)return Promise.resolve(a(n,l,o)()).then(function(e){r||!n.element.validationMessage&&!e||(n.element.focus(),n.element.scrollIntoView({behavior:"smooth"}),document.contains(n.element)?r=!0:delete b[t])})}(n[t])},void 0)}(b);return Promise.resolve(i&&i.then?i.then(e):e())}catch(t){return Promise.reject(t)}},i=(void 0===e?{}:e).errorClass,o=void 0===i?"":i,c=n({}),s=c[0],l=c[1],f=t(!1),v=f[0],m=f[1],d=t(!1),h=d[1],b={},y=function(t,n){void 0===n&&(n=function(){}),queueMicrotask(function(){var e,r,i=null!=(e=t.name)?e:t.dataset.name,u=n(),c=Array.isArray(u)?u:[];b[i]=r={element:t,validators:c},t.onblur=function(){return h(!1),a(r,l,o)},t.oninput=function(){var n;h(!1),s[i]&&(l(((n={})[i]=void 0,n)),t.setAttribute("aria-invalid","false"),o&&t.classList.toggle(o,!1))}})};function p(){l(function(t){return Object.fromEntries(Object.entries(t).map(function(t){return[t[0],void 0]}))})}return{validate:y,formSubmit:function(t,n){var e=n()||function(){};h(!1),t.setAttribute("novalidate",""),t.onsubmit=function(n){try{return n.preventDefault(),Promise.resolve(r(e,t)).then(function(){})}catch(n){return Promise.reject(n)}},t.onreset=function(){p()}},submit:r,errors:s,isSubmitting:v,isSubmitted:d[0],validateField:function(t){try{var n=b[t];return n?Promise.resolve(a(n,l,o)()).then(function(e){return(n.element.validationMessage||e)&&(n.element.focus(),n.element.scrollIntoView({behavior:"smooth"})),!s[t]}):Promise.resolve(!1)}catch(t){return Promise.reject(t)}},getFieldValue:function(t){var n=b[t];return null==n?void 0:n.element.value},validateRef:function(){var t=arguments;return function(n){return y(n,function(){return[].slice.call(t)})}}}}export{c as useForm};
//# sourceMappingURL=main.module.js.map