primevue
Version:
PrimeVue is an open source UI library for Vue featuring a rich set of 80+ components, a theme designer, various theme alternatives such as Material, Bootstrap, Tailwind, premium templates and professional support. In addition, it integrates with PrimeBloc
2 lines (1 loc) • 9.38 kB
JavaScript
"use strict";var e=require("primevue/icons/chevrondown"),t=require("primevue/icons/chevronright"),n=require("primevue/ripple"),a=require("primevue/utils"),i=require("vue"),o=require("primevue/accordion/style"),r=require("primevue/basecomponent");function c(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var d=c(e),s=c(t),l=c(n),p=c(o),u={name:"Accordion",extends:{name:"BaseAccordion",extends:c(r).default,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}},style:p.default,provide:function(){return{$parentInstance:this}}},emits:["update:activeIndex","tab-open","tab-close","tab-click"],data:function(){return{id:this.$attrs.id,d_activeIndex:this.activeIndex}},watch:{"$attrs.id":function(e){this.id=e||a.UniqueComponentId()},activeIndex:function(e){this.d_activeIndex=e}},mounted:function(){this.id=this.id||a.UniqueComponentId()},methods:{isAccordionTab:function(e){return"AccordionTab"===e.type.name},isTabActive:function(e){return this.multiple?this.d_activeIndex&&this.d_activeIndex.includes(e):this.d_activeIndex===e},getTabProp:function(e,t){return e.props?e.props[t]:void 0},getKey:function(e,t){return this.getTabProp(e,"header")||t},getTabHeaderActionId:function(e){return"".concat(this.id,"_").concat(e,"_header_action")},getTabContentId:function(e){return"".concat(this.id,"_").concat(e,"_content")},getTabPT:function(e,t,n){var a=this.tabs.length,o={props:e.props||{},parent:{instance:this,props:this.$props,state:this.$data},context:{index:n,count:a,first:0===n,last:n===a-1,active:this.isTabActive(n)}};return i.mergeProps(this.ptm("tab.".concat(t),{tab:o}),this.ptm("accordiontab.".concat(t),{accordiontab:o}),this.ptm("accordiontab.".concat(t),o),this.ptmo(this.getTabProp(e,"pt"),t,o))},onTabClick:function(e,t,n){this.changeActiveIndex(e,t,n),this.$emit("tab-click",{originalEvent:e,index:n})},onTabKeyDown:function(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"NumpadEnter":case"Space":this.onTabEnterKey(e,t,n)}},onTabArrowDownKey:function(e){var t=this.findNextHeaderAction(e.target.parentElement.parentElement);t?this.changeFocusedTab(e,t):this.onTabHomeKey(e),e.preventDefault()},onTabArrowUpKey:function(e){var t=this.findPrevHeaderAction(e.target.parentElement.parentElement);t?this.changeFocusedTab(e,t):this.onTabEndKey(e),e.preventDefault()},onTabHomeKey:function(e){var t=this.findFirstHeaderAction();this.changeFocusedTab(e,t),e.preventDefault()},onTabEndKey:function(e){var t=this.findLastHeaderAction();this.changeFocusedTab(e,t),e.preventDefault()},onTabEnterKey:function(e,t,n){this.changeActiveIndex(e,t,n),e.preventDefault()},findNextHeaderAction:function(e){var t=a.DomHandler.findSingle(arguments.length>1&&void 0!==arguments[1]&&arguments[1]?e:e.nextElementSibling,'[data-pc-section="header"]');return t?a.DomHandler.getAttribute(t,"data-p-disabled")?this.findNextHeaderAction(t.parentElement):a.DomHandler.findSingle(t,'[data-pc-section="headeraction"]'):null},findPrevHeaderAction:function(e){var t=a.DomHandler.findSingle(arguments.length>1&&void 0!==arguments[1]&&arguments[1]?e:e.previousElementSibling,'[data-pc-section="header"]');return t?a.DomHandler.getAttribute(t,"data-p-disabled")?this.findPrevHeaderAction(t.parentElement):a.DomHandler.findSingle(t,'[data-pc-section="headeraction"]'):null},findFirstHeaderAction:function(){return this.findNextHeaderAction(this.$el.firstElementChild,!0)},findLastHeaderAction:function(){return this.findPrevHeaderAction(this.$el.lastElementChild,!0)},changeActiveIndex:function(e,t,n){if(!this.getTabProp(t,"disabled")){var a=this.isTabActive(n),i=a?"tab-close":"tab-open";this.multiple?a?this.d_activeIndex=this.d_activeIndex.filter((function(e){return 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(i,{originalEvent:e,index:n})}},changeFocusedTab:function(e,t){if(t&&(a.DomHandler.focus(t),this.selectOnFocus)){var n=parseInt(t.parentElement.parentElement.dataset.pcIndex,10);this.changeActiveIndex(e,this.tabs[n],n)}}},computed:{tabs:function(){var e=this;return this.$slots.default().reduce((function(t,n){return e.isAccordionTab(n)?t.push(n):n.children&&n.children instanceof Array&&n.children.forEach((function(n){e.isAccordionTab(n)&&t.push(n)})),t}),[])}},components:{ChevronDownIcon:d.default,ChevronRightIcon:s.default},directives:{ripple:l.default}};function b(e){return b="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},b(e)}function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach((function(t){m(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function m(e,t,n){var a;return(t="symbol"==b(a=v(t,"string"))?a:String(a))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function v(e,t){if("object"!=b(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var a=n.call(e,t||"default");if("object"!=b(a))return a;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}var g=["data-pc-index","data-p-active"],y=["data-p-highlight","data-p-disabled"],T=["id","tabindex","aria-disabled","aria-expanded","aria-controls","onClick","onKeydown"],x=["id","aria-labelledby"];u.render=function(e,t,n,a,o,r){return i.openBlock(),i.createElementBlock("div",i.mergeProps({class:e.cx("root")},e.ptm("root")),[(i.openBlock(!0),i.createElementBlock(i.Fragment,null,i.renderList(r.tabs,(function(t,n){return i.openBlock(),i.createElementBlock("div",i.mergeProps({key:r.getKey(t,n),class:e.cx("tab.root",{tab:t,index:n})},r.getTabPT(t,"root",n),{"data-pc-name":"accordiontab","data-pc-index":n,"data-p-active":r.isTabActive(n)}),[i.createElementVNode("div",i.mergeProps({style:r.getTabProp(t,"headerStyle"),class:[e.cx("tab.header",{tab:t,index:n}),r.getTabProp(t,"headerClass")]},f(f({},r.getTabProp(t,"headerProps")),r.getTabPT(t,"header",n)),{"data-p-highlight":r.isTabActive(n),"data-p-disabled":r.getTabProp(t,"disabled")}),[i.createElementVNode("a",i.mergeProps({id:r.getTabHeaderActionId(n),class:e.cx("tab.headerAction"),tabindex:r.getTabProp(t,"disabled")?-1:e.tabindex,role:"button","aria-disabled":r.getTabProp(t,"disabled"),"aria-expanded":r.isTabActive(n),"aria-controls":r.getTabContentId(n),onClick:function(e){return r.onTabClick(e,t,n)},onKeydown:function(e){return r.onTabKeyDown(e,t,n)}},f(f({},r.getTabProp(t,"headeractionprops")),r.getTabPT(t,"headeraction",n))),[t.children&&t.children.headericon?(i.openBlock(),i.createBlock(i.resolveDynamicComponent(t.children.headericon),{key:0,isTabActive:r.isTabActive(n),active:r.isTabActive(n),index:n},null,8,["isTabActive","active","index"])):r.isTabActive(n)?(i.openBlock(),i.createBlock(i.resolveDynamicComponent(e.$slots.collapseicon?e.$slots.collapseicon:e.collapseIcon?"span":"ChevronDownIcon"),i.mergeProps({key:1,class:[e.cx("tab.headerIcon"),e.collapseIcon],"aria-hidden":"true"},r.getTabPT(t,"headericon",n)),null,16,["class"])):(i.openBlock(),i.createBlock(i.resolveDynamicComponent(e.$slots.expandicon?e.$slots.expandicon:e.expandIcon?"span":"ChevronRightIcon"),i.mergeProps({key:2,class:[e.cx("tab.headerIcon"),e.expandIcon],"aria-hidden":"true"},r.getTabPT(t,"headericon",n)),null,16,["class"])),t.props&&t.props.header?(i.openBlock(),i.createElementBlock("span",i.mergeProps({key:3,class:e.cx("tab.headerTitle")},r.getTabPT(t,"headertitle",n)),i.toDisplayString(t.props.header),17)):i.createCommentVNode("",!0),t.children&&t.children.header?(i.openBlock(),i.createBlock(i.resolveDynamicComponent(t.children.header),{key:4})):i.createCommentVNode("",!0)],16,T)],16,y),i.createVNode(i.Transition,i.mergeProps({name:"p-toggleable-content"},r.getTabPT(t,"transition",n)),{default:i.withCtx((function(){return[!e.lazy||r.isTabActive(n)?i.withDirectives((i.openBlock(),i.createElementBlock("div",i.mergeProps({key:0,id:r.getTabContentId(n),style:r.getTabProp(t,"contentStyle"),class:[e.cx("tab.toggleableContent"),r.getTabProp(t,"contentClass")],role:"region","aria-labelledby":r.getTabHeaderActionId(n)},f(f({},r.getTabProp(t,"contentProps")),r.getTabPT(t,"toggleablecontent",n))),[i.createElementVNode("div",i.mergeProps({class:e.cx("tab.content")},r.getTabPT(t,"content",n)),[(i.openBlock(),i.createBlock(i.resolveDynamicComponent(t)))],16)],16,x)),[[i.vShow,!!e.lazy||r.isTabActive(n)]]):i.createCommentVNode("",!0)]})),_:2},1040)],16,g)})),128))],16)},module.exports=u;