primevue
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primevue) [ • 3.97 kB
JavaScript
import{UniqueComponentId as e}from"primevue/utils";import{openBlock as t,createBlock as i,Fragment as a,renderList as n,createVNode as d,toDisplayString as s,createCommentVNode as o,resolveDynamicComponent as c,Transition as r,withCtx as l,withDirectives as h,vShow as p}from"vue";var b={name:"Accordion",emits:["tab-close","tab-open","update:activeIndex"],props:{multiple:{type:Boolean,default:!1},activeIndex:{type:[Number,Array],default:null},lazy:{type:Boolean,default:!1}},data(){return{d_activeIndex:this.activeIndex}},watch:{activeIndex(e){this.d_activeIndex=e}},methods:{onTabClick(e,t,i){if(!this.isTabDisabled(t)){const t=this.isTabActive(i),a=t?"tab-close":"tab-open";this.multiple?t?this.d_activeIndex=this.d_activeIndex.filter((e=>e!==i)):this.d_activeIndex?this.d_activeIndex.push(i):this.d_activeIndex=[i]:this.d_activeIndex=this.d_activeIndex===i?null:i,this.$emit("update:activeIndex",this.d_activeIndex),this.$emit(a,{originalEvent:e,index:i})}},onTabKeydown(e,t,i){13===e.which&&this.onTabClick(e,i)},isTabActive(e){return this.multiple?this.d_activeIndex&&this.d_activeIndex.includes(e):e===this.d_activeIndex},getKey:(e,t)=>e.props&&e.props.header?e.props.header:t,isTabDisabled:e=>e.props&&e.props.disabled,getTabClass(e){return["p-accordion-tab",{"p-accordion-tab-active":this.isTabActive(e)}]},getTabHeaderClass(e,t){return["p-accordion-header",{"p-highlight":this.isTabActive(t),"p-disabled":this.isTabDisabled(e)}]},getTabAriaId(e){return this.ariaId+"_"+e},getHeaderIcon(e){const t=this.isTabActive(e);return["p-accordion-toggle-icon pi",{"pi-chevron-right":!t,"pi-chevron-down":t}]},isAccordionTab:e=>"AccordionTab"===e.type.name},computed:{tabs(){const e=[];return this.$slots.default().forEach((t=>{this.isAccordionTab(t)?e.push(t):t.children&&t.children instanceof Array&&t.children.forEach((t=>{this.isAccordionTab(t)&&e.push(t)}))})),e},ariaId:()=>e()}};const u={class:"p-accordion p-component"},v={key:0,class:"p-accordion-header-text"},x={class:"p-accordion-content"};!function(e,t){void 0===t&&(t={});var i=t.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===i&&a.firstChild?a.insertBefore(n,a.firstChild):a.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}("\n.p-accordion-header-link {\n cursor: pointer;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -webkit-box-align: center;\n -ms-flex-align: center;\n align-items: center;\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n position: relative;\n text-decoration: none;\n}\n.p-accordion-header-link:focus {\n z-index: 1;\n}\n.p-accordion-header-text {\n line-height: 1;\n}\n"),b.render=function(e,b,T,m,g,y){return t(),i("div",u,[(t(!0),i(a,null,n(y.tabs,((e,a)=>(t(),i("div",{key:y.getKey(e,a),class:y.getTabClass(a)},[d("div",{class:y.getTabHeaderClass(e,a)},[d("a",{role:"tab",class:"p-accordion-header-link",onClick:t=>y.onTabClick(t,e,a),onKeydown:t=>y.onTabKeydown(t,e,a),tabindex:y.isTabDisabled(e)?null:"0","aria-expanded":y.isTabActive(a),id:y.getTabAriaId(a)+"_header","aria-controls":y.getTabAriaId(a)+"_content"},[d("span",{class:y.getHeaderIcon(a)},null,2),e.props&&e.props.header?(t(),i("span",v,s(e.props.header),1)):o("",!0),e.children&&e.children.header?(t(),i(c(e.children.header),{key:1})):o("",!0)],40,["onClick","onKeydown","tabindex","aria-expanded","id","aria-controls"])],2),d(r,{name:"p-toggleable-content"},{default:l((()=>[!T.lazy||y.isTabActive(a)?h((t(),i("div",{key:0,class:"p-toggleable-content",role:"region",id:y.getTabAriaId(a)+"_content","aria-labelledby":y.getTabAriaId(a)+"_header"},[d("div",x,[(t(),i(c(e)))])],8,["id","aria-labelledby"])),[[p,!!T.lazy||y.isTabActive(a)]]):o("",!0)])),_:2},1024)],2)))),128))])};export default b;