UNPKG

framework7

Version:

Full featured mobile HTML framework for building iOS & Android apps

1 lines 5.09 kB
(function framework7ComponentLoader(t,e){void 0===e&&(e=!0);var a=document,s=window,m=t.$,c=(t.Template7,t.utils),r=(t.device,t.support,t.Class,t.Modal,t.ConstructorMethods,t.ModalMethods,{store:function(t,e){var a=t,r=m(t);r.length&&r.is("form")&&r.attr("id")&&(a=r.attr("id")),this.form.data["form-"+a]=e;try{s.localStorage["f7form-"+a]=JSON.stringify(e)}catch(t){throw t}},get:function(t){var e=t,a=m(t);a.length&&a.is("form")&&a.attr("id")&&(e=a.attr("id"));try{if(s.localStorage["f7form-"+e])return JSON.parse(s.localStorage["f7form-"+e])}catch(t){throw t}if(this.form.data["form-"+e])return this.form.data["form-"+e]},remove:function(t){var e=this,a=t,r=m(t);r.length&&r.is("form")&&r.attr("id")&&(a=r.attr("id")),e.form.data["form-"+a]&&(e.form.data["form-"+a]="",delete e.form.data["form-"+a]);try{s.localStorage["f7form-"+a]&&(s.localStorage["f7form-"+a]="",s.localStorage.removeItem("f7form-"+a))}catch(t){throw t}}}),o={init:function(t){var e=this,a=m(t),r=a.attr("id");if(r){var o=e.form.getFormData(r);o&&e.form.fillFromData(a,o),a.on("change submit",function(){var t=e.form.convertToData(a);t&&(e.form.storeFormData(r,t),a.trigger("form:storedata",t),e.emit("formStoreData",a[0],t))})}},destroy:function(t){m(t).off("change submit")}};var n={name:"form",create:function(){var t=this;c.extend(t,{form:{data:{},storeFormData:r.store.bind(t),getFormData:r.get.bind(t),removeFormData:r.remove.bind(t),convertToData:function(t){var i=m(t).eq(0);if(0!==i.length){var f={},s=["submit","image","button","file"],c=[];return i.find("input, select, textarea").each(function(t,e){var a=m(e);if(!a.hasClass("ignore-store-data")&&!a.hasClass("no-store-data")){var r=a.attr("name"),o=a.attr("type"),n=e.nodeName.toLowerCase();if(!(0<=s.indexOf(o))&&!(0<=c.indexOf(r))&&r)if("select"===n&&a.prop("multiple"))c.push(r),f[r]=[],i.find('select[name="'+r+'"] option').each(function(t,e){e.selected&&f[r].push(e.value)});else switch(o){case"checkbox":c.push(r),f[r]=[],i.find('input[name="'+r+'"]').each(function(t,e){e.checked&&f[r].push(e.value)});break;case"radio":c.push(r),i.find('input[name="'+r+'"]').each(function(t,e){e.checked&&(f[r]=e.value)});break;default:f[r]=a.val()}}}),i.trigger("form:todata",f),this.emit("formToData",i[0],f),f}}.bind(t),fillFromData:function(t,e){var i=m(t).eq(0);if(i.length){var f=e,a=i.attr("id");if(!f&&a&&(f=this.form.getFormData(a)),f){var s=["submit","image","button","file"],c=[];i.find("input, select, textarea").each(function(t,e){var a=m(e);if(!a.hasClass("ignore-store-data")&&!a.hasClass("no-store-data")){var r=a.attr("name"),o=a.attr("type"),n=e.nodeName.toLowerCase();if(void 0!==f[r]&&null!==f[r]&&!(0<=s.indexOf(o))&&!(0<=c.indexOf(r))&&r){if("select"===n&&a.prop("multiple"))c.push(r),i.find('select[name="'+r+'"] option').each(function(t,e){var a=e;0<=f[r].indexOf(e.value)?a.selected=!0:a.selected=!1});else switch(o){case"checkbox":c.push(r),i.find('input[name="'+r+'"]').each(function(t,e){var a=e;0<=f[r].indexOf(e.value)?a.checked=!0:a.checked=!1});break;case"radio":c.push(r),i.find('input[name="'+r+'"]').each(function(t,e){var a=e;f[r]===e.value?a.checked=!0:a.checked=!1});break;default:a.val(f[r])}"select"!==n&&"input"!==n&&"textarea"!==n||a.trigger("change","fromdata")}}}),i.trigger("form:fromdata",f),this.emit("formFromData",i[0],f)}}}.bind(t),storage:{init:o.init.bind(t),destroy:o.destroy.bind(t)}}})},on:{init:function(){(function(){var f=this;m(a).on("submit change","form.form-ajax-submit, form.form-ajax-submit-onchange",function(t,e){var r=m(this);if(("change"!==t.type||r.hasClass("form-ajax-submit-onchange"))&&("submit"===t.type&&t.preventDefault(),"change"!==t.type||"fromdata"!==e)){var o,a=(r.attr("method")||"GET").toUpperCase(),n=r.prop("enctype")||r.attr("enctype"),i=r.attr("action");i&&(o="POST"===a?"application/x-www-form-urlencoded"===n?f.form.convertToData(r[0]):new s.FormData(r[0]):c.serializeObject(f.form.convertToData(r[0])),f.request({method:a,url:i,contentType:n,data:o,beforeSend:function(t){r.trigger("formajax:beforesend",o,t),f.emit("formAjaxBeforeSend",r[0],o,t)},error:function(t){r.trigger("formajax:error",o,t),f.emit("formAjaxError",r[0],o,t)},complete:function(t){r.trigger("formajax:complete",o,t),f.emit("formAjaxComplete",r[0],o,t)},success:function(t,e,a){r.trigger("formajax:success",o,a),f.emit("formAjaxSuccess",r[0],o,a)}}))}})}).call(this)},tabBeforeRemove:function(t){var a=this;m(t).find(".form-store-data").each(function(t,e){a.form.storage.destroy(e)})},tabMounted:function(t){var a=this;m(t).find(".form-store-data").each(function(t,e){a.form.storage.init(e)})},pageBeforeRemove:function(t){var a=this;t.$el.find(".form-store-data").each(function(t,e){a.form.storage.destroy(e)})},pageInit:function(t){var a=this;t.$el.find(".form-store-data").each(function(t,e){a.form.storage.init(e)})}}};if(e){if(t.prototype.modules&&t.prototype.modules[n.name])return;t.use(n),t.instance&&(t.instance.useModuleParams(n,t.instance.params),t.instance.useModule(n))}return n}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))