forked from Simnation/Main
1 line
12 KiB
JavaScript
1 line
12 KiB
JavaScript
import{C as Z,k as w,q as d,f as he,e as $e,B as De,L as Qe,Q as Ee,x as h,bz as ge,ap as de,as as Fe,bf as We,S as O,v as je,h as te,be as He,aD as Ke,b as N,aj as ee,I as fe,n as be,d as F,aG as Ve,aH as ze,A as me,t as Oe,F as Ne,H as Ue,M as Ge}from"./app-014d9ed9.js";import{Q as Xe}from"./QResizeObserver.2503502b.js";import{r as pe}from"./rtl.b51694b1.js";import{a as Je,b as Ye,c as Ze,d as et}from"./use-panel.c35d3e1e.js";let tt=0;const at=["click","keydown"],nt={icon:String,label:[Number,String],alert:[Boolean,String],alertIcon:String,name:{type:[Number,String],default:()=>`t_${tt++}`},noCaps:Boolean,tabindex:[String,Number],disable:Boolean,contentClass:String,ripple:{type:[Boolean,Object],default:!0}};function ot(e,C,g,c){const o=De(ge,Z);if(o===Z)return console.error("QTab/QRouteTab component needs to be child of QTabs"),Z;const{proxy:D}=te(),L=w(null),B=w(null),W=w(null),U=d(()=>e.disable===!0||e.ripple===!1?!1:Object.assign({keyCodes:[13,32],early:!0},e.ripple===!0?{}:e.ripple)),x=d(()=>o.currentModel.value===e.name),G=d(()=>"q-tab relative-position self-stretch flex flex-center text-center"+(x.value===!0?" q-tab--active"+(o.tabProps.value.activeClass?" "+o.tabProps.value.activeClass:"")+(o.tabProps.value.activeColor?` text-${o.tabProps.value.activeColor}`:"")+(o.tabProps.value.activeBgColor?` bg-${o.tabProps.value.activeBgColor}`:""):" q-tab--inactive")+(e.icon&&e.label&&o.tabProps.value.inlineLabel===!1?" q-tab--full":"")+(e.noCaps===!0||o.tabProps.value.noCaps===!0?" q-tab--no-caps":"")+(e.disable===!0?" disabled":" q-focusable q-hoverable cursor-pointer")+(c!==void 0?c.linkClass.value:"")),I=d(()=>"q-tab__content self-stretch flex-center relative-position q-anchor--skip non-selectable "+(o.tabProps.value.inlineLabel===!0?"row no-wrap q-tab__content--inline":"column")+(e.contentClass!==void 0?` ${e.contentClass}`:"")),m=d(()=>e.disable===!0||o.hasFocus.value===!0||x.value===!1&&o.hasActiveTab.value===!0?-1:e.tabindex||0);function y(r,v){if(v!==!0&&L.value!==null&&L.value.focus(),e.disable===!0){c!==void 0&&c.hasRouterLink.value===!0&&de(r);return}if(c===void 0){o.updateModel({name:e.name}),g("click",r);return}if(c.hasRouterLink.value===!0){const q=(T={})=>{let R;const H=T.to===void 0||He(T.to,e.to)===!0?o.avoidRouteWatcher=Ke():null;return c.navigateToRouterLink(r,{...T,returnRouterError:!0}).catch(b=>{R=b}).then(b=>{if(H===o.avoidRouteWatcher&&(o.avoidRouteWatcher=!1,R===void 0&&(b===void 0||b.message.startsWith("Avoided redundant navigation")===!0)&&o.updateModel({name:e.name})),T.returnRouterError===!0)return R!==void 0?Promise.reject(R):b})};g("click",r,q),r.defaultPrevented!==!0&&q();return}g("click",r)}function _(r){Fe(r,[13,32])?y(r,!0):We(r)!==!0&&r.keyCode>=35&&r.keyCode<=40&&r.altKey!==!0&&r.metaKey!==!0&&o.onKbdNavigate(r.keyCode,D.$el)===!0&&de(r),g("keydown",r)}function Q(){const r=o.tabProps.value.narrowIndicator,v=[],q=h("div",{ref:W,class:["q-tab__indicator",o.tabProps.value.indicatorClass]});e.icon!==void 0&&v.push(h(O,{class:"q-tab__icon",name:e.icon})),e.label!==void 0&&v.push(h("div",{class:"q-tab__label"},e.label)),e.alert!==!1&&v.push(e.alertIcon!==void 0?h(O,{class:"q-tab__alert-icon",color:e.alert!==!0?e.alert:void 0,name:e.alertIcon}):h("div",{class:"q-tab__alert"+(e.alert!==!0?` text-${e.alert}`:"")})),r===!0&&v.push(q);const T=[h("div",{class:"q-focus-helper",tabindex:-1,ref:L}),h("div",{class:I.value},je(C.default,v))];return r===!1&&T.push(q),T}const M={name:d(()=>e.name),rootRef:B,tabIndicatorRef:W,routeData:c};he(()=>{o.unregisterTab(M)}),$e(()=>{o.registerTab(M)});function j(r,v){const q={ref:B,class:G.value,tabindex:m.value,role:"tab","aria-selected":x.value===!0?"true":"false","aria-disabled":e.disable===!0?"true":void 0,onClick:y,onKeydown:_,...v};return Qe(h(r,q,Q()),[[Ee,U.value]])}return{renderTab:j,$tabs:o}}const vt=N({name:"QTab",props:nt,emits:at,setup(e,{slots:C,emit:g}){const{renderTab:c}=ot(e,C,g);return()=>c("div")}});function lt(e,C,g){const c=g===!0?["left","right"]:["top","bottom"];return`absolute-${C===!0?c[0]:c[1]}${e?` text-${e}`:""}`}const rt=["left","center","right","justify"],dt=N({name:"QTabs",props:{modelValue:[Number,String],align:{type:String,default:"center",validator:e=>rt.includes(e)},breakpoint:{type:[String,Number],default:600},vertical:Boolean,shrink:Boolean,stretch:Boolean,activeClass:String,activeColor:String,activeBgColor:String,indicatorColor:String,leftIcon:String,rightIcon:String,outsideArrows:Boolean,mobileArrows:Boolean,switchIndicator:Boolean,narrowIndicator:Boolean,inlineLabel:Boolean,noCaps:Boolean,dense:Boolean,contentClass:String,"onUpdate:modelValue":[Function,Array]},setup(e,{slots:C,emit:g}){const{proxy:c}=te(),{$q:o}=c,{registerTick:D}=ee(),{registerTick:L}=ee(),{registerTick:B}=ee(),{registerTimeout:W,removeTimeout:U}=fe(),{registerTimeout:x,removeTimeout:G}=fe(),I=w(null),m=w(null),y=w(e.modelValue),_=w(!1),Q=w(!0),M=w(!1),j=w(!1),r=d(()=>o.platform.is.desktop===!0||e.mobileArrows===!0),v=[],q=w(0),T=w(!1);let R,H,b,A=r.value===!0?ne:be;const Te=d(()=>({activeClass:e.activeClass,activeColor:e.activeColor,activeBgColor:e.activeBgColor,indicatorClass:lt(e.indicatorColor,e.switchIndicator,e.vertical),narrowIndicator:e.narrowIndicator,inlineLabel:e.inlineLabel,noCaps:e.noCaps})),we=d(()=>{const t=q.value,a=y.value;for(let n=0;n<t;n++)if(v[n].name.value===a)return!0;return!1}),Ce=d(()=>`q-tabs__content--align-${_.value===!0?"left":j.value===!0?"justify":e.align}`),qe=d(()=>`q-tabs row no-wrap items-center q-tabs--${_.value===!0?"":"not-"}scrollable q-tabs--${e.vertical===!0?"vertical":"horizontal"} q-tabs__arrows--${r.value===!0&&e.outsideArrows===!0?"outside":"inside"}`+(e.dense===!0?" q-tabs--dense":"")+(e.shrink===!0?" col-shrink":"")+(e.stretch===!0?" self-stretch":"")),ye=d(()=>"q-tabs__content row no-wrap items-center self-stretch hide-scrollbar relative-position "+Ce.value+(e.contentClass!==void 0?` ${e.contentClass}`:"")+(o.platform.is.mobile===!0?" scroll":"")),K=d(()=>e.vertical===!0?{container:"height",content:"offsetHeight",scroll:"scrollHeight"}:{container:"width",content:"offsetWidth",scroll:"scrollWidth"}),V=d(()=>e.vertical!==!0&&o.lang.rtl===!0),X=d(()=>pe===!1&&V.value===!0);F(V,A),F(()=>e.modelValue,t=>{p({name:t,setCurrent:!0,skipEmit:!0})}),F(()=>e.outsideArrows,()=>{E()}),F(r,t=>{A=t===!0?ne:be,E()});function p({name:t,setCurrent:a,skipEmit:n,fromRoute:s}){y.value!==t&&(n!==!0&&e["onUpdate:modelValue"]!==void 0&&g("update:modelValue",t),(a===!0||e["onUpdate:modelValue"]===void 0)&&(Pe(y.value,t),y.value=t))}function E(){D(()=>{ae({width:I.value.offsetWidth,height:I.value.offsetHeight})})}function ae(t){if(K.value===void 0||m.value===null)return;const a=t[K.value.container],n=Math.min(m.value[K.value.scroll],Array.prototype.reduce.call(m.value.children,(u,i)=>u+(i[K.value.content]||0),0)),s=a>0&&n>a;_.value=s,s===!0&&L(A),j.value=a<parseInt(e.breakpoint,10)}function Pe(t,a){const n=t!=null&&t!==""?v.find(u=>u.name.value===t):null,s=a!=null&&a!==""?v.find(u=>u.name.value===a):null;if(n&&s){const u=n.tabIndicatorRef.value,i=s.tabIndicatorRef.value;clearTimeout(R),u.style.transition="none",u.style.transform="none",i.style.transition="none",i.style.transform="none";const l=u.getBoundingClientRect(),f=i.getBoundingClientRect();i.style.transform=e.vertical===!0?`translate3d(0,${l.top-f.top}px,0) scale3d(1,${f.height?l.height/f.height:1},1)`:`translate3d(${l.left-f.left}px,0,0) scale3d(${f.width?l.width/f.width:1},1,1)`,B(()=>{R=setTimeout(()=>{i.style.transition="transform .25s cubic-bezier(.4, 0, .2, 1)",i.style.transform="none"},70)})}s&&_.value===!0&&$(s.rootRef.value)}function $(t){const{left:a,width:n,top:s,height:u}=m.value.getBoundingClientRect(),i=t.getBoundingClientRect();let l=e.vertical===!0?i.top-s:i.left-a;if(l<0){m.value[e.vertical===!0?"scrollTop":"scrollLeft"]+=Math.floor(l),A();return}l+=e.vertical===!0?i.height-u:i.width-n,l>0&&(m.value[e.vertical===!0?"scrollTop":"scrollLeft"]+=Math.ceil(l),A())}function ne(){const t=m.value;if(t!==null){const a=t.getBoundingClientRect(),n=e.vertical===!0?t.scrollTop:Math.abs(t.scrollLeft);V.value===!0?(Q.value=Math.ceil(n+a.width)<t.scrollWidth-1,M.value=n>0):(Q.value=n>0,M.value=e.vertical===!0?Math.ceil(n+a.height)<t.scrollHeight:Math.ceil(n+a.width)<t.scrollWidth)}}function oe(t){P(),H=setInterval(()=>{Re(t)===!0&&P()},5)}function le(){oe(X.value===!0?Number.MAX_SAFE_INTEGER:0)}function re(){oe(X.value===!0?0:Number.MAX_SAFE_INTEGER)}function P(){clearInterval(H)}function ke(t,a){const n=Array.prototype.filter.call(m.value.children,f=>f===a||f.matches&&f.matches(".q-tab.q-focusable")===!0),s=n.length;if(s===0)return;if(t===36)return $(n[0]),n[0].focus(),!0;if(t===35)return $(n[s-1]),n[s-1].focus(),!0;const u=t===(e.vertical===!0?38:37),i=t===(e.vertical===!0?40:39),l=u===!0?-1:i===!0?1:void 0;if(l!==void 0){const f=V.value===!0?-1:1,k=n.indexOf(a)+l*f;return k>=0&&k<s&&($(n[k]),n[k].focus({preventScroll:!0})),!0}}const _e=d(()=>X.value===!0?{get:t=>Math.abs(t.scrollLeft),set:(t,a)=>{t.scrollLeft=-a}}:e.vertical===!0?{get:t=>t.scrollTop,set:(t,a)=>{t.scrollTop=a}}:{get:t=>t.scrollLeft,set:(t,a)=>{t.scrollLeft=a}});function Re(t){const a=m.value,{get:n,set:s}=_e.value;let u=!1,i=n(a);const l=t<i?-1:1;return i+=l*5,i<0?(u=!0,i=0):(l===-1&&i<=t||l===1&&i>=t)&&(u=!0,i=t),s(a,i),A(),u}function ie(t,a){for(const n in t)if(t[n]!==a[n])return!1;return!0}function Se(){let t=null,a={matchedLen:0,queryDiff:9999,hrefLen:0};const n=v.filter(l=>l.routeData!==void 0&&l.routeData.hasRouterLink.value===!0),{hash:s,query:u}=c.$route,i=Object.keys(u).length;for(const l of n){const f=l.routeData.exact.value===!0;if(l.routeData[f===!0?"linkIsExactActive":"linkIsActive"].value!==!0)continue;const{hash:k,query:J,matched:xe,href:Me}=l.routeData.resolvedLink.value,Y=Object.keys(J).length;if(f===!0){if(k!==s||Y!==i||ie(u,J)===!1)continue;t=l.name.value;break}if(k!==""&&k!==s||Y!==0&&ie(J,u)===!1)continue;const S={matchedLen:xe.length,queryDiff:i-Y,hrefLen:Me.length-k.length};if(S.matchedLen>a.matchedLen){t=l.name.value,a=S;continue}else if(S.matchedLen!==a.matchedLen)continue;if(S.queryDiff<a.queryDiff)t=l.name.value,a=S;else if(S.queryDiff!==a.queryDiff)continue;S.hrefLen>a.hrefLen&&(t=l.name.value,a=S)}t===null&&v.some(l=>l.routeData===void 0&&l.name.value===y.value)===!0||p({name:t,setCurrent:!0})}function Le(t){if(U(),T.value!==!0&&I.value!==null&&t.target&&typeof t.target.closest=="function"){const a=t.target.closest(".q-tab");a&&I.value.contains(a)===!0&&(T.value=!0,_.value===!0&&$(a))}}function Ie(){W(()=>{T.value=!1},30)}function z(){ue.avoidRouteWatcher===!1?x(Se):G()}function se(){if(b===void 0){const t=F(()=>c.$route.fullPath,z);b=()=>{t(),b=void 0}}}function Ae(t){v.push(t),q.value++,E(),t.routeData===void 0||c.$route===void 0?x(()=>{if(_.value===!0){const a=y.value,n=a!=null&&a!==""?v.find(s=>s.name.value===a):null;n&&$(n.rootRef.value)}}):(se(),t.routeData.hasRouterLink.value===!0&&z())}function Be(t){v.splice(v.indexOf(t),1),q.value--,E(),b!==void 0&&t.routeData!==void 0&&(v.every(a=>a.routeData===void 0)===!0&&b(),z())}const ue={currentModel:y,tabProps:Te,hasFocus:T,hasActiveTab:we,registerTab:Ae,unregisterTab:Be,verifyRouteModel:z,updateModel:p,onKbdNavigate:ke,avoidRouteWatcher:!1};Oe(ge,ue);function ce(){clearTimeout(R),P(),b!==void 0&&b()}let ve;return he(ce),Ve(()=>{ve=b!==void 0,ce()}),ze(()=>{ve===!0&&se(),E()}),()=>{const t=[h(Xe,{onResize:ae}),h("div",{ref:m,class:ye.value,onScroll:A},me(C.default))];return r.value===!0&&t.push(h(O,{class:"q-tabs__arrow q-tabs__arrow--left absolute q-tab__icon"+(Q.value===!0?"":" q-tabs__arrow--faded"),name:e.leftIcon||o.iconSet.tabs[e.vertical===!0?"up":"left"],onMousedownPassive:le,onTouchstartPassive:le,onMouseupPassive:P,onMouseleavePassive:P,onTouchendPassive:P}),h(O,{class:"q-tabs__arrow q-tabs__arrow--right absolute q-tab__icon"+(M.value===!0?"":" q-tabs__arrow--faded"),name:e.rightIcon||o.iconSet.tabs[e.vertical===!0?"down":"right"],onMousedownPassive:re,onTouchstartPassive:re,onMouseupPassive:P,onMouseleavePassive:P,onTouchendPassive:P})),h("div",{ref:I,class:qe.value,role:"tablist",onFocusin:Le,onFocusout:Ie},t)}}}),ft=N({name:"QTabPanel",props:Je,setup(e,{slots:C}){return()=>h("div",{class:"q-tab-panel",role:"tabpanel"},me(C.default))}}),bt=N({name:"QTabPanels",props:{...Ye,...Ne},emits:Ze,setup(e,{slots:C}){const g=te(),c=Ue(e,g.proxy.$q),{updatePanelsList:o,getPanelContent:D,panelDirectives:L}=et(),B=d(()=>"q-tab-panels q-panel-parent"+(c.value===!0?" q-tab-panels--dark q-dark":""));return()=>(o(C),Ge("div",{class:B.value},D(),"pan",e.swipeable,()=>L.value))}});export{bt as Q,dt as a,vt as b,ft as c};
|