UNPKG

framework7

Version:

Full featured mobile HTML framework for building iOS & Android apps

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