UNPKG

@progress/kendo-vue-layout

Version:
9 lines (8 loc) 2.87 kB
/** * @license *------------------------------------------------------------------------------------------- * Copyright © 2025 Progress Software Corporation. All rights reserved. * Licensed under commercial license. See LICENSE.md in the package root for more information *------------------------------------------------------------------------------------------- */ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("vue"),t=require("@progress/kendo-vue-common"),o=require("@progress/kendo-svg-icons"),m=require("../package-metadata.js"),f=n.defineComponent({name:"KendoExpansionPanel",props:{dir:String,id:String,tabIndex:Number,title:String,subtitle:String,titleRender:[String,Object,Function],subtitleRender:[String,Object,Function],expandIcon:String,expandSvgIcon:Object,collapseIcon:String,collapseSvgIcon:Object,expanded:Boolean,disabled:Boolean},created(){t.validatePackage(m.packageMetadata)},computed:{wrapperClass(){const{expanded:e,disabled:a}=this.$props;return{"k-expander":!0,"k-expanded":e,"k-focus":this.focused&&!a,"k-disabled":a}},expandIconName(){const{expanded:e,expandIcon:a,collapseIcon:s}=this.$props;return e?a?t.getIconName(a):"chevron-up":s?t.getIconName(s):"chevron-down"},expandSVGIcon(){const{expanded:e,expandSvgIcon:a,collapseSvgIcon:s}=this.$props;return e?a||o.chevronUpIcon:s||o.chevronDownIcon}},data(){return{focused:!1}},render(){const e=t.getDefaultSlots(this),{expanded:a=!1,disabled:s,title:d,titleRender:i,subtitle:r,subtitleRender:l,ariaControls:c,tabIndex:p,id:u}=this.$props,h=t.templateRendering.call(this,i,t.getListeners.call(this)),g=t.getTemplate.call(this,{h:n.h,template:h,defaultRendering:n.createVNode("div",{class:"k-expander-title"},[d])}),x=t.templateRendering.call(this,l,t.getListeners.call(this)),b=t.getTemplate.call(this,{h:n.h,template:x,defaultRendering:n.createVNode("div",{class:"k-expander-sub-title"},[r])});return n.createVNode("div",{class:this.wrapperClass,onFocusin:this.handleFocus,onFocusout:this.handleBlur,id:u,onKeydown:this.onKeyDown},[n.createVNode("div",{role:"button",ref:"header","aria-controls":c,"aria-expanded":a,"aria-disabled":s,tabindex:t.getTabIndex(p,s),class:"k-expander-header",onClick:this.onClick},[g,n.createVNode("span",{class:"k-spacer"},null),b,n.createVNode("span",{class:"k-expander-indicator"},[n.createVNode(t.Icon,{name:this.expandIconName,icon:this.expandSVGIcon},null)])]),e])},methods:{onClick(e){this.$props.disabled||this.$emit("action",{event:e,expanded:this.expanded})},onKeyDown(e){this.$props.disabled||(e.keyCode===t.Keys.enter||e.keyCode===t.Keys.space)&&e.target===this.$refs.header&&(e.preventDefault(),this.$emit("action",{event:e,expanded:this.expanded}))},handleFocus(){this.$props.disabled||(this.focused=!0)},handleBlur(){this.$props.disabled||(this.focused=!1)}}});exports.ExpansionPanel=f;