framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
2 lines (1 loc) • 16.4 kB
JavaScript
(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var n=e.$,i=e.utils,a=e.getDevice,r=e.getSupport,o=e.Class,s=(e.Modal,e.ConstructorMethods);e.ModalMethods;function l(e){this.wrapped=e}function c(e){var t,n;function i(t,n){try{var r=e[t](n),o=r.value,s=o instanceof l;Promise.resolve(s?o.wrapped:o).then((function(e){s?i("return"===t?"return":"next",e):a(r.done?"return":"normal",e)}),(function(e){i("throw",e)}))}catch(e){a("throw",e)}}function a(e,a){switch(e){case"return":t.resolve({value:a,done:!0});break;case"throw":t.reject(a);break;default:t.resolve({value:a,done:!1})}(t=t.next)?i(t.key,t.arg):n=null}this._invoke=function(e,a){return new Promise((function(r,o){var s={key:e,arg:a,resolve:r,reject:o,next:null};n?n=n.next=s:(t=n=s,i(e,a))}))},"function"!=typeof e.return&&(this.return=void 0)}function u(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function p(e,t){return(p=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}function d(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}c.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},c.prototype.next=function(e){return this._invoke("next",e)},c.prototype.throw=function(e){return this._invoke("throw",e)},c.prototype.return=function(e){return this._invoke("return",e)};var m=i.requestAnimationFrame,v=i.getTranslate,f=i.extend,h=i.nextTick,E=i.deleteProps;function $(e,t){var i=this,a=i.app,o=n(e),s=o.index(),l=i.cols[s];if(!l.divider){var c,u,p,d,f;l.$el=o,l.el=o[0],l.$itemsEl=l.$el.find(".picker-items"),l.items=l.$itemsEl.find(".picker-item"),l.replaceValues=function(e,t){l.detachEvents(),l.values=e,l.displayValues=t,l.$itemsEl.html(i.renderColumn(l,!0)),l.items=l.$itemsEl.find(".picker-item"),l.calcSize(),l.setValue(l.values[0],0,!0),l.attachEvents()},l.calcSize=function(){i.params.rotateEffect&&(l.$el.removeClass("picker-column-absolute"),l.width||l.$el.css({width:""}));var e=0,t=l.$el[0].offsetHeight;c=l.items[0].offsetHeight,u=c*l.items.length,p=t/2-u+c/2,d=t/2-c/2,l.width&&(e=l.width,parseInt(e,10)===e&&(e+="px"),l.$el.css({width:e})),i.params.rotateEffect&&(l.width||(l.items.each((function(t){var i=n(t).children("span");e=Math.max(e,i[0].offsetWidth)})),l.$el.css({width:e+2+"px"})),l.$el.addClass("picker-column-absolute"))},l.setValue=function(e,t,n){void 0===t&&(t="");var a=l.$itemsEl.find('.picker-item[data-picker-value="'+e+'"]').index();if(void 0!==a&&-1!==a){var r=-a*c+d;l.$itemsEl.transition(t),l.$itemsEl.transform("translate3d(0,"+r+"px,0)"),i.params.updateValuesOnMomentum&&l.activeIndex&&l.activeIndex!==a&&(cancelAnimationFrame(f),l.$itemsEl.transitionEnd((function(){cancelAnimationFrame(f)})),I()),l.updateItems(a,r,t,n)}},l.updateItems=function(e,t,a,r){void 0===t&&(t=v(l.$itemsEl[0],"y")),void 0===e&&(e=-Math.round((t-d)/c)),e<0&&(e=0),e>=l.items.length&&(e=l.items.length-1);var o=l.activeIndex;l.activeIndex=e,l.$itemsEl.find(".picker-item-selected").removeClass("picker-item-selected"),l.items.transition(a);var s=l.items.eq(e).addClass("picker-item-selected").transform("");i.params.rotateEffect&&l.items.each((function(e){var a=n(e),r=(a.index()*c-(d-t))/c,o=Math.ceil(l.height/c/2)+1,s=-18*r;s>180&&(s=180),s<-180&&(s=-180),Math.abs(r)>o?a.addClass("picker-item-far"):a.removeClass("picker-item-far"),a.transform("translate3d(0, "+(-t+d)+"px, "+(i.needsOriginFix?-110:0)+"px) rotateX("+s+"deg)")})),(r||void 0===r)&&(l.value=s.attr("data-picker-value"),l.displayValue=l.displayValues?l.displayValues[e]:l.value,o!==e&&(l.onChange&&l.onChange(i,l.value,l.displayValue),i.updateValue()))};var h,E,$,g,k,y,x,w,b,C,V,M=!0,O=!!r().passiveListener&&{passive:!1,capture:!1};l.attachEvents=function(){l.$el.on(a.touchEvents.start,T,O),a.on("touchmove:active",j),a.on("touchend:passive",P),i.params.mousewheel&&l.$el.on("wheel",z),l.items.on("click",R)},l.detachEvents=function(){l.$el.off(a.touchEvents.start,T,O),a.off("touchmove:active",j),a.off("touchend:passive",P),i.params.mousewheel&&l.$el.off("wheel",z),l.items.off("click",R)},l.init=function(){l.calcSize(),l.$itemsEl.transform("translate3d(0,"+d+"px,0)").transition(0),0===s&&l.$el.addClass("picker-column-first"),s===i.cols.length-1&&l.$el.addClass("picker-column-last"),t&&l.updateItems(0,d,0),l.attachEvents()},l.destroy=function(){l.detachEvents()},l.init()}function I(){f=m((function(){l.updateItems(void 0,void 0,0),I()}))}function T(e){E||h||(e.preventDefault(),h=!0,$="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,g=$,k=(new Date).getTime(),M=!0,y=v(l.$itemsEl[0],"y"),w=y)}function j(e){h&&(e.preventDefault(),M=!1,g="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,E||(cancelAnimationFrame(f),E=!0,y=v(l.$itemsEl[0],"y"),w=y,l.$itemsEl.transition(0)),x=void 0,(w=y+(g-$))<p&&(w=p-Math.pow(p-w,.8),x="min"),w>d&&(w=d+Math.pow(w-d,.8),x="max"),l.$itemsEl.transform("translate3d(0,"+w+"px,0)"),l.updateItems(void 0,w,0,i.params.updateValuesOnTouchmove),C=w-b||w,b=w)}function P(){if(!h||!E)return h=!1,void(E=!1);var e;h=!1,E=!1,l.$itemsEl.transition(""),x&&("min"===x?l.$itemsEl.transform("translate3d(0,"+p+"px,0)"):l.$itemsEl.transform("translate3d(0,"+d+"px,0)")),e=(new Date).getTime()-k>300?w:w+C*i.params.momentumRatio,e=Math.max(Math.min(e,d),p);var t=Math.round(Math.abs((e-d)/c));i.params.freeMode||(e=-t*c+d),l.$itemsEl.transform("translate3d(0,"+parseInt(e,10)+"px,0)"),l.updateItems(t,e,"",!0),i.params.updateValuesOnMomentum&&(I(),l.$itemsEl.transitionEnd((function(){cancelAnimationFrame(f)}))),setTimeout((function(){M=!0}),100)}function z(e){var t=e.deltaX,n=e.deltaY;Math.abs(t)>Math.abs(n)||(clearTimeout(V),e.preventDefault(),cancelAnimationFrame(f),y=v(l.$itemsEl[0],"y"),l.$itemsEl.transition(0),x=void 0,(w=y-n)<p&&(w=p,x="min"),w>d&&(w=d,x="max"),l.$itemsEl.transform("translate3d(0,"+w+"px,0)"),l.updateItems(void 0,w,0,i.params.updateValuesOnMousewheel),V=setTimeout((function(){l.$itemsEl.transition(""),x&&("min"===x?l.$itemsEl.transform("translate3d(0,"+p+"px,0)"):l.$itemsEl.transform("translate3d(0,"+d+"px,0)")),(new Date).getTime();var e=w;e=Math.max(Math.min(e,d),p);var t=Math.round(Math.abs((e-d)/c));i.params.freeMode||(e=-t*c+d),l.$itemsEl.transform("translate3d(0,"+parseInt(e,10)+"px,0)"),l.updateItems(t,e,"",!0)}),200))}function R(){if(M){cancelAnimationFrame(f);var e=n(this).attr("data-picker-value");l.setValue(e)}}}var g=function(e){var t,i;function r(t,i){var r;void 0===i&&(i={});var o,s,l=d(r=e.call(this,i,[t])||this),c=a();if(l.params=f({},t.params.picker,i),l.params.containerEl&&0===(o=n(l.params.containerEl)).length)return l||d(r);l.params.inputEl&&(s=n(l.params.inputEl));var u=l.params.scrollToInput?s:void 0;if(l.params.scrollToEl){var p=n(l.params.scrollToEl);p.length>0&&(u=p)}function m(){l.resizeCols()}function v(){l.open()}function h(e){e.preventDefault()}f(l,{app:t,$containerEl:o,containerEl:o&&o[0],inline:o&&o.length>0,needsOriginFix:c.ios||window.navigator.userAgent.toLowerCase().indexOf("safari")>=0&&window.navigator.userAgent.toLowerCase().indexOf("chrome")<0&&!c.android,cols:[],$inputEl:s,inputEl:s&&s[0],$scrollToEl:u,initialized:!1,opened:!1,url:l.params.url});var E=null;function $(e){E=e.target}function g(e){if(!l.destroyed&&l.params){var t=n(e.target);l.isPopover()||l.opened&&!l.closing&&(t.closest('[class*="backdrop"]').length||(s&&s.length>0?E===e.target&&t[0]!==s[0]&&0===t.closest(".sheet-modal").length&&l.close():0===n(e.target).closest(".sheet-modal").length&&l.close()))}}return f(l,{attachResizeEvent:function(){t.on("resize",m)},detachResizeEvent:function(){t.off("resize",m)},attachInputEvents:function(){l.$inputEl.on("click",v),l.params.inputReadOnly&&(l.$inputEl.on("focus mousedown",h),l.$inputEl[0]&&(l.$inputEl[0].f7ValidateReadonly=!0))},detachInputEvents:function(){l.$inputEl.off("click",v),l.params.inputReadOnly&&(l.$inputEl.off("focus mousedown",h),l.$inputEl[0]&&delete l.$inputEl[0].f7ValidateReadonly)},attachHtmlEvents:function(){t.on("click",g),t.on("touchstart",$)},detachHtmlEvents:function(){t.off("click",g),t.off("touchstart",$)}}),l.init(),l||d(r)}i=e,(t=r).prototype=Object.create(i.prototype),t.prototype.constructor=t,p(t,i);var o,s,l,c=r.prototype;return c.initInput=function(){var e=this;e.$inputEl&&e.params.inputReadOnly&&e.$inputEl.prop("readOnly",!0)},c.resizeCols=function(){var e=this;if(e.opened)for(var t=0;t<e.cols.length;t+=1)e.cols[t].divider||(e.cols[t].calcSize(),e.cols[t].setValue(e.cols[t].value,0,!1))},c.isPopover=function(){var e=this,t=e.app,n=e.modal,i=e.params,r=a();if("sheet"===i.openIn)return!1;if(n&&"popover"!==n.type)return!1;if(!e.inline&&e.inputEl){if("popover"===i.openIn)return!0;if(r.ios)return!!r.ipad;if(t.width>=768)return!0;if(r.desktop&&"aurora"===t.theme)return!0}return!1},c.formatValue=function(){var e=this,t=e.value,n=e.displayValue;return e.params.formatValue?e.params.formatValue.call(e,t,n):t.join(" ")},c.setValue=function(e,t){var n=this,i=0;if(0===n.cols.length)return n.value=e,void n.updateValue(e);for(var a=0;a<n.cols.length;a+=1)n.cols[a]&&!n.cols[a].divider&&(n.cols[a].setValue(e[i],t),i+=1)},c.getValue=function(){return this.value},c.updateValue=function(e){var t,n=this,i=e||[],a=[];if(0===n.cols.length)for(var r=n.params.cols.filter((function(e){return!e.divider})),o=0;o<r.length;o+=1)void 0!==(t=r[o]).displayValues&&void 0!==t.values&&-1!==t.values.indexOf(i[o])?a.push(t.displayValues[t.values.indexOf(i[o])]):a.push(i[o]);else for(var s=0;s<n.cols.length;s+=1)n.cols[s].divider||(i.push(n.cols[s].value),a.push(n.cols[s].displayValue));i.indexOf(void 0)>=0||(n.value=i,n.displayValue=a,n.emit("local::change pickerChange",n,n.value,n.displayValue),n.inputEl&&(n.$inputEl.val(n.formatValue()),n.$inputEl.trigger("change")))},c.initColumn=function(e,t){$.call(this,e,t)},c.destroyColumn=function(e){var t=this,i=n(e).index();t.cols[i]&&t.cols[i].destroy&&t.cols[i].destroy()},c.renderToolbar=function(){var e=this;return e.params.renderToolbar?e.params.renderToolbar.call(e,e):$jsx("div",{class:"toolbar toolbar-top no-shadow"},$jsx("div",{class:"toolbar-inner"},$jsx("div",{class:"left"}),$jsx("div",{class:"right"},$jsx("a",{class:"link sheet-close popover-close"},e.params.toolbarCloseText))))},c.renderColumn=function(e,t){var n,i,a="picker-column "+(e.textAlign?"picker-column-"+e.textAlign:"")+" "+(e.cssClass||"");return n=e.divider?'\n <div class="'+a+' picker-column-divider">'+e.content+"</div>\n ":'\n <div class="'+a+'">\n <div class="picker-items">'+(i=e.values.map((function(t,n){return'\n <div class="picker-item" data-picker-value="'+t+'">\n <span>'+(e.displayValues?e.displayValues[n]:t)+"</span>\n </div>\n "})).join(""))+"</div>\n </div>\n ",t?i.trim():n.trim()},c.renderInline=function(){var e=this,t=e.params,n=t.rotateEffect,i=t.cssClass,a=t.toolbar;return $jsx("div",{class:"picker picker-inline "+(n?"picker-3d":"")+" "+(i||"")},a&&e.renderToolbar(),$jsx("div",{class:"picker-columns"},e.cols.map((function(t){return e.renderColumn(t)})),$jsx("div",{class:"picker-center-highlight"})))},c.renderSheet=function(){var e=this,t=e.params,n=t.rotateEffect,i=t.cssClass,a=t.toolbar;return $jsx("div",{class:"sheet-modal picker picker-sheet "+(n?"picker-3d":"")+" "+(i||"")},a&&e.renderToolbar(),$jsx("div",{class:"sheet-modal-inner picker-columns"},e.cols.map((function(t){return e.renderColumn(t)})),$jsx("div",{class:"picker-center-highlight"})))},c.renderPopover=function(){var e=this,t=e.params,n=t.rotateEffect,i=t.cssClass,a=t.toolbar;return $jsx("div",{class:"popover picker-popover"},$jsx("div",{class:"popover-inner"},$jsx("div",{class:"picker "+(n?"picker-3d":"")+" "+(i||"")},a&&e.renderToolbar(),$jsx("div",{class:"picker-columns"},e.cols.map((function(t){return e.renderColumn(t)})),$jsx("div",{class:"picker-center-highlight"})))))},c.render=function(){var e=this;return e.params.render?e.params.render.call(e):e.inline?e.renderInline():e.isPopover()?e.renderPopover():e.renderSheet()},c.onOpen=function(){var e=this,t=e.initialized,n=e.$el,i=e.app,a=e.$inputEl,r=e.inline,o=e.value,s=e.params;e.opened=!0,e.closing=!1,e.opening=!0,e.attachResizeEvent(),n.find(".picker-column").each((function(n){var i=!0;(!t&&s.value||t&&o)&&(i=!1),e.initColumn(n,i)})),t?o&&e.setValue(o,0):o?e.setValue(o,0):s.value&&e.setValue(s.value,0),!r&&a&&a.length&&"md"===i.theme&&a.trigger("focus"),e.initialized=!0,n&&n.trigger("picker:open"),a&&a.trigger("picker:open"),e.emit("local::open pickerOpen",e)},c.onOpened=function(){var e=this;e.opening=!1,e.$el&&e.$el.trigger("picker:opened"),e.$inputEl&&e.$inputEl.trigger("picker:opened"),e.emit("local::opened pickerOpened",e)},c.onClose=function(){var e=this,t=e.app;if(e.opening=!1,e.closing=!0,e.detachResizeEvent(),e.cols.forEach((function(e){e.destroy&&e.destroy()})),e.$inputEl)if("md"===t.theme)e.$inputEl.trigger("blur");else{var n=e.$inputEl.attr("validate"),i=e.$inputEl.attr("required");n&&i&&t.input.validate(e.$inputEl)}e.$el&&e.$el.trigger("picker:close"),e.$inputEl&&e.$inputEl.trigger("picker:close"),e.emit("local::close pickerClose",e)},c.onClosed=function(){var e=this;e.opened=!1,e.closing=!1,e.inline||h((function(){e.modal&&e.modal.el&&e.modal.destroy&&(e.params.routableModals||e.modal.destroy()),delete e.modal})),e.$el&&e.$el.trigger("picker:closed"),e.$inputEl&&e.$inputEl.trigger("picker:closed"),e.emit("local::closed pickerClosed",e)},c.open=function(){var e=this,t=e.app,i=e.opened,a=e.inline,r=e.$inputEl,o=e.$scrollToEl,s=e.params;if(!i){if(0===e.cols.length&&s.cols.length&&s.cols.forEach((function(t){e.cols.push(t)})),a)return e.$el=n(e.render()),e.$el[0].f7Picker=e,e.$containerEl.append(e.$el),e.onOpen(),void e.onOpened();var l,c=e.isPopover(),u=c?"popover":"sheet",p={targetEl:r,scrollToEl:o,content:e.render(),backdrop:void 0!==s.backdrop?s.backdrop:c,on:{open:function(){var t=this;e.modal=t,e.$el=c?t.$el.find(".picker"):t.$el,e.$el[0].f7Picker=e,e.onOpen()},opened:function(){e.onOpened()},close:function(){e.onClose()},closed:function(){e.onClosed()}}};if("sheet"===u&&(p.push=s.sheetPush,p.swipeToClose=s.sheetSwipeToClose),s.routableModals&&e.view)e.view.router.navigate({url:e.url,route:(l={path:e.url},l[u]=p,l)});else e.modal=t[u].create(p),e.modal.open()}},c.close=function(){var e=this,t=e.opened,n=e.inline;if(t)return n?(e.onClose(),void e.onClosed()):void(e.params.routableModals&&e.view?e.view.router.back():e.modal.close())},c.init=function(){var e=this;if(e.initInput(),e.inline)return e.open(),void e.emit("local::init pickerInit",e);!e.initialized&&e.params.value&&e.setValue(e.params.value),e.$inputEl&&e.attachInputEvents(),e.params.closeByOutsideClick&&e.attachHtmlEvents(),e.emit("local::init pickerInit",e)},c.destroy=function(){var e=this;if(!e.destroyed){var t=e.$el;e.emit("local::beforeDestroy pickerBeforeDestroy",e),t&&t.trigger("picker:beforedestroy"),e.close(),e.$inputEl&&e.detachInputEvents(),e.params.closeByOutsideClick&&e.detachHtmlEvents(),t&&t.length&&delete e.$el[0].f7Picker,E(e),e.destroyed=!0}},o=r,(s=[{key:"view",get:function(){var e,t=this.app,n=this.params,i=this.$inputEl;return n.view?e=n.view:i&&(e=i.parents(".view").length&&i.parents(".view")[0].f7View),e||(e=t.views.main),e}}])&&u(o.prototype,s),l&&u(o,l),r}(o),k={name:"picker",static:{Picker:g},create:function(){var e=this;e.picker=s({defaultSelector:".picker",constructor:g,app:e,domProp:"f7Picker"}),e.picker.close=function(e){void 0===e&&(e=".picker");var t=n(e);if(0!==t.length){var i=t[0].f7Picker;!i||i&&!i.opened||i.close()}}},params:{picker:{updateValuesOnMomentum:!1,updateValuesOnTouchmove:!0,updateValuesOnMousewheel:!0,mousewheel:!0,rotateEffect:!1,momentumRatio:7,freeMode:!1,cols:[],containerEl:null,openIn:"auto",sheetPush:!1,sheetSwipeToClose:void 0,backdrop:void 0,formatValue:null,inputEl:null,inputReadOnly:!0,closeByOutsideClick:!0,scrollToInput:!0,scrollToEl:void 0,toolbar:!0,toolbarCloseText:"Done",cssClass:null,routableModals:!1,view:null,url:"select/",renderToolbar:null,render:null}}};if(t){if(e.prototype.modules&&e.prototype.modules[k.name])return;e.use(k),e.instance&&(e.instance.useModuleParams(k,e.instance.params),e.instance.useModule(k))}return k}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))