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