@progress/kendo-vue-grid
Version:
9 lines (8 loc) • 4.55 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2026 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 o=require("vue"),s=require("@progress/kendo-vue-common"),f=require("@progress/kendo-vue-data-tools"),l=require("../messages/main.js"),v=require("@progress/kendo-vue-intl"),k=require("@progress/kendo-svg-icons"),V=e=>{var t,n;return(n=(t=e.cells)==null?void 0:t.group)==null?void 0:n[e.rowType||"data"]},w=o.defineComponent({name:"KendoGridGroupCell",inheritAttrs:!1,props:{id:String,field:String,dataItem:Object,format:String,type:String,colSpan:Number,className:String,columnIndex:Number,columnsCount:Number,rowType:String,level:Number,locked:Boolean,expanded:Boolean,editor:String,dataIndex:Number,isSelected:Boolean,isRtl:Boolean,ariaColumnIndex:Number,group:Object,render:[String,Function,Object],cells:Object},emits:{change:null,cellkeydown:null},inject:{gridContext:{default:null},kendoIntlService:{default:null},kendoLocalizationService:{default:null},getKeyboardNavigationAttributes:{default:s.noop}},computed:{tdClass(){const{className:e,locked:t}=this.$props;return{"k-table-td":!0,"k-grid-content-sticky":t,[e]:e}},tdStyle(){const{locked:e}=this.$props,t=e?{position:"sticky",zIndex:2}:{};return{...this.$attrs.style,...t}},groupTdClass(){const{className:e,locked:t}=this.$props;return{"k-table-td":!0,"k-group-cell":!0,"k-grid-content-sticky":t,[e]:e}}},methods:{triggerStateChange(){var t;const e=this.gridContext;(t=e==null?void 0:e.dispatchGroupExpand)==null||t.call(e,{type:f.GROUP_EXPAND_ACTION.TOGGLE,group:this.$props.group})},triggerKeydown(e,t){this.$emit("cellkeydown",{event:e,dataItem:this.$props.dataItem,dataIndex:this.$props.dataIndex,field:this.$props.field,expanded:this.$props.expanded}),!e.defaultPrevented&&e.keyCode===s.Keys.enter&&(e.preventDefault(),this.$emit("change",{dataItem:this.$props.dataItem,dataIndex:this.$props.dataIndex,event:e,level:this.$props.level,field:void 0,value:!t}),this.triggerStateChange())},clickHandler(e,t,n){e.preventDefault(),this.$emit("change",{dataItem:t,dataIndex:this.$props.dataIndex,event:e,level:this.$props.level,field:void 0,value:!n}),this.triggerStateChange()},triggerContextMenu(e){var t,n;(n=(t=this.gridContext)==null?void 0:t.onContextMenu)==null||n.call(t,e,this.$props.dataItem,this.$props.field)}},render(){let e=null,t,n,c=null;const{columnIndex:a,level:p,columnsCount:u,rowType:x,dataItem:i,field:g,expanded:r,render:S,locked:d}=this.$props,h=this.getKeyboardNavigationAttributes(this.$props.id),C=v.provideLocalizationService(this).toLanguageString(l.groupCaretAriaLabelCollapse,l.messages[l.groupCaretAriaLabelCollapse]),b=v.provideLocalizationService(this).toLanguageString(l.groupCaretAriaLabelExpand,l.messages[l.groupCaretAriaLabelExpand]);if(a===void 0||p===void 0||a<p||u===void 0||x!=="groupHeader"||i[g]===void 0)t={style:this.$attrs.style,key:"g"+a,class:this.groupTdClass},e=o.createVNode("td",t,null);else if(a<=p){t={style:this.tdStyle,key:"g-colspan",class:d?"k-table-td":this.tdClass,colspan:d?0:u-a,role:"gridcell","aria-colindex":this.$props.ariaColumnIndex,"aria-selected":this.$props.isSelected,"aria-expanded":r,"data-grid-col-index":this.$props.columnIndex,tabindex:h.tabIndex,"data-keyboardnavlevel":h[f.KEYBOARD_NAV_DATA_LEVEL],"data-keyboardnavid":h[f.KEYBOARD_NAV_DATA_ID]};const $=this.isRtl?"chevron-left":"chevron-right",N=this.isRtl?k.chevronLeftIcon:k.chevronRightIcon,A=r?"chevron-down":$,L=r?k.chevronDownIcon:N;c=o.createVNode("p",{class:"k-reset"},[o.createVNode("a",{onClick:m=>{this.clickHandler(m,i,r)},href:"#",tabindex:-1,title:r?C:b,"aria-label":r?C:b},[o.createVNode(s.Icon,{name:A,icon:L},null)]),i[g]?i[g].toString():""]);const y=o.createVNode("td",o.mergeProps(t,{onKeydown:m=>{this.triggerKeydown(m,r)}}),[c]);d&&(n={className:"k-table-td",role:"gridcell",colSpan:u-a,style:{borderLeftWidth:0,borderRightWidth:0}});const I=d?o.createVNode("td",n,null):null;e=I?[y,I]:y}return s.getTemplate.call(this,{h:o.h,template:S||V(this.$props),defaultRendering:e,additionalProps:{...this.$props,tdProps:t,td2Props:n},additionalListeners:{keydown:this.triggerKeydown,click:this.clickHandler,contextmenu:this.triggerContextMenu},defaultSlots:c})}});exports.GridGroupCell=w;