UNPKG

primevue

Version:

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![npm version](https://badge.fury.io/js/primevue.svg)](https://badge.fury.io/js/primevue) [![Discord Chat](https://img.shields.io/discord/55794023

2 lines (1 loc) 7.8 kB
"use strict";var e=require("primevue/basecomponent"),t=require("primevue/icons/chevrondown"),n=require("primevue/icons/chevronright"),a=require("primevue/ripple"),i=require("primevue/utils"),o=require("vue");function r(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=r(e),c=r(t),s=r(n),l=r(a),p={name:"Accordion",extends:d.default,emits:["update:activeIndex","tab-open","tab-close","tab-click"],props:{multiple:{type:Boolean,default:!1},activeIndex:{type:[Number,Array],default:null},lazy:{type:Boolean,default:!1},expandIcon:{type:String,default:void 0},collapseIcon:{type:String,default:void 0},tabindex:{type:Number,default:0},selectOnFocus:{type:Boolean,default:!1}},data(){return{id:this.$attrs.id,d_activeIndex:this.activeIndex}},watch:{"$attrs.id":function(e){this.id=e||i.UniqueComponentId()},activeIndex(e){this.d_activeIndex=e}},mounted(){this.id=this.id||i.UniqueComponentId()},methods:{isAccordionTab:e=>"AccordionTab"===e.type.name,isTabActive(e){return this.multiple?this.d_activeIndex&&this.d_activeIndex.includes(e):this.d_activeIndex===e},getTabProp:(e,t)=>e.props?e.props[t]:void 0,getKey(e,t){return this.getTabProp(e,"header")||t},getTabHeaderActionId(e){return`${this.id}_${e}_header_action`},getTabContentId(e){return`${this.id}_${e}_content`},getTabPT(e,t){return this.ptmo(this.getTabProp(e,"pt"),t,{props:e.props,parent:{props:this.$props,state:this.$data}})},onTabClick(e,t,n){this.changeActiveIndex(e,t,n),this.$emit("tab-click",{originalEvent:e,index:n})},onTabKeyDown(e,t,n){switch(e.code){case"ArrowDown":this.onTabArrowDownKey(e);break;case"ArrowUp":this.onTabArrowUpKey(e);break;case"Home":this.onTabHomeKey(e);break;case"End":this.onTabEndKey(e);break;case"Enter":case"Space":this.onTabEnterKey(e,t,n)}},onTabArrowDownKey(e){const t=this.findNextHeaderAction(e.target.parentElement.parentElement);t?this.changeFocusedTab(e,t):this.onTabHomeKey(e),e.preventDefault()},onTabArrowUpKey(e){const t=this.findPrevHeaderAction(e.target.parentElement.parentElement);t?this.changeFocusedTab(e,t):this.onTabEndKey(e),e.preventDefault()},onTabHomeKey(e){const t=this.findFirstHeaderAction();this.changeFocusedTab(e,t),e.preventDefault()},onTabEndKey(e){const t=this.findLastHeaderAction();this.changeFocusedTab(e,t),e.preventDefault()},onTabEnterKey(e,t,n){this.changeActiveIndex(e,t,n),e.preventDefault()},findNextHeaderAction(e,t=!1){const n=t?e:e.nextElementSibling,a=i.DomHandler.findSingle(n,".p-accordion-header");return a?i.DomHandler.hasClass(a,"p-disabled")?this.findNextHeaderAction(a.parentElement):i.DomHandler.findSingle(a,".p-accordion-header-action"):null},findPrevHeaderAction(e,t=!1){const n=t?e:e.previousElementSibling,a=i.DomHandler.findSingle(n,".p-accordion-header");return a?i.DomHandler.hasClass(a,"p-disabled")?this.findPrevHeaderAction(a.parentElement):i.DomHandler.findSingle(a,".p-accordion-header-action"):null},findFirstHeaderAction(){return this.findNextHeaderAction(this.$el.firstElementChild,!0)},findLastHeaderAction(){return this.findPrevHeaderAction(this.$el.lastElementChild,!0)},changeActiveIndex(e,t,n){if(!this.getTabProp(t,"disabled")){const t=this.isTabActive(n),a=t?"tab-close":"tab-open";this.multiple?t?this.d_activeIndex=this.d_activeIndex.filter((e=>e!==n)):this.d_activeIndex?this.d_activeIndex.push(n):this.d_activeIndex=[n]:this.d_activeIndex=this.d_activeIndex===n?null:n,this.$emit("update:activeIndex",this.d_activeIndex),this.$emit(a,{originalEvent:e,index:n})}},changeFocusedTab(e,t){if(t&&(i.DomHandler.focus(t),this.selectOnFocus)){const n=parseInt(t.parentElement.parentElement.dataset.index,10),a=this.tabs[n];this.changeActiveIndex(e,a,n)}},getTabClass(e){return["p-accordion-tab",{"p-accordion-tab-active":this.isTabActive(e)}]},getTabHeaderClass(e,t){return["p-accordion-header",this.getTabProp(e,"headerClass"),{"p-highlight":this.isTabActive(t),"p-disabled":this.getTabProp(e,"disabled")}]},getTabContentClass(e){return["p-toggleable-content",this.getTabProp(e,"contentClass")]}},computed:{tabs(){return this.$slots.default().reduce(((e,t)=>(this.isAccordionTab(t)?e.push(t):t.children&&t.children instanceof Array&&t.children.forEach((t=>{this.isAccordionTab(t)&&e.push(t)})),e)),[])}},components:{ChevronDownIcon:c.default,ChevronRightIcon:s.default},directives:{ripple:l.default}};const h=["data-index"],b=["id","tabindex","aria-disabled","aria-expanded","aria-controls","onClick","onKeydown"],u=["id","aria-labelledby"];!function(e,t){void 0===t&&(t={});var n=t.insertAt;if(e&&"undefined"!=typeof document){var a=document.head||document.getElementsByTagName("head")[0],i=document.createElement("style");i.type="text/css","top"===n&&a.firstChild?a.insertBefore(i,a.firstChild):a.appendChild(i),i.styleSheet?i.styleSheet.cssText=e:i.appendChild(document.createTextNode(e))}}("\n.p-accordion-header-action {\n cursor: pointer;\n display: flex;\n align-items: center;\n user-select: none;\n position: relative;\n text-decoration: none;\n}\n.p-accordion-header-action:focus {\n z-index: 1;\n}\n.p-accordion-header-text {\n line-height: 1;\n}\n"),p.render=function(e,t,n,a,i,r){return o.openBlock(),o.createElementBlock("div",o.mergeProps({class:"p-accordion p-component"},e.ptm("root")),[(o.openBlock(!0),o.createElementBlock(o.Fragment,null,o.renderList(r.tabs,((e,t)=>(o.openBlock(),o.createElementBlock("div",o.mergeProps({key:r.getKey(e,t),class:r.getTabClass(t),"data-index":t},r.getTabPT(e,"root")),[o.createElementVNode("div",o.mergeProps({style:r.getTabProp(e,"headerStyle"),class:r.getTabHeaderClass(e,t)},{...r.getTabProp(e,"headerProps"),...r.getTabPT(e,"header")}),[o.createElementVNode("a",o.mergeProps({id:r.getTabHeaderActionId(t),class:"p-accordion-header-link p-accordion-header-action",tabindex:r.getTabProp(e,"disabled")?-1:n.tabindex,role:"button","aria-disabled":r.getTabProp(e,"disabled"),"aria-expanded":r.isTabActive(t),"aria-controls":r.getTabContentId(t),onClick:n=>r.onTabClick(n,e,t),onKeydown:n=>r.onTabKeyDown(n,e,t)},{...r.getTabProp(e,"headeractionprops"),...r.getTabPT(e,"headeraction")}),[e.children&&e.children.headericon?(o.openBlock(),o.createBlock(o.resolveDynamicComponent(e.children.headericon),{key:0,isTabActive:r.isTabActive(t),index:t},null,8,["isTabActive","index"])):r.isTabActive(t)?(o.openBlock(),o.createBlock(o.resolveDynamicComponent(n.collapseIcon?"span":"ChevronDownIcon"),o.mergeProps({key:1,class:["p-accordion-toggle-icon",n.collapseIcon],"aria-hidden":"true"},r.getTabPT(e,"headericon")),null,16,["class"])):(o.openBlock(),o.createBlock(o.resolveDynamicComponent(n.expandIcon?"span":"ChevronRightIcon"),o.mergeProps({key:2,class:["p-accordion-toggle-icon",n.expandIcon],"aria-hidden":"true"},r.getTabPT(e,"headericon")),null,16,["class"])),e.props&&e.props.header?(o.openBlock(),o.createElementBlock("span",o.mergeProps({key:3,class:"p-accordion-header-text"},r.getTabPT(e,"headertitle")),o.toDisplayString(e.props.header),17)):o.createCommentVNode("",!0),e.children&&e.children.header?(o.openBlock(),o.createBlock(o.resolveDynamicComponent(e.children.header),{key:4})):o.createCommentVNode("",!0)],16,b)],16),o.createVNode(o.Transition,{name:"p-toggleable-content"},{default:o.withCtx((()=>[!n.lazy||r.isTabActive(t)?o.withDirectives((o.openBlock(),o.createElementBlock("div",o.mergeProps({key:0,id:r.getTabContentId(t),style:r.getTabProp(e,"contentStyle"),class:r.getTabContentClass(e),role:"region","aria-labelledby":r.getTabHeaderActionId(t)},{...r.getTabProp(e,"contentProps"),...r.getTabPT(e,"toggleablecontent")}),[o.createElementVNode("div",o.mergeProps({class:"p-accordion-content"},r.getTabPT(e,"content")),[(o.openBlock(),o.createBlock(o.resolveDynamicComponent(e)))],16)],16,u)),[[o.vShow,!!n.lazy||r.isTabActive(t)]]):o.createCommentVNode("",!0)])),_:2},1024)],16,h)))),128))],16)},module.exports=p;