1 line
3.6 KiB
JavaScript
1 line
3.6 KiB
JavaScript
import{aC as B,aD as h,Q as K,a as C,c as u,a1 as L,o as M,bR as N,I as j,ae as A,U as r,a5 as k,b1 as W,b2 as E,a4 as P,aw as F,aZ as O,$ as U,N as Z}from"./index-3a2b6cd5.js";let z=0;const G=["click","keydown"],H={icon:String,label:[Number,String],alert:[Boolean,String],alertIcon:String,name:{type:[Number,String],default:()=>`t_${z++}`},noCaps:Boolean,tabindex:[String,Number],disable:Boolean,contentClass:String,ripple:{type:[Boolean,Object],default:!0}};function J(e,b,s,n){const a=B(N,h);if(a===h)return console.error("QTab/QRouteTab component needs to be child of QTabs"),h;const{proxy:R}=K(),v=C(null),m=C(null),g=C(null),T=u(()=>e.disable===!0||e.ripple===!1?!1:Object.assign({keyCodes:[13,32],early:!0},e.ripple===!0?{}:e.ripple)),f=u(()=>a.currentModel.value===e.name),_=u(()=>"q-tab relative-position self-stretch flex flex-center text-center"+(f.value===!0?" q-tab--active"+(a.tabProps.value.activeClass?" "+a.tabProps.value.activeClass:"")+(a.tabProps.value.activeColor?` text-${a.tabProps.value.activeColor}`:"")+(a.tabProps.value.activeBgColor?` bg-${a.tabProps.value.activeBgColor}`:""):" q-tab--inactive")+(e.icon&&e.label&&a.tabProps.value.inlineLabel===!1?" q-tab--full":"")+(e.noCaps===!0||a.tabProps.value.noCaps===!0?" q-tab--no-caps":"")+(e.disable===!0?" disabled":" q-focusable q-hoverable cursor-pointer")+(n!==void 0?n.linkClass.value:"")),x=u(()=>"q-tab__content self-stretch flex-center relative-position q-anchor--skip non-selectable "+(a.tabProps.value.inlineLabel===!0?"row no-wrap q-tab__content--inline":"column")+(e.contentClass!==void 0?` ${e.contentClass}`:"")),I=u(()=>e.disable===!0||a.hasFocus.value===!0||f.value===!1&&a.hasActiveTab.value===!0?-1:e.tabindex||0);function q(t,l){if(l!==!0&&v.value!==null&&v.value.focus(),e.disable===!0){n!==void 0&&n.hasRouterLink.value===!0&&k(t);return}if(n===void 0){a.updateModel({name:e.name}),s("click",t);return}if(n.hasRouterLink.value===!0){const o=(i={})=>{let d;const $=i.to===void 0||O(i.to,e.to)===!0?a.avoidRouteWatcher=U():null;return n.navigateToRouterLink(t,{...i,returnRouterError:!0}).catch(c=>{d=c}).then(c=>{if($===a.avoidRouteWatcher&&(a.avoidRouteWatcher=!1,d===void 0&&(c===void 0||c.message.startsWith("Avoided redundant navigation")===!0)&&a.updateModel({name:e.name})),i.returnRouterError===!0)return d!==void 0?Promise.reject(d):c})};s("click",t,o),t.defaultPrevented!==!0&&o();return}s("click",t)}function w(t){W(t,[13,32])?q(t,!0):E(t)!==!0&&t.keyCode>=35&&t.keyCode<=40&&t.altKey!==!0&&t.metaKey!==!0&&a.onKbdNavigate(t.keyCode,R.$el)===!0&&k(t),s("keydown",t)}function Q(){const t=a.tabProps.value.narrowIndicator,l=[],o=r("div",{ref:g,class:["q-tab__indicator",a.tabProps.value.indicatorClass]});e.icon!==void 0&&l.push(r(P,{class:"q-tab__icon",name:e.icon})),e.label!==void 0&&l.push(r("div",{class:"q-tab__label"},e.label)),e.alert!==!1&&l.push(e.alertIcon!==void 0?r(P,{class:"q-tab__alert-icon",color:e.alert!==!0?e.alert:void 0,name:e.alertIcon}):r("div",{class:"q-tab__alert"+(e.alert!==!0?` text-${e.alert}`:"")})),t===!0&&l.push(o);const i=[r("div",{class:"q-focus-helper",tabindex:-1,ref:v}),r("div",{class:x.value},F(b.default,l))];return t===!1&&i.push(o),i}const y={name:u(()=>e.name),rootRef:m,tabIndicatorRef:g,routeData:n};L(()=>{a.unregisterTab(y)}),M(()=>{a.registerTab(y)});function S(t,l){const o={ref:m,class:_.value,tabindex:I.value,role:"tab","aria-selected":f.value===!0?"true":"false","aria-disabled":e.disable===!0?"true":void 0,onClick:q,onKeydown:w,...l};return j(r(t,o,Q()),[[A,T.value]])}return{renderTab:S,$tabs:a}}const X=Z({name:"QTab",props:H,emits:G,setup(e,{slots:b,emit:s}){const{renderTab:n}=J(e,b,s);return()=>n("div")}});export{X as Q};
|