From 46a3f337a518fe634d29681f451b47a64c1e85de Mon Sep 17 00:00:00 2001 From: Kyle Essex Date: Fri, 14 Apr 2023 13:05:25 +0100 Subject: [PATCH] Add filesizeValidator (#26) * Add filesizeValidator * Bump version --- demo/index.php | 28 +++++++++++++++++++++++++--- js/dist/form.min.css | 2 +- js/dist/form.min.js | 4 +++- js/src/validation.js | 16 ++++++++++++---- package.json | 2 +- 5 files changed, 42 insertions(+), 10 deletions(-) diff --git a/demo/index.php b/demo/index.php index 66d2b90..b21cfd2 100644 --- a/demo/index.php +++ b/demo/index.php @@ -16,6 +16,7 @@ use Packaged\SafeHtml\SafeHtml; use Packaged\Validate\Validators\ConfirmationValidator; use Packaged\Validate\Validators\EqualValidator; +use Packaged\Validate\Validators\FileSizeValidator; use Packaged\Validate\Validators\RegexValidator; use Packaged\Validate\Validators\RequiredValidator; use Packaged\Validate\Validators\StringValidator; @@ -94,7 +95,10 @@ protected function _initDataHandlers() ->addValidator(new RequiredValidator()); $this->youCantTouchThis = ReadOnlyDataHandler::i()->setValue('Dare You'); $this->age = IntegerDataHandler::i()->setLabel('How old are you?'); - $this->profilePicture = FileDataHandler::i()->setLabel("Profile Picture")->setGuidance('120px X 120px png or jpg'); + $this->profilePicture = FileDataHandler::i() + ->addValidator(new FileSizeValidator(1)) + ->setLabel("Profile Picture") + ->setGuidance('Max Size 1mb'); $this->comments = MultiLineTextDataHandler::i() ->setLabel("Any Comments?") ->setGuidance("Required") @@ -113,8 +117,7 @@ protected function _configureDataHandlers() $form = new DemoForm(); if(!empty($data)) { - $form->hydrate($data); - $form->validate(); + $errors = $form->hydrate($data); } ?> @@ -151,6 +154,24 @@ protected function _configureDataHandlers()

Example Form

render() ?> + +
+

ERROR Data

+ + $v): ?> + + + + + +
+ + getMessage() ?> + +
+
+ +

POST Data

@@ -164,6 +185,7 @@ protected function _configureDataHandlers()

Form Data

+ selection->getValue() ?> getFormData() as $k => $v): ?> diff --git a/js/dist/form.min.css b/js/dist/form.min.css index db3580c..8825d55 100644 --- a/js/dist/form.min.css +++ b/js/dist/form.min.css @@ -1 +1 @@ -:host,:root{--p-form-placeholder-color:120,120,120;--p-form-text-color:49,49,49;--p-form-padding:5px 10px;--p-form-error-color:178,0,0}.p-form{max-width:600px}.p-form__field{padding:5px}.p-form__field__contain{display:flex}.p-form__field__contain div:not(.p-form__label){flex-grow:1}.p-form__label{flex-basis:150px;padding:2px 4px}.p-form__input{background-color:#fff;border:1px solid #c3c3c3;border-radius:5px;box-sizing:border-box;color:rgb(var(--p-form-placeholder-color));display:inline-block;font-size:16px;height:36px;line-height:26px;min-width:200px;overflow:hidden;padding:var(--p-form-padding);position:relative;width:100%}.p-form__input.p-form__input--boolean{align-items:center;display:flex}.p-form__input input::-moz-placeholder{color:rgb(var(--p-form-placeholder-color));opacity:1}.p-form__input input::placeholder{color:rgb(var(--p-form-placeholder-color));opacity:1}.p-form__input input:-ms-input-placeholder{color:rgb(var(--p-form-placeholder-color))}.p-form__input input::-ms-input-placeholder{color:rgb(var(--p-form-placeholder-color))}.p-form__input .input,.p-form__input>input,.p-form__input select{background:transparent;border:none;border-radius:inherit;bottom:0;box-sizing:border-box;color:rgb(var(--p-form-text-color));font-family:inherit;font-size:16px;font-weight:inherit;height:100%;left:0;line-height:100%;outline:none;padding:var(--p-form-padding);position:absolute;right:0;top:0;width:100%}.p-form__input--multi-value-enum-single{height:72px}.p-form__input--enum-split,.p-form__input--multi-value-enum-split{height:auto}.p-form__input--boolean,.p-form__input--enum-split,.p-form__input--multi-value-enum-split{border:none;overflow:visible;padding:0}.p-form__input input[type=checkbox]{height:auto;position:relative;width:auto}.p-form__input .p-form__checkbox input{height:16px}.p-form__input--multi-line-text{border:0;height:unset;padding-left:0;padding-right:0}.p-form__input textarea{background-color:#fff;border:1px solid #c3c3c3;border-radius:5px;font-family:inherit;font-size:16px;outline:none;padding:var(--p-form-padding);resize:none;width:100%}.p-form__errors{color:rgb(var(--p-form-error-color))}.p-form__errors ul{font-size:90%;list-style-type:none;margin:1px 0 0;padding:3px}.p-form__field:not([validation-state=invalid]) .p-form__errors{display:none}.p-form__field[validation-state=invalid] .p-form__input--multi-line-text textarea,.p-form__field[validation-state=invalid] .p-form__input:not(.p-form__input--boolean):not(.p-form__input--enum-split):not(.p-form__input--multi-line-text){border:1px solid rgb(var(--p-form-error-color))}.p-form__submit{background-color:#fff;border:1px solid #c3c3c3;border-radius:5px;color:rgb(var(--p-form-placeholder-color));display:inline-block;height:36px;line-height:26px;min-width:200px;overflow:hidden;position:relative}.p-form__submit,.p-form__submit button,.p-form__submit input{box-sizing:border-box;font-size:16px;padding:var(--p-form-padding);width:100%}.p-form__submit button,.p-form__submit input{background:transparent;border:none;border-radius:inherit;bottom:0;color:rgb(var(--p-form-text-color));font-family:inherit;font-weight:inherit;height:100%;left:0;line-height:100%;outline:none;position:absolute;right:0;top:0}.p-form__submit{background-color:#c3c3c3;border-color:#8c8c8c;color:#313131}.p-form__submit button:active,.p-form__submit input:active{box-shadow:inset 0 0 3px #8c8c8c}.p-form__guidance{opacity:.8;padding:3px 4px} \ No newline at end of file +:host,:root{--p-form-placeholder-color:120,120,120;--p-form-text-color:49,49,49;--p-form-padding:5px 10px;--p-form-error-color:178,0,0}.p-form{max-width:600px}.p-form__field{padding:5px}.p-form__field__contain{display:flex}.p-form__field__contain div:not(.p-form__label){flex-grow:1}.p-form__label{flex-basis:150px;padding:2px 4px}.p-form__input{background-color:#fff;border:1px solid #c3c3c3;border-radius:5px;box-sizing:border-box;color:rgb(var(--p-form-placeholder-color));display:inline-block;font-size:16px;height:36px;line-height:26px;min-width:200px;overflow:hidden;padding:var(--p-form-padding);position:relative;width:100%}.p-form__input.p-form__input--boolean{align-items:center;display:flex}.p-form__input input::-moz-placeholder{color:rgb(var(--p-form-placeholder-color));opacity:1}.p-form__input input::placeholder{color:rgb(var(--p-form-placeholder-color));opacity:1}.p-form__input input:-ms-input-placeholder{color:rgb(var(--p-form-placeholder-color))}.p-form__input input::-ms-input-placeholder{color:rgb(var(--p-form-placeholder-color))}.p-form__input .input,.p-form__input select,.p-form__input>input{background:transparent;border:none;border-radius:inherit;bottom:0;box-sizing:border-box;color:rgb(var(--p-form-text-color));font-family:inherit;font-size:16px;font-weight:inherit;height:100%;left:0;line-height:100%;outline:none;padding:var(--p-form-padding);position:absolute;right:0;top:0;width:100%}.p-form__input--multi-value-enum-single{height:72px}.p-form__input--enum-split,.p-form__input--multi-value-enum-split{height:auto}.p-form__input--boolean,.p-form__input--enum-split,.p-form__input--multi-value-enum-split{border:none;overflow:visible;padding:0}.p-form__input input[type=checkbox]{height:auto;position:relative;width:auto}.p-form__input .p-form__checkbox input{height:16px}.p-form__input--multi-line-text{border:0;height:unset;padding-left:0;padding-right:0}.p-form__input textarea{background-color:#fff;border:1px solid #c3c3c3;border-radius:5px;font-family:inherit;font-size:16px;outline:none;padding:var(--p-form-padding);resize:none;width:100%}.p-form__errors{color:rgb(var(--p-form-error-color))}.p-form__errors ul{font-size:90%;list-style-type:none;margin:1px 0 0;padding:3px}.p-form__field:not([validation-state=invalid]) .p-form__errors{display:none}.p-form__field[validation-state=invalid] .p-form__input--multi-line-text textarea,.p-form__field[validation-state=invalid] .p-form__input:not(.p-form__input--boolean):not(.p-form__input--enum-split):not(.p-form__input--multi-line-text){border:1px solid rgb(var(--p-form-error-color))}.p-form__submit{background-color:#fff;border:1px solid #c3c3c3;border-radius:5px;color:rgb(var(--p-form-placeholder-color));display:inline-block;height:36px;line-height:26px;min-width:200px;overflow:hidden;position:relative}.p-form__submit,.p-form__submit button,.p-form__submit input{box-sizing:border-box;font-size:16px;padding:var(--p-form-padding);width:100%}.p-form__submit button,.p-form__submit input{background:transparent;border:none;border-radius:inherit;bottom:0;color:rgb(var(--p-form-text-color));font-family:inherit;font-weight:inherit;height:100%;left:0;line-height:100%;outline:none;position:absolute;right:0;top:0}.p-form__submit{background-color:#c3c3c3;border-color:#8c8c8c;color:#313131}.p-form__submit button:active,.p-form__submit input:active{box-shadow:inset 0 0 3px #8c8c8c}.p-form__guidance{opacity:.8;padding:3px 4px} \ No newline at end of file diff --git a/js/dist/form.min.js b/js/dist/form.min.js index 19efbac..fd1155c 100644 --- a/js/dist/form.min.js +++ b/js/dist/form.min.js @@ -1 +1,3 @@ -!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports):"function"==typeof define&&define.amd?define(["exports"],e):e((t="undefined"!=typeof globalThis?globalThis:t||self).Form={})}(this,(function(t){"use strict";var e="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{},r=function(t){return t&&t.Math==Math&&t},n=r("object"==typeof globalThis&&globalThis)||r("object"==typeof window&&window)||r("object"==typeof self&&self)||r("object"==typeof e&&e)||function(){return this}()||Function("return this")(),o=function(t){return"function"==typeof t},i=o,a=function(t){return"object"==typeof t?null!==t:i(t)},s=a,c=n.document,u=s(c)&&s(c.createElement),l=function(t){return u?c.createElement(t):{}},f=l("span").classList,d=f&&f.constructor&&f.constructor.prototype,p=d===Object.prototype?void 0:d,h=Function.prototype,v=h.bind,g=h.call,y=v&&v.bind(g),m=v?function(t){return t&&y(g,t)}:function(t){return t&&function(){return g.apply(t,arguments)}},b=function(t){try{return!!t()}catch(t){return!0}},x=m,_=x({}.toString),w=x("".slice),S=function(t){return w(_(t),8,-1)},O=m,E=b,A=S,L=n.Object,j=O("".split),T=E((function(){return!L("z").propertyIsEnumerable(0)}))?function(t){return"String"==A(t)?j(t,""):L(t)}:L,I=n.TypeError,P=function(t){if(null==t)throw I("Can't call method on "+t);return t},R=T,C=P,M=function(t){return R(C(t))},k={exports:{}},V=n,F=Object.defineProperty,z=function(t,e){try{F(V,t,{value:e,configurable:!0,writable:!0})}catch(r){V[t]=e}return e},D=z,$="__core-js_shared__",N=n[$]||D($,{}),G=N;(k.exports=function(t,e){return G[t]||(G[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.19.3",mode:"global",copyright:"© 2021 Denis Pushkarev (zloirock.ru)"});var q,W,B=P,H=n.Object,U=function(t){return H(B(t))},Z=U,Y=m({}.hasOwnProperty),K=Object.hasOwn||function(t,e){return Y(Z(t),e)},J=m,X=0,Q=Math.random(),tt=J(1..toString),et=function(t){return"Symbol("+(void 0===t?"":t)+")_"+tt(++X+Q,36)},rt=n,nt=o,ot=function(t){return nt(t)?t:void 0},it=function(t,e){return arguments.length<2?ot(rt[t]):rt[t]&&rt[t][e]},at=n,st=it("navigator","userAgent")||"",ct=at.process,ut=at.Deno,lt=ct&&ct.versions||ut&&ut.version,ft=lt&<.v8;ft&&(W=(q=ft.split("."))[0]>0&&q[0]<4?1:+(q[0]+q[1])),!W&&st&&(!(q=st.match(/Edge\/(\d+)/))||q[1]>=74)&&(q=st.match(/Chrome\/(\d+)/))&&(W=+q[1]);var dt=W,pt=b,ht=!!Object.getOwnPropertySymbols&&!pt((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&dt&&dt<41})),vt=ht&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,gt=n,yt=k.exports,mt=K,bt=et,xt=ht,_t=vt,wt=yt("wks"),St=gt.Symbol,Ot=St&&St.for,Et=_t?St:St&&St.withoutSetter||bt,At=function(t){if(!mt(wt,t)||!xt&&"string"!=typeof wt[t]){var e="Symbol."+t;xt&&mt(St,t)?wt[t]=St[t]:wt[t]=_t&&Ot?Ot(e):Et(e)}return wt[t]},Lt=n,jt=a,Tt=Lt.String,It=Lt.TypeError,Pt=function(t){if(jt(t))return t;throw It(Tt(t)+" is not an object")},Rt=!b((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),Ct={},Mt=l,kt=!Rt&&!b((function(){return 7!=Object.defineProperty(Mt("div"),"a",{get:function(){return 7}}).a})),Vt=Function.prototype.call,Ft=Vt.bind?Vt.bind(Vt):function(){return Vt.apply(Vt,arguments)},zt=m({}.isPrototypeOf),Dt=it,$t=o,Nt=zt,Gt=vt,qt=n.Object,Wt=Gt?function(t){return"symbol"==typeof t}:function(t){var e=Dt("Symbol");return $t(e)&&Nt(e.prototype,qt(t))},Bt=n.String,Ht=o,Ut=function(t){try{return Bt(t)}catch(t){return"Object"}},Zt=n.TypeError,Yt=function(t){if(Ht(t))return t;throw Zt(Ut(t)+" is not a function")},Kt=function(t,e){var r=t[e];return null==r?void 0:Yt(r)},Jt=Ft,Xt=o,Qt=a,te=n.TypeError,ee=Ft,re=a,ne=Wt,oe=Kt,ie=function(t,e){var r,n;if("string"===e&&Xt(r=t.toString)&&!Qt(n=Jt(r,t)))return n;if(Xt(r=t.valueOf)&&!Qt(n=Jt(r,t)))return n;if("string"!==e&&Xt(r=t.toString)&&!Qt(n=Jt(r,t)))return n;throw te("Can't convert object to primitive value")},ae=At,se=n.TypeError,ce=ae("toPrimitive"),ue=function(t,e){if(!re(t)||ne(t))return t;var r,n=oe(t,ce);if(n){if(void 0===e&&(e="default"),r=ee(n,t,e),!re(r)||ne(r))return r;throw se("Can't convert object to primitive value")}return void 0===e&&(e="number"),ie(t,e)},le=Wt,fe=function(t){var e=ue(t,"string");return le(e)?e:e+""},de=Rt,pe=kt,he=Pt,ve=fe,ge=n.TypeError,ye=Object.defineProperty;Ct.f=de?ye:function(t,e,r){if(he(t),e=ve(e),he(r),pe)try{return ye(t,e,r)}catch(t){}if("get"in r||"set"in r)throw ge("Accessors not supported");return"value"in r&&(t[e]=r.value),t};var me,be=Math.ceil,xe=Math.floor,_e=function(t){var e=+t;return e!=e||0===e?0:(e>0?xe:be)(e)},we=_e,Se=Math.max,Oe=Math.min,Ee=_e,Ae=Math.min,Le=function(t){return t>0?Ae(Ee(t),9007199254740991):0},je=Le,Te=M,Ie=function(t,e){var r=we(t);return r<0?Se(r+e,0):Oe(r,e)},Pe=function(t){return je(t.length)},Re=function(t){return function(e,r,n){var o,i=Te(e),a=Pe(i),s=Ie(n,a);if(t&&r!=r){for(;a>s;)if((o=i[s++])!=o)return!0}else for(;a>s;s++)if((t||s in i)&&i[s]===r)return t||s||0;return!t&&-1}},Ce={includes:Re(!0),indexOf:Re(!1)},Me={},ke=K,Ve=M,Fe=Ce.indexOf,ze=Me,De=m([].push),$e=function(t,e){var r,n=Ve(t),o=0,i=[];for(r in n)!ke(ze,r)&&ke(n,r)&&De(i,r);for(;e.length>o;)ke(n,r=e[o++])&&(~Fe(i,r)||De(i,r));return i},Ne=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Ge=$e,qe=Ne,We=Object.keys||function(t){return Ge(t,qe)},Be=Ct,He=Pt,Ue=M,Ze=We,Ye=Rt?Object.defineProperties:function(t,e){He(t);for(var r,n=Ue(e),o=Ze(e),i=o.length,a=0;i>a;)Be.f(t,r=o[a++],n[r]);return t},Ke=it("document","documentElement"),Je=k.exports,Xe=et,Qe=Je("keys"),tr=function(t){return Qe[t]||(Qe[t]=Xe(t))},er=Pt,rr=Ye,nr=Ne,or=Me,ir=Ke,ar=l,sr=tr("IE_PROTO"),cr=function(){},ur=function(t){return"