framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
1 lines • 7.62 kB
JavaScript
(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);document,window;var X=e.$,Y=(e.Template7,e.utils),a=(e.device,e.support,e.Class),r=(e.Modal,e.ConstructorMethods),p=(e.ModalMethods,function(D){function e(e,t){D.call(this,t,[e]);var a=this,n={el:null,inputEl:null,valueEl:null,value:0,formatValue:null,step:1,min:0,max:100,watchInput:!0,autorepeat:!1,autorepeatDynamic:!1,wraps:!1,manualInputMode:!1,decimalPoint:4,buttonsEndInputMode:!0};a.useModulesParams(n),a.params=Y.extend(n,t),a.params.value<a.params.min&&(a.params.value=a.params.min),a.params.value>a.params.max&&(a.params.value=a.params.max);var r=a.params.el;if(!r)return a;var p,u,l=X(r);if(0===l.length)return a;if(l[0].f7Stepper)return l[0].f7Stepper;if(a.params.inputEl?p=X(a.params.inputEl):l.find(".stepper-input-wrap").find("input, textarea").length&&(p=l.find(".stepper-input-wrap").find("input, textarea").eq(0)),p&&p.length){"step min max".split(" ").forEach(function(e){!t[e]&&p.attr(e)&&(a.params[e]=parseFloat(p.attr(e)))});var i=parseInt(a.params.decimalPoint,10);Number.isNaN(i)?a.params.decimalPoint=0:a.params.decimalPoint=i;var o=parseFloat(p.val());void 0!==t.value||Number.isNaN(o)||!o&&0!==o||(a.params.value=o)}a.params.valueEl?u=X(a.params.valueEl):l.find(".stepper-value").length&&(u=l.find(".stepper-value").eq(0));var s=l.find(".stepper-button-plus"),c=l.find(".stepper-button-minus"),v=a.params,f=v.step,m=v.min,d=v.max,h=v.value,g=v.decimalPoint;Y.extend(a,{app:e,$el:l,el:l[0],$buttonPlusEl:s,buttonPlusEl:s[0],$buttonMinusEl:c,buttonMinusEl:c[0],$inputEl:p,inputEl:p?p[0]:void 0,$valueEl:u,valueEl:u?u[0]:void 0,step:f,min:m,max:d,value:h,decimalPoint:g,typeModeChanged:!1}),l[0].f7Stepper=a;var y,E,$,M,x,b={},S=null,I=!1,V=!1;function w(e){y||(V||(X(e.target).closest(s).length?S="increment":X(e.target).closest(c).length&&(S="decrement"),S&&(b.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,b.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,y=!0,E=void 0,function e(t,a,n,r,p,u){clearTimeout(x),x=setTimeout(function(){1===t&&(I=$=!0),clearInterval(M),u(),M=setInterval(function(){u()},p),t<a&&e(t+1,a,n,r,p/2,u)},1===t?n:r)}(1,a.params.autorepeatDynamic?4:1,500,1e3,300,function(){a[S]()}))))}function N(e){if(y&&!V){var t="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,a="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY;void 0!==E||I||(E=!!(E||Math.abs(a-b.y)>Math.abs(t-b.x)));var n=Math.pow(Math.pow(t-b.x,2)+Math.pow(a-b.y,2),.5);(E||20<n)&&(y=!1,clearTimeout(x),clearInterval(M))}}function P(){clearTimeout(x),clearInterval(M),S=null,y=I=!1}function T(){V?a.params.buttonsEndInputMode&&(V=!1,a.endTypeMode(!0)):$?$=!1:a.decrement(!0)}function k(){V?a.params.buttonsEndInputMode&&(V=!1,a.endTypeMode(!0)):$?$=!1:a.increment(!0)}function C(e){!e.target.readOnly&&a.params.manualInputMode&&(V=!0,"number"==typeof e.target.selectionStart&&(e.target.selectionStart=e.target.value.length,e.target.selectionEnd=e.target.value.length))}function F(e){13!==e.keyCode&&13!==e.which||(e.preventDefault(),V=!1,a.endTypeMode())}function O(){V=!1,a.endTypeMode(!0)}function B(e){V?a.typeValue(e.target.value):e.detail&&e.detail.sentByF7Stepper||a.setValue(e.target.value,!0)}return a.attachEvents=function(){c.on("click",T),s.on("click",k),a.params.watchInput&&p&&p.length&&(p.on("input",B),p.on("click",C),p.on("blur",O),p.on("keyup",F)),a.params.autorepeat&&(e.on("touchstart:passive",w),e.on("touchmove:active",N),e.on("touchend:passive",P))},a.detachEvents=function(){c.off("click",T),s.off("click",k),a.params.watchInput&&p&&p.length&&(p.off("input",B),p.off("click",C),p.off("blur",O),p.off("keyup",F))},a.useModules(),a.init(),a}return D&&(e.__proto__=D),((e.prototype=Object.create(D&&D.prototype)).constructor=e).prototype.minus=function(){return this.decrement()},e.prototype.plus=function(){return this.increment()},e.prototype.decrement=function(){return this.setValue(this.value-this.step,!1,!0)},e.prototype.increment=function(){return this.setValue(this.value+this.step,!1,!0)},e.prototype.setValue=function(e,t,a){var n=this,r=n.step,p=n.min,u=n.max,l=n.value,i=Math.round(e/r)*r;if(n.params.wraps&&a?(u<i&&(i=p),i<p&&(i=u)):i=Math.max(Math.min(i,u),p),Number.isNaN(i)&&(i=l),!(l!==(n.value=i))&&!t)return n;n.$el.trigger("stepper:change",n,n.value);var o=n.formatValue(n.value);return n.$inputEl&&n.$inputEl.length&&(n.$inputEl.val(o),n.$inputEl.trigger("input change",{sentByF7Stepper:!0})),n.$valueEl&&n.$valueEl.length&&n.$valueEl.html(o),n.emit("local::change stepperChange",n,n.value),n},e.prototype.endTypeMode=function(e){var t=this,a=t.min,n=t.max,r=parseFloat(t.value);if(Number.isNaN(r)&&(r=0),r=Math.max(Math.min(r,n),a),t.value=r,!t.typeModeChanged)return t.$inputEl&&t.$inputEl.length&&!e&&t.$inputEl.blur(),t;t.typeModeChanged=!1,t.$el.trigger("stepper:change",t,t.value);var p=t.formatValue(t.value);return t.$inputEl&&t.$inputEl.length&&(t.$inputEl.val(p),t.$inputEl.trigger("input change",{sentByF7Stepper:!0}),e||t.$inputEl.blur()),t.$valueEl&&t.$valueEl.length&&t.$valueEl.html(p),t.emit("local::change stepperChange",t,t.value),t},e.prototype.typeValue=function(e){var t=this;t.typeModeChanged=!0;var a=String(e);if(a.lastIndexOf(".")+1===a.length||a.lastIndexOf(",")+1===a.length)return a.lastIndexOf(".")!==a.indexOf(".")||a.lastIndexOf(",")!==a.indexOf(",")?(a=a.slice(0,-1),t.value=a,t.$inputEl.val(t.value)):(t.value=a,t.$inputEl.val(a)),t;var n=parseFloat(a.replace(",","."));if(0===n)return t.value=a.replace(",","."),t.$inputEl.val(t.value),t;if(Number.isNaN(n))return t.value=0,t.$inputEl.val(t.value),t;var r=Math.pow(10,t.params.decimalPoint);return n=Math.round(n*r).toFixed(t.params.decimalPoint+1)/r,t.value=parseFloat(String(n).replace(",",".")),t.$inputEl.val(t.value),t},e.prototype.getValue=function(){return this.value},e.prototype.formatValue=function(e){return this.params.formatValue?this.params.formatValue.call(this,e):e},e.prototype.init=function(){var e=this;if(e.attachEvents(),e.$valueEl&&e.$valueEl.length){var t=e.formatValue(e.value);e.$valueEl.html(t)}return e},e.prototype.destroy=function(){var e=this;e.$el.trigger("stepper:beforedestroy",e),e.emit("local::beforeDestroy stepperBeforeDestroy",e),delete e.$el[0].f7Stepper,e.detachEvents(),Y.deleteProps(e),e=null},e}(a)),n={name:"stepper",create:function(){var n=this;n.stepper=Y.extend(r({defaultSelector:".stepper",constructor:p,app:n,domProp:"f7Stepper"}),{getValue:function(e){void 0===e&&(e=".stepper");var t=n.stepper.get(e);if(t)return t.getValue()},setValue:function(e,t){void 0===e&&(e=".stepper");var a=n.stepper.get(e);if(a)return a.setValue(t)}})},static:{Stepper:p},on:{tabMounted:function(e){var n=this;X(e).find(".stepper-init").each(function(e,t){var a=X(t).dataset();n.stepper.create(Y.extend({el:t},a||{}))})},tabBeforeRemove:function(e){X(e).find(".stepper-init").each(function(e,t){t.f7Stepper&&t.f7Stepper.destroy()})},pageInit:function(e){var n=this;e.$el.find(".stepper-init").each(function(e,t){var a=X(t).dataset();n.stepper.create(Y.extend({el:t},a||{}))})},pageBeforeRemove:function(e){e.$el.find(".stepper-init").each(function(e,t){t.f7Stepper&&t.f7Stepper.destroy()})}},vnode:{"stepper-init":{insert:function(e){var t=e.elm,a=X(t).dataset();this.stepper.create(Y.extend({el:t},a||{}))},destroy:function(e){var t=e.elm;t.f7Stepper&&t.f7Stepper.destroy()}}}};if(t){if(e.prototype.modules&&e.prototype.modules[n.name])return;e.use(n),e.instance&&(e.instance.useModuleParams(n,e.instance.params),e.instance.useModule(n))}return n}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))