UNPKG

framework7

Version:

Full featured mobile HTML framework for building iOS & Android apps

1 lines 12.3 kB
(function framework7ComponentLoader(e,a){void 0===a&&(a=!0);document,window;var B=e.$,M=(e.Template7,e.utils),t=(e.device,e.support,e.Class);e.Modal,e.ConstructorMethods,e.ModalMethods;var n=function(c){function e(e,a){var t;void 0===a&&(a={}),c.call(this,a,[e]);var n=this,i=a.el;!i&&a.content&&(i=a.content);var l=B(i);if(0===l.length)return n;if(l[0].f7Panel)return l[0].f7Panel;l[0].f7Panel=n;var s=a.opened,p=a.side,o=a.effect;if(void 0===s&&(s=l.hasClass("panel-active")),void 0===p&&(p=l.hasClass("panel-left")?"left":"right"),void 0===o&&(o=l.hasClass("panel-cover")?"cover":"reveal"),e.panel[p])throw new Error("Framework7: Can't create panel; app already has a "+p+" panel!");M.extend(e.panel,((t={})[p]=n,t));var r=B(".panel-backdrop");return 0===r.length&&(r=B('<div class="panel-backdrop"></div>')).insertBefore(l),M.extend(n,{app:e,side:p,effect:o,$el:l,el:l[0],opened:s,$backdropEl:r,backdropEl:r[0]}),n.useModules(),n.init(),n}return c&&(e.__proto__=c),((e.prototype=Object.create(c&&c.prototype)).constructor=e).prototype.init=function(){var e=this,a=e.app;a.params.panel[e.side+"Breakpoint"]&&e.initBreakpoints(),(a.params.panel.swipe===e.side||"both"===a.params.panel.swipe||a.params.panel.swipe&&a.params.panel.swipe!==e.side&&a.params.panel.swipeCloseOpposite)&&e.initSwipePanel()},e.prototype.getViewEl=function(){var e=this.app;return 0<e.root.children(".views").length?e.root.children(".views")[0]:e.root.children(".view")[0]},e.prototype.setBreakpoint=function(){var e,a,t=this,n=t.app,i=t.side,l=t.$el,s=B(t.getViewEl()),p=n.params.panel[i+"Breakpoint"],o=l.hasClass("panel-visible-by-breakpoint");n.width>=p?o||(B("html").removeClass("with-panel-"+i+"-reveal with-panel-"+i+"-cover with-panel"),l.css("display","").addClass("panel-visible-by-breakpoint").removeClass("panel-active"),t.onOpen(),t.onOpened(),s.css(((e={})["margin-"+i]=l.width()+"px",e)),n.allowPanelOpen=!0,n.emit("local::breakpoint panelBreakpoint"),t.$el.trigger("panel:breakpoint",t)):o&&(l.css("display","").removeClass("panel-visible-by-breakpoint panel-active"),t.onClose(),t.onClosed(),s.css(((a={})["margin-"+i]="",a)),n.emit("local::breakpoint panelBreakpoint"),t.$el.trigger("panel:breakpoint",t))},e.prototype.initBreakpoints=function(){var e=this,a=e.app;return e.resizeHandler=function(){e.setBreakpoint()},a.params.panel[e.side+"Breakpoint"]&&a.on("resize",e.resizeHandler),e.setBreakpoint(),e},e.prototype.initSwipePanel=function(){!function(p){var o=p.app;M.extend(p,{swipeable:!0,swipeInitialized:!0});var a,r,c,d,h,f,v,w,u,g,m,C=o.params.panel,b=p.$el,y=p.$backdropEl,k=p.side,O=p.effect,A={},x=0;function e(e){if(p.swipeable&&o.panel.allowOpen&&(C.swipe||C.swipeOnlyClose)&&!r&&!(0<B(".modal-in:not(.toast):not(.notification), .photo-browser-in").length)&&(a=o.panel["left"===k?"right":"left"]||{},(p.opened||!a.opened)&&(C.swipeCloseOpposite||C.swipeOnlyClose||!a.opened)&&(!e.target||"input"!==e.target.nodeName.toLowerCase()||"range"!==e.target.type)&&!(0<B(e.target).closest(".range-slider, .tabs-swipeable-wrap, .calendar-months, .no-swipe-panel").length)&&(A.x="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,A.y="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,(!C.swipeOnlyClose||p.opened)&&("both"===C.swipe||!C.swipeCloseOpposite||C.swipe===k||p.opened)))){if(C.swipeActiveArea&&!p.opened){if("left"===k&&A.x>C.swipeActiveArea)return;if("right"===k&&A.x<o.width-C.swipeActiveArea)return}if(C.swipeCloseActiveAreaSide&&p.opened){if("left"===k&&A.x<b[0].offsetWidth-C.swipeCloseActiveAreaSide)return;if("right"===k&&A.x>o.width-b[0].offsetWidth+C.swipeCloseActiveAreaSide)return}x=0,m=B(p.getViewEl()),r=!(c=!1),d=void 0,h=M.now(),g=void 0}}function t(e){if(r&&!((x+=1)<2))if(e.f7PreventSwipePanel||o.preventSwipePanelBySwipeBack||o.preventSwipePanel)r=!1;else{var a="touchmove"===e.type?e.targetTouches[0].pageX:e.pageX,t="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY;if(void 0===d&&(d=!!(d||Math.abs(t-A.y)>Math.abs(a-A.x))),d)r=!1;else{if(!g){if(g=a>A.x?"to-right":"to-left","both"===C.swipe&&0<C.swipeActiveArea&&!p.opened){if("left"===k&&A.x>C.swipeActiveArea)return void(r=!1);if("right"===k&&A.x<o.width-C.swipeActiveArea)return void(r=!1)}if(b.hasClass("panel-visible-by-breakpoint"))return void(r=!1);if("left"===k&&"to-left"===g&&!b.hasClass("panel-active")||"right"===k&&"to-right"===g&&!b.hasClass("panel-active"))return void(r=!1)}var n=p.opened?0:-C.swipeThreshold;if("right"===k&&(n=-n),C.swipeNoFollow){var i,l=a-A.x,s=(new Date).getTime()-h;return!p.opened&&("left"===k&&-n<l||"right"===k&&n<-l)&&(i=!0),p.opened&&("left"===k&&l<0||"right"===k&&0<l)&&(i=!0),void(i&&(s<300&&("to-left"===g&&("right"===k&&o.panel.open(k),"left"===k&&b.hasClass("panel-active")&&o.panel.close()),"to-right"===g&&("left"===k&&o.panel.open(k),"right"===k&&b.hasClass("panel-active")&&o.panel.close())),c=r=!1))}c||(p.opened||(b.show(),y.show(),b.trigger("panel:swipeopen",p),p.emit("local::swipeOpen panelSwipeOpen",p)),u=b[0].offsetWidth,b.transition(0)),c=!0,e.preventDefault(),f=a-A.x+n,"right"===k?"cover"===O?((v=f+(p.opened?0:u))<0&&(v=0),u<v&&(v=u)):(0<(v=f-(p.opened?u:0))&&(v=0),v<-u&&(v=-u)):((v=f+(p.opened?u:0))<0&&(v=0),u<v&&(v=u)),"reveal"===O?(m.transform("translate3d("+v+"px,0,0)").transition(0),y.transform("translate3d("+v+"px,0,0)").transition(0)):("left"===k&&(v-=u),b.transform("translate3d("+v+"px,0,0)").transition(0),y.transition(0),w=1-Math.abs(v/u),y.css({opacity:w})),b.trigger("panel:swipe",p,Math.abs(v/u)),p.emit("local::swipe panelSwipe",p,Math.abs(v/u))}}}function n(){if(r&&c){c=r=!1;var e,a=(new Date).getTime()-h,t=0===v||Math.abs(v)===u,n=C.swipeThreshold||0;if("swap"==(e=p.opened?"cover"===O?0===v?"reset":a<300&&0<Math.abs(v)?"swap":300<=a&&Math.abs(v)<u/2?"reset":"swap":v===-u?"reset":a<300&&0<=Math.abs(v)||300<=a&&Math.abs(v)<=u/2?"left"===k&&v===u?"reset":"swap":"reset":Math.abs(f)<n?"reset":"cover"===O?0===v?"swap":a<300&&0<Math.abs(v)?"swap":300<=a&&Math.abs(v)<u/2?"swap":"reset":0===v?"reset":a<300&&0<Math.abs(v)||300<=a&&Math.abs(v)>=u/2?"swap":"reset")&&(p.opened?p.close(!t):p.open(!t)),"reset"===e&&!p.opened)if(t)b.css({display:""});else{var i="reveal"===O?m:b;B("html").addClass("with-panel-transitioning"),i.transitionEnd(function(){b.hasClass("panel-active")||(b.css({display:""}),B("html").removeClass("with-panel-transitioning"))})}"reveal"===O&&M.nextFrame(function(){m.transition(""),m.transform("")}),b.transition("").transform(""),y.css({display:""}).transform("").transition("").css("opacity","")}else c=r=!1}o.on("touchstart:passive",e),o.on("touchmove:active",t),o.on("touchend:passive",n),p.on("panelDestroy",function(){o.off("touchstart:passive",e),o.off("touchmove:active",t),o.off("touchend:passive",n)})}(this)},e.prototype.destroy=function(){var e=this,a=e.app;e.$el&&(e.emit("local::beforeDestroy panelBeforeDestroy",e),e.$el.trigger("panel:beforedestroy",e),e.resizeHandler&&a.off("resize",e.resizeHandler),e.$el.trigger("panel:destroy",e),e.emit("local::destroy panelDestroy"),delete a.panel[e.side],e.el&&(e.el.f7Panel=null,delete e.el.f7Panel),M.deleteProps(e),e=null)},e.prototype.open=function(e){void 0===e&&(e=!0);var t=this,a=t.app;if(!a.panel.allowOpen)return!1;var n=t.side,i=t.effect,l=t.$el,s=t.$backdropEl,p=t.opened,o=l.parent(),r=0<l.parents(document).length;if(!o.is(a.root)){var c=a.root.children(".panel, .views, .view").eq(0),d=a.root.children(".statusbar").eq(0);c.length?l.insertBefore(c):d.length?l.insertAfter(c):a.root.prepend(l),s&&s.length&&!s.parent().is(a.root)&&0===s.nextAll(".panel").length&&s.insertBefore(l),t.once("panelClosed",function(){r?o.append(l):l.remove()})}if(p||l.hasClass("panel-visible-by-breakpoint")||l.hasClass("panel-active"))return!1;a.panel.close("left"===n?"right":"left",e),a.panel.allowOpen=!1,l[e?"removeClass":"addClass"]("not-animated"),l.css({display:"block"}).addClass("panel-active"),s[e?"removeClass":"addClass"]("not-animated"),s.show(),t._clientLeft=l[0].clientLeft,B("html").addClass("with-panel with-panel-"+n+"-"+i),t.onOpen();var h="reveal"===i?l.nextAll(".view, .views").eq(0):l;return e?function a(){h.transitionEnd(function(e){B(e.target).is(h)?(l.hasClass("panel-active")?t.onOpened():t.onClosed(),s.css({display:""})):a()})}():(t.onOpened(),s.css({display:""})),!0},e.prototype.close=function(e){void 0===e&&(e=!0);var a=this,t=a.app,n=a.side,i=a.effect,l=a.$el,s=a.$backdropEl;if(!a.opened||l.hasClass("panel-visible-by-breakpoint")||!l.hasClass("panel-active"))return!1;l[e?"removeClass":"addClass"]("not-animated"),l.removeClass("panel-active"),s[e?"removeClass":"addClass"]("not-animated");var p="reveal"===i?l.nextAll(".view, .views").eq(0):l;return a.onClose(),t.panel.allowOpen=!1,e?(p.transitionEnd(function(){l.hasClass("panel-active")||(l.css({display:""}),B("html").removeClass("with-panel-transitioning"),a.onClosed())}),B("html").removeClass("with-panel with-panel-"+n+"-"+i).addClass("with-panel-transitioning")):(l.css({display:""}),l.removeClass("not-animated"),B("html").removeClass("with-panel with-panel-transitioning with-panel-"+n+"-"+i),a.onClosed()),!0},e.prototype.onOpen=function(){var e=this;e.opened=!0,e.$el.trigger("panel:open",e),e.emit("local::open panelOpen",e)},e.prototype.onOpened=function(){var e=this;e.app.panel.allowOpen=!0,e.$el.trigger("panel:opened",e),e.emit("local::opened panelOpened",e)},e.prototype.onClose=function(){var e=this;e.opened=!1,e.$el.addClass("panel-closing"),e.$el.trigger("panel:close",e),e.emit("local::close panelClose",e)},e.prototype.onClosed=function(){var e=this;e.app.panel.allowOpen=!0,e.$el.removeClass("panel-closing"),e.$el.trigger("panel:closed",e),e.emit("local::closed panelClosed",e)},e}(t),i={name:"panel",params:{panel:{leftBreakpoint:0,rightBreakpoint:0,swipe:void 0,swipeActiveArea:0,swipeCloseActiveAreaSide:0,swipeCloseOpposite:!0,swipeOnlyClose:!1,swipeNoFollow:!1,swipeThreshold:0,closeByBackdropClick:!0}},static:{Panel:n},instance:{panel:{allowOpen:!0}},create:function(){var i=this;M.extend(i.panel,{disableSwipe:function(e){var a;void 0===e&&(e="both");var t=[];"string"==typeof e?"both"===e?(a="both",t=[i.panel.left,i.panel.right]):(a=e,t.push(i.panel[a])):t=[e],t.forEach(function(e){e&&M.extend(e,{swipeable:!1})})},enableSwipe:function(e){void 0===e&&(e="both");var a,t=[];"string"==typeof e?(a=e,"left"===i.params.panel.swipe&&"right"===a||"right"===i.params.panel.swipe&&"left"===a||"both"===a?(a="both",i.params.panel.swipe=a,t=[i.panel.left,i.panel.right]):(i.params.panel.swipe=a,t.push(i.panel[a]))):e&&t.push(e),t.length&&t.forEach(function(e){e&&(e.swipeInitialized?M.extend(e,{swipeable:!0}):e.initSwipePanel())})},create:function(e){return new n(i,e)},open:function(e,a){var t=e;if(!t){if(1<B(".panel").length)return!1;t=B(".panel").hasClass("panel-left")?"left":"right"}if(!t)return!1;if(i.panel[t])return i.panel[t].open(a);var n=B(".panel-"+t);return 0<n.length&&i.panel.create({el:n}).open(a)},close:function(e,a){var t,n;return n?t=B(".panel-"+(n=e)):n=(t=B(".panel.panel-active")).hasClass("panel-left")?"left":"right",!!n&&(i.panel[n]?i.panel[n].close(a):0<t.length&&i.panel.create({el:t}).close(a))},get:function(e){var a=e;if(!a){if(1<B(".panel").length)return;a=B(".panel").hasClass("panel-left")?"left":"right"}if(a){if(i.panel[a])return i.panel[a];var t=B(".panel-"+a);return 0<t.length?i.panel.create({el:t}):void 0}}})},on:{init:function(){var n=this;B(".panel").each(function(e,a){var t=B(a).hasClass("panel-left")?"left":"right";n.panel[t]=n.panel.create({el:a,side:t})})}},clicks:{".panel-open":function(e,a){void 0===a&&(a={});var t="left";("right"===a.panel||1===B(".panel").length&&B(".panel").hasClass("panel-right"))&&(t="right"),this.panel.open(t,a.animate)},".panel-close":function(e,a){void 0===a&&(a={});var t=a.panel;this.panel.close(t,a.animate)},".panel-backdrop":function(){var e=B(".panel-active"),a=e[0]&&e[0].f7Panel;e.trigger("panel:backdrop-click"),a&&a.emit("backdropClick",a),this.emit("panelBackdropClick",a||e[0]),this.params.panel.closeByBackdropClick&&this.panel.close()}}};if(a){if(e.prototype.modules&&e.prototype.modules[i.name])return;e.use(i),e.instance&&(e.instance.useModuleParams(i,e.instance.params),e.instance.useModule(i))}return i}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))