framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
2 lines (1 loc) • 4.39 kB
JavaScript
(function framework7ComponentLoader(t,e){void 0===e&&(e=!0);var s=t.$,o=t.utils,a=(t.getDevice,t.getSupport),l=(t.Class,t.Modal,t.ConstructorMethods,t.ModalMethods,t.$jsx,o.bindMethods);const r={init(){const t=this;let e,o,l,r,n,i,d,p,b,c,u,g,v,f,h,m,x,w,C,M,T;function I(a,r){o=!1,e=!0,T=!1,l="touchstart"===a.type?a.targetTouches[0].pageY:a.pageY,n=s(a.target).closest("li").eq(0),v=n.index(),d=n.parents(".sortable");const p=n.parents(".list-group");p.length&&p.parents(d).length&&(d=p),i=d.children("ul").children("li:not(.disallow-sorting):not(.no-sorting)"),t.panel&&(t.panel.allowOpen=!1),t.swipeout&&(t.swipeout.allow=!1),r&&(n.addClass("sorting"),d.addClass("sortable-sorting"),T=!0)}const L=!!a().passiveListener&&{passive:!1,capture:!1};s(document).on(t.touchEvents.start,".list.sortable .sortable-handler",I,L),t.on("touchmove:active",(function(a){if(!e||!n)return;const v="touchmove"===a.type?a.targetTouches[0].pageY:a.pageY;if(!o){f=n.parents(".page"),h=n.parents(".page-content");const t=parseInt(h.css("padding-top"),10),e=parseInt(h.css("padding-bottom"),10);M=h[0].scrollTop,x=f.offset().top+t,m=f.height()-t-e,n.addClass("sorting"),d.addClass("sortable-sorting"),w=n[0].offsetTop,b=n[0].offsetTop,c=n.parent().height()-w-n.height(),p=n[0].offsetHeight,C=n.offset().top}o=!0,a.preventDefault(),a.f7PreventSwipePanel=!0,r=v-l;const T=h[0].scrollTop-M,I=Math.min(Math.max(r+T,-b),c);n.transform(`translate3d(0,${I}px,0)`);const L=44;let E,$=!0;r+T+L<-b&&($=!1),r+T-L>c&&($=!1),g=void 0,u=void 0,$&&(C+r+p+L>x+m&&(E=C+r+p+L-(x+m)),C+r<x+L&&(E=C+r-x-L),E&&(h[0].scrollTop+=E)),i.each((e=>{const o=s(e);if(o[0]===n[0])return;const a=o[0].offsetTop,l=o.height(),r=w+I;let i;const b=o[0].f7Translate;r>=a-l/2&&n.index()<o.index()?(i=-p,o.transform(`translate3d(0, ${i}px,0)`),u=o,g=void 0):r<=a+l/2&&n.index()>o.index()?(i=p,o[0].f7Translate=i,o.transform(`translate3d(0, ${i}px,0)`),u=void 0,g||(g=o)):(i=void 0,o.transform("translate3d(0, 0%,0)")),b!==i&&(o.trigger("sortable:move"),t.emit("sortableMove",o[0],d[0])),o[0].f7Translate=i}))})),t.on("touchend:passive",(function(){if(!e||!o)return e&&!o&&(t.panel&&(t.panel.allowOpen=!0),t.swipeout&&(t.swipeout.allow=!0),T&&(n.removeClass("sorting"),d.removeClass("sortable-sorting"))),e=!1,void(o=!1);let s;t.panel&&(t.panel.allowOpen=!0),t.swipeout&&(t.swipeout.allow=!0),i.transform(""),n.removeClass("sorting"),d.removeClass("sortable-sorting"),u?s=u.index():g&&(s=g.index());let a=d.dataset().sortableMoveElements;if(void 0===a&&(a=t.params.sortable.moveElements),a&&(u&&n.insertAfter(u),g&&n.insertBefore(g)),(u||g)&&d.hasClass("virtual-list")){v=n[0].f7VirtualListIndex,void 0===v&&(v=n.attr("data-virtual-list-index")),g?(s=g[0].f7VirtualListIndex,void 0===s&&(s=g.attr("data-virtual-list-index"))):(s=u[0].f7VirtualListIndex,void 0===s&&(s=u.attr("data-virtual-list-index"))),s=null!==s?parseInt(s,10):void 0;const t=d[0].f7VirtualList;v&&(v=parseInt(v,10)),s&&(s=parseInt(s,10)),t&&t.moveItem(v,s)}void 0===s||Number.isNaN(s)||s===v||(n.trigger("sortable:sort",{from:v,to:s}),t.emit("sortableSort",n[0],{from:v,to:s,el:n[0]},d[0])),g=void 0,u=void 0,e=!1,o=!1})),s(document).on("taphold",".sortable-tap-hold",((t,e)=>{I(e,!0)}))},enable(t){void 0===t&&(t=".list.sortable");const e=s(t);0!==e.length&&(e.addClass("sortable-enabled"),e.trigger("sortable:enable"),this.emit("sortableEnable",e[0]))},disable(t){void 0===t&&(t=".list.sortable");const e=s(t);0!==e.length&&(e.removeClass("sortable-enabled"),e.trigger("sortable:disable"),this.emit("sortableDisable",e[0]))},toggle(t){void 0===t&&(t=".list.sortable");const e=this,o=s(t);0!==o.length&&(o.hasClass("sortable-enabled")?e.sortable.disable(o):e.sortable.enable(o))}};var n={name:"sortable",params:{sortable:{moveElements:!0}},create(){l(this,{sortable:r})},on:{init(){this.params.sortable&&this.sortable.init()}},clicks:{".sortable-enable":function(t,e){void 0===e&&(e={});this.sortable.enable(e.sortable)},".sortable-disable":function(t,e){void 0===e&&(e={});this.sortable.disable(e.sortable)},".sortable-toggle":function(t,e){void 0===e&&(e={});this.sortable.toggle(e.sortable)}}};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))