primevue
Version:
[](https://opensource.org/licenses/MIT) [](https://badge.fury.io/js/primevue) [ • 3.63 kB
JavaScript
import e from"primevue/basecomponent";import t from"primevue/icons/minus";import o from"primevue/icons/plus";import l from"primevue/ripple";import{UniqueComponentId as n}from"primevue/utils";import{resolveDirective as a,openBlock as i,createElementBlock as s,mergeProps as r,createElementVNode as p,renderSlot as d,toDisplayString as c,createCommentVNode as g,withDirectives as u,createBlock as m,resolveDynamicComponent as h,normalizeProps as f,guardReactiveProps as b,createVNode as v,Transition as y,withCtx as _,vShow as I}from"vue";var x={name:"Panel",extends:e,emits:["update:collapsed","toggle"],props:{header:String,toggleable:Boolean,collapsed:Boolean,toggleButtonProps:{type:null,default:null}},data(){return{d_collapsed:this.collapsed}},watch:{collapsed(e){this.d_collapsed=e}},methods:{toggle(e){this.d_collapsed=!this.d_collapsed,this.$emit("update:collapsed",this.d_collapsed),this.$emit("toggle",{originalEvent:e,value:this.d_collapsed})},onKeyDown(e){"Enter"!==e.code&&"Space"!==e.code||(this.toggle(e),e.preventDefault())}},computed:{ariaId:()=>n(),containerClass(){return["p-panel p-component",{"p-panel-toggleable":this.toggleable}]},buttonAriaLabel(){return this.toggleButtonProps&&this.toggleButtonProps["aria-label"]?this.toggleButtonProps["aria-label"]:this.header}},components:{PlusIcon:o,MinusIcon:t},directives:{ripple:l}};const B=["id"],P=["id","aria-label","aria-controls","aria-expanded"],$=["id","aria-labelledby"];!function(e,t){void 0===t&&(t={});var o=t.insertAt;if(e&&"undefined"!=typeof document){var l=document.head||document.getElementsByTagName("head")[0],n=document.createElement("style");n.type="text/css","top"===o&&l.firstChild?l.insertBefore(n,l.firstChild):l.appendChild(n),n.styleSheet?n.styleSheet.cssText=e:n.appendChild(document.createTextNode(e))}}("\n.p-panel-header {\n display: flex;\n justify-content: space-between;\n align-items: center;\n}\n.p-panel-title {\n line-height: 1;\n}\n.p-panel-header-icon {\n display: inline-flex;\n justify-content: center;\n align-items: center;\n cursor: pointer;\n text-decoration: none;\n overflow: hidden;\n position: relative;\n}\n"),x.render=function(e,t,o,l,n,x){const w=a("ripple");return i(),s("div",r({class:x.containerClass},e.ptm("root")),[p("div",r({class:"p-panel-header"},e.ptm("header")),[d(e.$slots,"header",{id:x.ariaId+"_header",class:"p-panel-title"},(()=>[o.header?(i(),s("span",r({key:0,id:x.ariaId+"_header",class:"p-panel-title"},e.ptm("title")),c(o.header),17,B)):g("",!0)])),p("div",r({class:"p-panel-icons"},e.ptm("icons")),[d(e.$slots,"icons"),o.toggleable?u((i(),s("button",r({key:0,id:x.ariaId+"_header",type:"button",role:"button",class:"p-panel-header-icon p-panel-toggler p-link","aria-label":x.buttonAriaLabel,"aria-controls":x.ariaId+"_content","aria-expanded":!n.d_collapsed,onClick:t[0]||(t[0]=(...e)=>x.toggle&&x.toggle(...e)),onKeydown:t[1]||(t[1]=(...e)=>x.onKeyDown&&x.onKeyDown(...e))},{...o.toggleButtonProps,...e.ptm("toggler")}),[d(e.$slots,"togglericon",{collapsed:n.d_collapsed},(()=>[(i(),m(h(n.d_collapsed?"PlusIcon":"MinusIcon"),f(b(e.ptm("togglericon"))),null,16))]))],16,P)),[[w]]):g("",!0)],16)],16),v(y,{name:"p-toggleable-content"},{default:_((()=>[u(p("div",r({id:x.ariaId+"_content",class:"p-toggleable-content",role:"region","aria-labelledby":x.ariaId+"_header"},e.ptm("toggleablecontent")),[p("div",r({class:"p-panel-content"},e.ptm("content")),[d(e.$slots,"default")],16),e.$slots.footer?(i(),s("div",r({key:0,class:"p-panel-footer"},e.ptm("footer")),[d(e.$slots,"footer")],16)):g("",!0)],16,$),[[I,!n.d_collapsed]])])),_:3})],16)};export{x as default};