UNPKG

@zoff-tech/zt-bottom-drawer

Version:
2 lines 7.22 kB
import{r as t,d as i,h as s,e,H as n}from"./p-f6c816ce.js";import{findClosestIonContent as h,disableContentScrollY as o,resetContentScrollY as r}from"@utils/content";import{isEndSide as a}from"@utils/helpers";import{watchForOptions as d}from"@utils/watch-options";import{g as l}from"./p-0b9b2444.js";const c="ion-item-sliding{display:block;position:relative;width:100%;overflow:hidden;user-select:none}ion-item-sliding .item{user-select:none}.item-sliding-active-slide .item{position:relative;transition:transform 500ms cubic-bezier(0.36, 0.66, 0.04, 1);opacity:1;z-index:2;pointer-events:none;will-change:transform}.item-sliding-active-swipe-end .item-options-end .item-option-expandable{padding-left:100%;order:1;transition-duration:0.6s;transition-property:padding-left}:host-context([dir=rtl]) .item-sliding-active-swipe-end .item-options-end .item-option-expandable{order:-1}[dir=rtl] .item-sliding-active-swipe-end .item-options-end .item-option-expandable{order:-1}@supports selector(:dir(rtl)){.item-sliding-active-swipe-end .item-options-end .item-option-expandable:dir(rtl){order:-1}}.item-sliding-active-swipe-start .item-options-start .item-option-expandable{padding-right:100%;order:-1;transition-duration:0.6s;transition-property:padding-right}:host-context([dir=rtl]) .item-sliding-active-swipe-start .item-options-start .item-option-expandable{order:1}[dir=rtl] .item-sliding-active-swipe-start .item-options-start .item-option-expandable{order:1}@supports selector(:dir(rtl)){.item-sliding-active-swipe-start .item-options-start .item-option-expandable:dir(rtl){order:1}}";const p=30;const u=.55;let f;const m=class{constructor(s){t(this,s);this.ionDrag=i(this,"ionDrag",7);this.item=null;this.openAmount=0;this.initialOpenAmount=0;this.optsWidthRightSide=0;this.optsWidthLeftSide=0;this.sides=0;this.optsDirty=true;this.contentEl=null;this.initialContentScrollY=true;this.state=2;this.disabled=false}disabledChanged(){if(this.gesture){this.gesture.enable(!this.disabled)}}async connectedCallback(){const{el:t}=this;this.item=t.querySelector("ion-item");this.contentEl=h(t);await this.updateOptions();this.mutationObserver=d(t,"ion-item-option",(async()=>{await this.updateOptions()}));this.gesture=(await import("./p-0c0b0519.js")).createGesture({el:t,gestureName:"item-swipe",gesturePriority:100,threshold:5,canStart:t=>this.canStart(t),onStart:()=>this.onStart(),onMove:t=>this.onMove(t),onEnd:t=>this.onEnd(t)});this.disabledChanged()}disconnectedCallback(){if(this.gesture){this.gesture.destroy();this.gesture=undefined}this.item=null;this.leftOptions=this.rightOptions=undefined;if(f===this.el){f=undefined}if(this.mutationObserver){this.mutationObserver.disconnect();this.mutationObserver=undefined}}getOpenAmount(){return Promise.resolve(this.openAmount)}getSlidingRatio(){return Promise.resolve(this.getSlidingRatioSync())}async open(t){var i;const s=this.item=(i=this.item)!==null&&i!==void 0?i:this.el.querySelector("ion-item");if(s===null){return}const e=this.getOptions(t);if(!e){return}if(t===undefined){t=e===this.leftOptions?"start":"end"}t=a(t)?"end":"start";const n=this.openAmount<0;const h=this.openAmount>0;if(n&&e===this.leftOptions){return}if(h&&e===this.rightOptions){return}this.closeOpened();this.state=4;requestAnimationFrame((()=>{this.calculateOptsWidth();const i=t==="end"?this.optsWidthRightSide:-this.optsWidthLeftSide;f=this.el;this.setOpenAmount(i,false);this.state=t==="end"?8:16}))}async close(){this.setOpenAmount(0,true)}async closeOpened(){if(f!==undefined){f.close();f=undefined;return true}return false}getOptions(t){if(t===undefined){return this.leftOptions||this.rightOptions}else if(t==="start"){return this.leftOptions}else{return this.rightOptions}}async updateOptions(){const t=this.el.querySelectorAll("ion-item-options");let i=0;this.leftOptions=this.rightOptions=undefined;for(let s=0;s<t.length;s++){const e=t.item(s);const n=e.componentOnReady!==undefined?await e.componentOnReady():e;const h=a(n.side)?"end":"start";if(h==="start"){this.leftOptions=n;i|=1}else{this.rightOptions=n;i|=2}}this.optsDirty=true;this.sides=i}canStart(t){const i=document.dir==="rtl";const s=i?window.innerWidth-t.startX<15:t.startX<15;if(s){return false}const e=f;if(e&&e!==this.el){this.closeOpened()}return!!(this.rightOptions||this.leftOptions)}onStart(){this.item=this.el.querySelector("ion-item");const{contentEl:t}=this;if(t){this.initialContentScrollY=o(t)}f=this.el;if(this.tmr!==undefined){clearTimeout(this.tmr);this.tmr=undefined}if(this.openAmount===0){this.optsDirty=true;this.state=4}this.initialOpenAmount=this.openAmount;if(this.item){this.item.style.transition="none"}}onMove(t){if(this.optsDirty){this.calculateOptsWidth()}let i=this.initialOpenAmount-t.deltaX;switch(this.sides){case 2:i=Math.max(0,i);break;case 1:i=Math.min(0,i);break;case 3:break;case 0:return;default:console.warn("invalid ItemSideFlags value",this.sides);break}let s;if(i>this.optsWidthRightSide){s=this.optsWidthRightSide;i=s+(i-s)*u}else if(i<-this.optsWidthLeftSide){s=-this.optsWidthLeftSide;i=s+(i-s)*u}this.setOpenAmount(i,false)}onEnd(t){const{contentEl:i,initialContentScrollY:s}=this;if(i){r(i,s)}const e=t.velocityX;let n=this.openAmount>0?this.optsWidthRightSide:-this.optsWidthLeftSide;const h=this.openAmount>0===!(e<0);const o=Math.abs(e)>.3;const a=Math.abs(this.openAmount)<Math.abs(n/2);if(g(h,o,a)){n=0}const d=this.state;this.setOpenAmount(n,true);if((d&32)!==0&&this.rightOptions){this.rightOptions.fireSwipeEvent()}else if((d&64)!==0&&this.leftOptions){this.leftOptions.fireSwipeEvent()}}calculateOptsWidth(){this.optsWidthRightSide=0;if(this.rightOptions){this.rightOptions.style.display="flex";this.optsWidthRightSide=this.rightOptions.offsetWidth;this.rightOptions.style.display=""}this.optsWidthLeftSide=0;if(this.leftOptions){this.leftOptions.style.display="flex";this.optsWidthLeftSide=this.leftOptions.offsetWidth;this.leftOptions.style.display=""}this.optsDirty=false}setOpenAmount(t,i){if(this.tmr!==undefined){clearTimeout(this.tmr);this.tmr=undefined}if(!this.item){return}const s=this.item.style;this.openAmount=t;if(i){s.transition=""}if(t>0){this.state=t>=this.optsWidthRightSide+p?8|32:8}else if(t<0){this.state=t<=-this.optsWidthLeftSide-p?16|64:16}else{if(this.gesture){this.gesture.enable(false)}this.tmr=setTimeout((()=>{this.state=2;this.tmr=undefined;if(this.gesture){this.gesture.enable(!this.disabled)}}),600);f=undefined;s.transform="";return}s.transform=`translate3d(${-t}px,0,0)`;this.ionDrag.emit({amount:t,ratio:this.getSlidingRatioSync()})}getSlidingRatioSync(){if(this.openAmount>0){return this.openAmount/this.optsWidthRightSide}else if(this.openAmount<0){return this.openAmount/this.optsWidthLeftSide}else{return 0}}render(){const t=l(this);return s(n,{class:{[t]:true,"item-sliding-active-slide":this.state!==2,"item-sliding-active-options-end":(this.state&8)!==0,"item-sliding-active-options-start":(this.state&16)!==0,"item-sliding-active-swipe-end":(this.state&32)!==0,"item-sliding-active-swipe-start":(this.state&64)!==0}})}get el(){return e(this)}static get watchers(){return{disabled:["disabledChanged"]}}};const g=(t,i,s)=>!i&&s||t&&i;m.style=c;export{m as ion_item_sliding}; //# sourceMappingURL=p-56b69999.entry.js.map