@progress/kendo-vue-grid 8.1.2-develop.2 → 8.2.0-develop.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/Grid.d.ts +36 -3
  2. package/Grid.js +1 -1
  3. package/Grid.mjs +706 -496
  4. package/GridSearchBox.js +1 -1
  5. package/GridSearchBox.mjs +5 -5
  6. package/GridState.d.ts +6 -0
  7. package/RootGrid.d.ts +6 -10
  8. package/cells/GridCell.d.ts +2 -0
  9. package/cells/GridCell.js +1 -1
  10. package/cells/GridCell.mjs +52 -43
  11. package/cells/GridDetailCell.d.ts +4 -1
  12. package/cells/GridDetailCell.js +1 -1
  13. package/cells/GridDetailCell.mjs +27 -18
  14. package/cells/GridEditCell.d.ts +2 -0
  15. package/cells/GridEditCell.js +1 -1
  16. package/cells/GridEditCell.mjs +21 -14
  17. package/cells/GridGroupCell.d.ts +1 -0
  18. package/cells/GridGroupCell.js +1 -1
  19. package/cells/GridGroupCell.mjs +45 -40
  20. package/cells/GridHierarchyCell.d.ts +1 -0
  21. package/cells/GridHierarchyCell.js +1 -1
  22. package/cells/GridHierarchyCell.mjs +25 -20
  23. package/cells/GridSelectionCell.d.ts +4 -1
  24. package/cells/GridSelectionCell.js +1 -1
  25. package/cells/GridSelectionCell.mjs +31 -21
  26. package/cells/pincell/GridPinCell.d.ts +6 -2
  27. package/cells/pincell/GridPinCell.js +1 -1
  28. package/cells/pincell/GridPinCell.mjs +67 -42
  29. package/cells/pincell/GridPinDropdownButton.js +1 -1
  30. package/cells/pincell/GridPinDropdownButton.mjs +25 -25
  31. package/common.d.ts +3 -0
  32. package/common.js +1 -1
  33. package/common.mjs +4 -1
  34. package/components/PinnedRowsTable.js +1 -1
  35. package/components/PinnedRowsTable.mjs +46 -34
  36. package/components/table/GridTable.js +1 -1
  37. package/components/table/GridTable.mjs +6 -6
  38. package/components/table/GridTableScrollable.js +1 -1
  39. package/components/table/GridTableScrollable.mjs +4 -4
  40. package/contextMenu/GridContextMenu.d.ts +155 -0
  41. package/contextMenu/GridContextMenu.js +8 -0
  42. package/contextMenu/GridContextMenu.mjs +336 -0
  43. package/contextMenu/enums.d.ts +40 -0
  44. package/contextMenu/enums.js +8 -0
  45. package/contextMenu/enums.mjs +12 -0
  46. package/dist/cdn/js/kendo-vue-grid.js +1 -1
  47. package/header/HeaderRow.d.ts +1 -0
  48. package/header/HeaderRow.js +1 -1
  49. package/header/HeaderRow.mjs +92 -81
  50. package/index.d.mts +3 -0
  51. package/index.d.ts +3 -0
  52. package/index.js +1 -1
  53. package/index.mjs +61 -53
  54. package/interfaces/GridProps.d.ts +31 -1
  55. package/interfaces/events.d.ts +38 -0
  56. package/package-metadata.js +1 -1
  57. package/package-metadata.mjs +2 -2
  58. package/package.json +13 -13
@@ -105,6 +105,7 @@ declare const HeaderRow: import('vue').DefineComponent<import('vue').ExtractProp
105
105
  cellKeyDown(event: any, column: GridColumnProps): void;
106
106
  getTemplate(template: any): any;
107
107
  columnMenuClose(): void;
108
+ triggerContextMenu(e: MouseEvent, column: GridColumnProps): void;
108
109
  }, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<import('vue').ExtractPropTypes<{
109
110
  grid: PropType<any>;
110
111
  cellRender: PropType<string | ((h: any, defaultRendering: any | null, props: GridHeaderCellProps) => any)>;
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("vue"),E=require("../interfaces/GridSortSettings.js"),U=require("../drag/ColumnResizer.js"),W=require("../drag/ColumnDraggable.js"),J=require("./GridHeaderCell.js"),Q=require("../columnMenu/ColumnMenu.js"),c=require("@progress/kendo-vue-common"),X=require("@progress/kendo-vue-data-tools"),Y=require("../utils/main.js"),s=require("../messages/main.js"),Z=require("@progress/kendo-vue-intl"),z=require("@progress/kendo-svg-icons"),ee=require("../utils/virtualColumns.js");function S(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!l.isVNode(t)}const M={none:"none",asc:"ascending",desc:"descending"},te={true:{asc:"desc",desc:"","":"asc"},false:{asc:"desc",desc:"asc","":"asc"}},ne=l.defineComponent({name:"KendoHeaderRow",props:{grid:Object,cellRender:[String,Function,Object],cells:Object,groupable:[Boolean,Object],reorderable:Boolean,sortable:[Boolean,Object],sort:{type:Array},filter:Object,filterable:Boolean,filterOperators:Object,filterChange:Function,filterRow:Object,columns:Array,cellsToRender:Array,columnVirtualization:Boolean,columnsMap:Array,columnResize:Object,columnMenu:[Boolean,String,Function,Object],columnMenuAnimate:{type:[Boolean,Object],default:function(){return!0}},columnMenuIcon:Object,isRtl:Boolean,isColCountDefined:Boolean,headerSelectionValue:[Boolean,Array],columnsInitial:Array,onSortChange:Function,onFilterChange:Function,onSelectionchange:Function,onPressHandler:Function,onDragHandler:Function,onReleaseHandler:Function},inject:{onNavFocus:{default:c.noop},kendoLocalizationService:{default:null}},data(){return{columnMenuOpened:{}}},created(){this.serviceIndex=0,this.index=-1,this._element=null,this.cellClick=this.cellClick.bind(this)},methods:{pressHandler(t,n){this.$emit("pressHandler",t,n)},dragHandler(t,n){this.$emit("dragHandler",t,n)},releaseHandler(t){this.$emit("releaseHandler",t)},selectionChangeHandler(t){this.$emit("selectionchange",t)},cellClick(t,n){if(t.preventDefault(),!c.hasListener.call(this,"sortChange"))return;const{allowUnsort:m,mode:g}=E.normalize(this.$props.sortable||!1,n.sortable||!1),i=(this.$props.sort||[]).filter(o=>o.field===n.field)[0],d=te[m][i&&i.dir||""],u=g==="single"?[]:(this.$props.sort||[]).filter(o=>o.field!==n.field);d!==""&&n.field&&u.push({field:n.field,dir:d}),this.sortChangeHandler(u,{event:t,field:n.field})},sortChangeHandler(t,n){this.$emit("sortChange",t,n)},filterChangeHandler(t,n){this.$emit("filterChange",t,n)},cellClass(t,n,m){const g=n?" "+n:"";let i="k-header"+(m?" k-grid-header-sticky":"")+g;return this.$props.sort&&this.$props.sort.filter(d=>d.field===t).length>0&&(i+=" k-sorted"),i},cellKeyDown(t,n){t.defaultPrevented||(t.keyCode===c.Keys.enter&&this.cellClick(t,n),t.altKey&&t.keyCode===c.Keys.down&&n.field&&(t.preventDefault(),this.columnMenuOpened={[n.field]:!0}))},getTemplate(t){return c.templateRendering.call(this.$props.grid,t,c.getListeners.call(this.$props.grid))},columnMenuClose(){this.onNavFocus({}),this.columnMenuOpened={}}},computed:{element(){return this._element},theadClasses(){return{"k-table-thead":!0}}},render(){const t=Z.provideLocalizationService(this),n=t.toLanguageString(s.sortableColumnAriaLabel,s.messages[s.sortableColumnAriaLabel]),m=t.toLanguageString(s.sortableColumnAscendingAriaLabel,s.messages[s.sortableColumnAscendingAriaLabel]),g=t.toLanguageString(s.sortableColumnDescendingAriaLabel,s.messages[s.sortableColumnDescendingAriaLabel]);this.serviceIndex=0,this.index=-1;const i=this.$props.columnVirtualization,d=function(u,o){const a=ee.getVirtualHeaderCellsToRender({cellsToRender:this.$props.cellsToRender||[],columns:this.$props.columns,rowIndex:o,enableVirtualization:i,columnsMap:this.$props.columnsMap}),V=i;let k=V&&a.columnsToRender?a.columnsToRender:u;const D=V?a.colSpans:[];return!k||k.length===0?[]:k.map(function(v,N){var I,A,L;const e=this.$props.columns[v],b=this.$props.sortable&&e.sortable,R=this.$props.sort?this.$props.sort.findIndex(r=>r.field===e.field):-1,H=R>=0&&this.$props.sort[R].dir||"none",h=function(r){if(!this.$props.sort)return null;const $=r>=0?this.$props.sort[r].dir:"";return r>=0&&[l.createVNode("span",{key:1,class:"k-sort-icon"},[l.createVNode(c.Icon,{name:"sort-"+$+"-small",icon:$==="asc"?z.sortAscSmallIcon:z.sortDescSmallIcon},null)]),this.$props.sort.length>1&&l.createVNode("span",{key:2,class:"k-sort-icon"},[l.createVNode("span",{class:"k-sort-order"},[r+1])])]}.call(this,R),p=e.columnMenu||e.columnMenu===!1?e.columnMenu:this.$props.columnMenu,j=e.menuIcon||this.$props.columnMenuIcon,w=(e.kFirst?"k-first ":"")+this.cellClass(e.field,e.headerClassName,e.locked)+(p?" k-filterable":""),T=!p||typeof p=="boolean"?!!p:this.getTemplate(p),F=a.skipOffset?{borderLeftWidth:"1px"}:void 0,q=e.locked&&(e.left!==void 0||e.right!==void 0)?this.$props.isRtl?{left:e.right+"px",right:e.left+"px"}:{left:e.left+"px",right:e.right+"px"}:F,x=M[H]==="none"?n:M[H]==="ascending"?m:g;let f=e.isAccessible?{ariaSort:M[H],ariaLabel:x,role:"columnheader",ariaColumnIndex:this.$props.isColCountDefined?this.$props.columnsInitial.findIndex(r=>r.field===e.field)+1:void 0,ariaSelected:!1,ariaHaspopup:p?"menu":this.$props.filterable&&e.filterable?"dialog":void 0}:{role:"columnheader"};const B=e.declarationIndex>=0?++this.index:--this.serviceIndex,K=e.columnMenuOpened!==void 0?e.columnMenuOpened:this.columnMenuOpened[e.field],P=(I=D[N])!=null?I:e.headerColSpan,y=Y.resolveCells(this.$props.cells,e.cells),O={ariaSort:b?f.ariaSort:void 0,ariaLabel:b?f.ariaLabel:void 0,role:f.role,ariaColumnIndex:f.ariaColumnIndex,ariaSelected:f.ariaSelected,ariaHaspopup:f.ariaHaspopup,key:B,colSpan:P,rowSpan:e.rowSpan,class:w,style:q,columnId:e.id,navigatable:e.navigatable,onKeydown:r=>this.cellKeyDown(r,e)},C=[e.children.length===0&&p&&l.createVNode(Q.ColumnMenu,{key:0,column:{field:e.field,filter:e.filter},opened:K,animate:this.$props.columnMenuAnimate,sortable:b,sort:this.$props.sort,onClose:this.columnMenuClose,onSortchange:this.sortChangeHandler,filter:this.$props.filter,filterable:this.$props.filterable&&e.filterable,filterOperators:this.$props.filterOperators,onFilterchange:this.filterChangeHandler,render:T,columnMenuIcon:j},null),e.defaultHeaderCell&&l.createVNode("span",{class:"k-cell-inner"},[l.createVNode(e.defaultHeaderCell,{key:1,field:e.field,sortable:b,onHeadercellclick:r=>this.cellClick(r,e),onSelectionchange:this.selectionChangeHandler,selectionValue:(A=e.headerSelectionValue)!=null?A:this.$props.headerSelectionValue,title:e.title,render:(e.headerCell||this.$props.cellRender)&&this.getTemplate(e.headerCell||this.$props.cellRender)},S(h)?h:{default:()=>[h]})])||l.createVNode("span",{class:"k-cell-inner"},[l.createVNode(J.GridHeaderCell,{key:1,field:e.field,sortable:b,onHeadercellclick:r=>this.cellClick(r,e),selectionValue:(L=e.headerSelectionValue)!=null?L:this.$props.headerSelectionValue,title:e.title,render:(e.headerCell||this.$props.cellRender)&&this.getTemplate(e.headerCell||this.$props.cellRender)},S(h)?h:{default:()=>[h]})]),this.$props.columnResize&&this.$props.columnResize.resizable&&e.resizable&&l.createVNode(U.ColumnResizer,{key:2,onResize:(r,$,G)=>this.$props.columnResize&&this.$props.columnResize.dragHandler(r,e,$,G)},null)],_=l.createVNode(X.HeaderThElement,O,S(C)?C:{default:()=>[C]});return c.getTemplate.call(this,{h:l.h,template:y==null?void 0:y.headerCell,defaultRendering:_,additionalProps:{field:e.field,thProps:O},defaultSlots:C})},this)};return l.createVNode("thead",{role:"rowgroup",class:this.theadClasses,"data-keyboardnavheader":!0},[this.$props.columnsMap.map(function(u,o){let a;return(this.$props.groupable||this.$props.reorderable)&&l.createVNode(W.ColumnDraggable,{key:o,onPressHandler:this.pressHandler,onDragHandler:this.dragHandler,onReleaseHandler:this.releaseHandler},S(a=d.call(this,u,o))?a:{default:()=>[a]})||l.createVNode("tr",{class:"k-table-row",role:"row","aria-rowindex":o+1},[d.call(this,u,o)])},this),this.$props.filterRow])}});exports.HeaderRow=ne;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("vue"),E=require("../interfaces/GridSortSettings.js"),U=require("../drag/ColumnResizer.js"),W=require("../drag/ColumnDraggable.js"),J=require("./GridHeaderCell.js"),Q=require("../columnMenu/ColumnMenu.js"),u=require("@progress/kendo-vue-common"),X=require("@progress/kendo-vue-data-tools"),Y=require("../utils/main.js"),i=require("../messages/main.js"),Z=require("@progress/kendo-vue-intl"),A=require("@progress/kendo-svg-icons"),ee=require("../utils/virtualColumns.js");function S(t){return typeof t=="function"||Object.prototype.toString.call(t)==="[object Object]"&&!r.isVNode(t)}const M={none:"none",asc:"ascending",desc:"descending"},te={true:{asc:"desc",desc:"","":"asc"},false:{asc:"desc",desc:"asc","":"asc"}},ne=r.defineComponent({name:"KendoHeaderRow",props:{grid:Object,cellRender:[String,Function,Object],cells:Object,groupable:[Boolean,Object],reorderable:Boolean,sortable:[Boolean,Object],sort:{type:Array},filter:Object,filterable:Boolean,filterOperators:Object,filterChange:Function,filterRow:Object,columns:Array,cellsToRender:Array,columnVirtualization:Boolean,columnsMap:Array,columnResize:Object,columnMenu:[Boolean,String,Function,Object],columnMenuAnimate:{type:[Boolean,Object],default:function(){return!0}},columnMenuIcon:Object,isRtl:Boolean,isColCountDefined:Boolean,headerSelectionValue:[Boolean,Array],columnsInitial:Array,onSortChange:Function,onFilterChange:Function,onSelectionchange:Function,onPressHandler:Function,onDragHandler:Function,onReleaseHandler:Function},inject:{onNavFocus:{default:u.noop},kendoLocalizationService:{default:null},gridContext:{default:null}},data(){return{columnMenuOpened:{}}},created(){this.serviceIndex=0,this.index=-1,this._element=null,this.cellClick=this.cellClick.bind(this)},methods:{pressHandler(t,n){this.$emit("pressHandler",t,n)},dragHandler(t,n){this.$emit("dragHandler",t,n)},releaseHandler(t){this.$emit("releaseHandler",t)},selectionChangeHandler(t){this.$emit("selectionchange",t)},cellClick(t,n){if(t.preventDefault(),!u.hasListener.call(this,"sortChange"))return;const{allowUnsort:o,mode:a}=E.normalize(this.$props.sortable||!1,n.sortable||!1),c=(this.$props.sort||[]).filter(s=>s.field===n.field)[0],p=te[o][c&&c.dir||""],h=a==="single"?[]:(this.$props.sort||[]).filter(s=>s.field!==n.field);p!==""&&n.field&&h.push({field:n.field,dir:p}),this.sortChangeHandler(h,{event:t,field:n.field})},sortChangeHandler(t,n){this.$emit("sortChange",t,n)},filterChangeHandler(t,n){this.$emit("filterChange",t,n)},cellClass(t,n,o){const a=n?" "+n:"";let c="k-header"+(o?" k-grid-header-sticky":"")+a;return this.$props.sort&&this.$props.sort.filter(p=>p.field===t).length>0&&(c+=" k-sorted"),c},cellKeyDown(t,n){t.defaultPrevented||(t.keyCode===u.Keys.enter&&this.cellClick(t,n),t.altKey&&t.keyCode===u.Keys.down&&n.field&&(t.preventDefault(),this.columnMenuOpened={[n.field]:!0}))},getTemplate(t){return u.templateRendering.call(this.$props.grid,t,u.getListeners.call(this.$props.grid))},columnMenuClose(){this.onNavFocus({}),this.columnMenuOpened={}},triggerContextMenu(t,n){var o,a;(a=(o=this.gridContext)==null?void 0:o.onContextMenu)==null||a.call(o,t,void 0,n.field)}},computed:{element(){return this._element},theadClasses(){return{"k-table-thead":!0}}},render(){const t=Z.provideLocalizationService(this),n=t.toLanguageString(i.sortableColumnAriaLabel,i.messages[i.sortableColumnAriaLabel]),o=t.toLanguageString(i.sortableColumnAscendingAriaLabel,i.messages[i.sortableColumnAscendingAriaLabel]),a=t.toLanguageString(i.sortableColumnDescendingAriaLabel,i.messages[i.sortableColumnDescendingAriaLabel]);this.serviceIndex=0,this.index=-1;const c=this.$props.columnVirtualization,p=function(h,s){const d=ee.getVirtualHeaderCellsToRender({cellsToRender:this.$props.cellsToRender||[],columns:this.$props.columns,rowIndex:s,enableVirtualization:c,columnsMap:this.$props.columnsMap}),V=c;let k=V&&d.columnsToRender?d.columnsToRender:h;const z=V?d.colSpans:[];return!k||k.length===0?[]:k.map(function(D,v){var I,L,x;const e=this.$props.columns[D],C=this.$props.sortable&&e.sortable,R=this.$props.sort?this.$props.sort.findIndex(l=>l.field===e.field):-1,H=R>=0&&this.$props.sort[R].dir||"none",m=function(l){if(!this.$props.sort)return null;const $=l>=0?this.$props.sort[l].dir:"";return l>=0&&[r.createVNode("span",{key:1,class:"k-sort-icon"},[r.createVNode(u.Icon,{name:"sort-"+$+"-small",icon:$==="asc"?A.sortAscSmallIcon:A.sortDescSmallIcon},null)]),this.$props.sort.length>1&&r.createVNode("span",{key:2,class:"k-sort-icon"},[r.createVNode("span",{class:"k-sort-order"},[l+1])])]}.call(this,R),f=e.columnMenu||e.columnMenu===!1?e.columnMenu:this.$props.columnMenu,N=e.menuIcon||this.$props.columnMenuIcon,j=(e.kFirst?"k-first ":"")+this.cellClass(e.field,e.headerClassName,e.locked)+(f?" k-filterable":""),w=!f||typeof f=="boolean"?!!f:this.getTemplate(f),T=d.skipOffset?{borderLeftWidth:"1px"}:void 0,F=e.locked&&(e.left!==void 0||e.right!==void 0)?this.$props.isRtl?{left:e.right+"px",right:e.left+"px"}:{left:e.left+"px",right:e.right+"px"}:T,q=M[H]==="none"?n:M[H]==="ascending"?o:a;let g=e.isAccessible?{ariaSort:M[H],ariaLabel:q,role:"columnheader",ariaColumnIndex:this.$props.isColCountDefined?this.$props.columnsInitial.findIndex(l=>l.field===e.field)+1:void 0,ariaSelected:!1,ariaHaspopup:f?"menu":this.$props.filterable&&e.filterable?"dialog":void 0}:{role:"columnheader"};const B=e.declarationIndex>=0?++this.index:--this.serviceIndex,K=e.columnMenuOpened!==void 0?e.columnMenuOpened:this.columnMenuOpened[e.field],P=(I=z[v])!=null?I:e.headerColSpan,y=Y.resolveCells(this.$props.cells,e.cells),O={ariaSort:C?g.ariaSort:void 0,ariaLabel:C?g.ariaLabel:void 0,role:g.role,ariaColumnIndex:g.ariaColumnIndex,ariaSelected:g.ariaSelected,ariaHaspopup:g.ariaHaspopup,key:B,colSpan:P,rowSpan:e.rowSpan,class:j,style:F,columnId:e.id,navigatable:e.navigatable,onKeydown:l=>this.cellKeyDown(l,e),onContextmenu:l=>this.triggerContextMenu(l,e)},b=[e.children.length===0&&f&&r.createVNode(Q.ColumnMenu,{key:0,column:{field:e.field,filter:e.filter},opened:K,animate:this.$props.columnMenuAnimate,sortable:C,sort:this.$props.sort,onClose:this.columnMenuClose,onSortchange:this.sortChangeHandler,filter:this.$props.filter,filterable:this.$props.filterable&&e.filterable,filterOperators:this.$props.filterOperators,onFilterchange:this.filterChangeHandler,render:w,columnMenuIcon:N},null),e.defaultHeaderCell&&r.createVNode("span",{class:"k-cell-inner"},[r.createVNode(e.defaultHeaderCell,{key:1,field:e.field,sortable:C,onHeadercellclick:l=>this.cellClick(l,e),onSelectionchange:this.selectionChangeHandler,selectionValue:(L=e.headerSelectionValue)!=null?L:this.$props.headerSelectionValue,title:e.title,render:(e.headerCell||this.$props.cellRender)&&this.getTemplate(e.headerCell||this.$props.cellRender)},S(m)?m:{default:()=>[m]})])||r.createVNode("span",{class:"k-cell-inner"},[r.createVNode(J.GridHeaderCell,{key:1,field:e.field,sortable:C,onHeadercellclick:l=>this.cellClick(l,e),selectionValue:(x=e.headerSelectionValue)!=null?x:this.$props.headerSelectionValue,title:e.title,render:(e.headerCell||this.$props.cellRender)&&this.getTemplate(e.headerCell||this.$props.cellRender)},S(m)?m:{default:()=>[m]})]),this.$props.columnResize&&this.$props.columnResize.resizable&&e.resizable&&r.createVNode(U.ColumnResizer,{key:2,onResize:(l,$,G)=>this.$props.columnResize&&this.$props.columnResize.dragHandler(l,e,$,G)},null)],_=r.createVNode(X.HeaderThElement,O,S(b)?b:{default:()=>[b]});return u.getTemplate.call(this,{h:r.h,template:y==null?void 0:y.headerCell,defaultRendering:_,additionalProps:{field:e.field,thProps:O},additionalListeners:{contextmenu:l=>this.triggerContextMenu(l,e)},defaultSlots:b})},this)};return r.createVNode("thead",{role:"rowgroup",class:this.theadClasses,"data-keyboardnavheader":!0},[this.$props.columnsMap.map(function(h,s){let d;return(this.$props.groupable||this.$props.reorderable)&&r.createVNode(W.ColumnDraggable,{key:s,onPressHandler:this.pressHandler,onDragHandler:this.dragHandler,onReleaseHandler:this.releaseHandler},S(d=p.call(this,h,s))?d:{default:()=>[d]})||r.createVNode("tr",{class:"k-table-row",role:"row","aria-rowindex":s+1},[p.call(this,h,s)])},this),this.$props.filterRow])}});exports.HeaderRow=ne;
@@ -11,17 +11,17 @@ import { ColumnResizer as Y } from "../drag/ColumnResizer.mjs";
11
11
  import { ColumnDraggable as Z } from "../drag/ColumnDraggable.mjs";
12
12
  import { GridHeaderCell as ee } from "./GridHeaderCell.mjs";
13
13
  import { ColumnMenu as te } from "../columnMenu/ColumnMenu.mjs";
14
- import { noop as le, templateRendering as ne, getListeners as re, Keys as A, hasListener as oe, getTemplate as se, Icon as ie } from "@progress/kendo-vue-common";
14
+ import { noop as ne, templateRendering as le, getListeners as re, Keys as z, hasListener as oe, getTemplate as se, Icon as ie } from "@progress/kendo-vue-common";
15
15
  import { HeaderThElement as ae } from "@progress/kendo-vue-data-tools";
16
16
  import { resolveCells as ce } from "../utils/main.mjs";
17
- import { sortableColumnAriaLabel as j, messages as H, sortableColumnAscendingAriaLabel as w, sortableColumnDescendingAriaLabel as D } from "../messages/main.mjs";
17
+ import { sortableColumnAriaLabel as A, messages as H, sortableColumnAscendingAriaLabel as j, sortableColumnDescendingAriaLabel as w } from "../messages/main.mjs";
18
18
  import { provideLocalizationService as de } from "@progress/kendo-vue-intl";
19
- import { sortAscSmallIcon as pe, sortDescSmallIcon as ue } from "@progress/kendo-svg-icons";
19
+ import { sortAscSmallIcon as ue, sortDescSmallIcon as pe } from "@progress/kendo-svg-icons";
20
20
  import { getVirtualHeaderCellsToRender as he } from "../utils/virtualColumns.mjs";
21
- function C(t) {
21
+ function b(t) {
22
22
  return typeof t == "function" || Object.prototype.toString.call(t) === "[object Object]" && !J(t);
23
23
  }
24
- const y = {
24
+ const M = {
25
25
  none: "none",
26
26
  asc: "ascending",
27
27
  desc: "descending"
@@ -36,7 +36,7 @@ const y = {
36
36
  desc: "asc",
37
37
  "": "asc"
38
38
  }
39
- }, Ae = /* @__PURE__ */ W({
39
+ }, ze = /* @__PURE__ */ W({
40
40
  name: "KendoHeaderRow",
41
41
  props: {
42
42
  grid: Object,
@@ -81,10 +81,13 @@ const y = {
81
81
  },
82
82
  inject: {
83
83
  onNavFocus: {
84
- default: le
84
+ default: ne
85
85
  },
86
86
  kendoLocalizationService: {
87
87
  default: null
88
+ },
89
+ gridContext: {
90
+ default: null
88
91
  }
89
92
  },
90
93
  data() {
@@ -96,11 +99,11 @@ const y = {
96
99
  this.serviceIndex = 0, this.index = -1, this._element = null, this.cellClick = this.cellClick.bind(this);
97
100
  },
98
101
  methods: {
99
- pressHandler(t, l) {
100
- this.$emit("pressHandler", t, l);
102
+ pressHandler(t, n) {
103
+ this.$emit("pressHandler", t, n);
101
104
  },
102
- dragHandler(t, l) {
103
- this.$emit("dragHandler", t, l);
105
+ dragHandler(t, n) {
106
+ this.$emit("dragHandler", t, n);
104
107
  },
105
108
  releaseHandler(t) {
106
109
  this.$emit("releaseHandler", t);
@@ -108,42 +111,46 @@ const y = {
108
111
  selectionChangeHandler(t) {
109
112
  this.$emit("selectionchange", t);
110
113
  },
111
- cellClick(t, l) {
114
+ cellClick(t, n) {
112
115
  if (t.preventDefault(), !oe.call(this, "sortChange"))
113
116
  return;
114
117
  const {
115
- allowUnsort: h,
116
- mode: f
117
- } = X(this.$props.sortable || !1, l.sortable || !1), s = (this.$props.sort || []).filter((o) => o.field === l.field)[0], a = fe[h][s && s.dir || ""], c = f === "single" ? [] : (this.$props.sort || []).filter((o) => o.field !== l.field);
118
- a !== "" && l.field && c.push({
119
- field: l.field,
120
- dir: a
121
- }), this.sortChangeHandler(c, {
118
+ allowUnsort: o,
119
+ mode: i
120
+ } = X(this.$props.sortable || !1, n.sortable || !1), a = (this.$props.sort || []).filter((s) => s.field === n.field)[0], d = fe[o][a && a.dir || ""], u = i === "single" ? [] : (this.$props.sort || []).filter((s) => s.field !== n.field);
121
+ d !== "" && n.field && u.push({
122
+ field: n.field,
123
+ dir: d
124
+ }), this.sortChangeHandler(u, {
122
125
  event: t,
123
- field: l.field
126
+ field: n.field
124
127
  });
125
128
  },
126
- sortChangeHandler(t, l) {
127
- this.$emit("sortChange", t, l);
129
+ sortChangeHandler(t, n) {
130
+ this.$emit("sortChange", t, n);
128
131
  },
129
- filterChangeHandler(t, l) {
130
- this.$emit("filterChange", t, l);
132
+ filterChangeHandler(t, n) {
133
+ this.$emit("filterChange", t, n);
131
134
  },
132
- cellClass(t, l, h) {
133
- const f = l ? " " + l : "";
134
- let s = "k-header" + (h ? " k-grid-header-sticky" : "") + f;
135
- return this.$props.sort && this.$props.sort.filter((a) => a.field === t).length > 0 && (s += " k-sorted"), s;
135
+ cellClass(t, n, o) {
136
+ const i = n ? " " + n : "";
137
+ let a = "k-header" + (o ? " k-grid-header-sticky" : "") + i;
138
+ return this.$props.sort && this.$props.sort.filter((d) => d.field === t).length > 0 && (a += " k-sorted"), a;
136
139
  },
137
- cellKeyDown(t, l) {
138
- t.defaultPrevented || (t.keyCode === A.enter && this.cellClick(t, l), t.altKey && t.keyCode === A.down && l.field && (t.preventDefault(), this.columnMenuOpened = {
139
- [l.field]: !0
140
+ cellKeyDown(t, n) {
141
+ t.defaultPrevented || (t.keyCode === z.enter && this.cellClick(t, n), t.altKey && t.keyCode === z.down && n.field && (t.preventDefault(), this.columnMenuOpened = {
142
+ [n.field]: !0
140
143
  }));
141
144
  },
142
145
  getTemplate(t) {
143
- return ne.call(this.$props.grid, t, re.call(this.$props.grid));
146
+ return le.call(this.$props.grid, t, re.call(this.$props.grid));
144
147
  },
145
148
  columnMenuClose() {
146
149
  this.onNavFocus({}), this.columnMenuOpened = {};
150
+ },
151
+ triggerContextMenu(t, n) {
152
+ var o, i;
153
+ (i = (o = this.gridContext) == null ? void 0 : o.onContextMenu) == null || i.call(o, t, void 0, n.field);
147
154
  }
148
155
  },
149
156
  computed: {
@@ -157,37 +164,37 @@ const y = {
157
164
  }
158
165
  },
159
166
  render() {
160
- const t = de(this), l = t.toLanguageString(j, H[j]), h = t.toLanguageString(w, H[w]), f = t.toLanguageString(D, H[D]);
167
+ const t = de(this), n = t.toLanguageString(A, H[A]), o = t.toLanguageString(j, H[j]), i = t.toLanguageString(w, H[w]);
161
168
  this.serviceIndex = 0, this.index = -1;
162
- const s = this.$props.columnVirtualization, a = function(c, o) {
163
- const i = he({
169
+ const a = this.$props.columnVirtualization, d = function(u, s) {
170
+ const c = he({
164
171
  cellsToRender: this.$props.cellsToRender || [],
165
172
  columns: this.$props.columns,
166
- rowIndex: o,
167
- enableVirtualization: s,
173
+ rowIndex: s,
174
+ enableVirtualization: a,
168
175
  columnsMap: this.$props.columnsMap
169
- }), M = s;
170
- let $ = M && i.columnsToRender ? i.columnsToRender : c;
171
- const F = M ? i.colSpans : [];
172
- return !$ || $.length === 0 ? [] : $.map(function(V, v) {
173
- var I, z, L;
174
- const e = this.$props.columns[V], m = this.$props.sortable && e.sortable, k = this.$props.sort ? this.$props.sort.findIndex((n) => n.field === e.field) : -1, S = k >= 0 && this.$props.sort[k].dir || "none", p = function(n) {
176
+ }), y = a;
177
+ let $ = y && c.columnsToRender ? c.columnsToRender : u;
178
+ const D = y ? c.colSpans : [];
179
+ return !$ || $.length === 0 ? [] : $.map(function(F, V) {
180
+ var x, I, L;
181
+ const e = this.$props.columns[F], m = this.$props.sortable && e.sortable, k = this.$props.sort ? this.$props.sort.findIndex((l) => l.field === e.field) : -1, S = k >= 0 && this.$props.sort[k].dir || "none", h = function(l) {
175
182
  if (!this.$props.sort)
176
183
  return null;
177
- const b = n >= 0 ? this.$props.sort[n].dir : "";
178
- return n >= 0 && [r("span", {
184
+ const C = l >= 0 ? this.$props.sort[l].dir : "";
185
+ return l >= 0 && [r("span", {
179
186
  key: 1,
180
187
  class: "k-sort-icon"
181
188
  }, [r(ie, {
182
- name: "sort-" + b + "-small",
183
- icon: b === "asc" ? pe : ue
189
+ name: "sort-" + C + "-small",
190
+ icon: C === "asc" ? ue : pe
184
191
  }, null)]), this.$props.sort.length > 1 && r("span", {
185
192
  key: 2,
186
193
  class: "k-sort-icon"
187
194
  }, [r("span", {
188
195
  class: "k-sort-order"
189
- }, [n + 1])])];
190
- }.call(this, k), d = e.columnMenu || e.columnMenu === !1 ? e.columnMenu : this.$props.columnMenu, x = e.menuIcon || this.$props.columnMenuIcon, T = (e.kFirst ? "k-first " : "") + this.cellClass(e.field, e.headerClassName, e.locked) + (d ? " k-filterable" : ""), B = !d || typeof d == "boolean" ? !!d : this.getTemplate(d), K = i.skipOffset ? {
196
+ }, [l + 1])])];
197
+ }.call(this, k), p = e.columnMenu || e.columnMenu === !1 ? e.columnMenu : this.$props.columnMenu, v = e.menuIcon || this.$props.columnMenuIcon, T = (e.kFirst ? "k-first " : "") + this.cellClass(e.field, e.headerClassName, e.locked) + (p ? " k-filterable" : ""), B = !p || typeof p == "boolean" ? !!p : this.getTemplate(p), K = c.skipOffset ? {
191
198
  borderLeftWidth: "1px"
192
199
  } : void 0, P = e.locked && (e.left !== void 0 || e.right !== void 0) ? this.$props.isRtl ? {
193
200
  left: e.right + "px",
@@ -195,24 +202,24 @@ const y = {
195
202
  } : {
196
203
  left: e.left + "px",
197
204
  right: e.right + "px"
198
- } : K, N = y[S] === "none" ? l : y[S] === "ascending" ? h : f;
199
- let u = e.isAccessible ? {
200
- ariaSort: y[S],
205
+ } : K, N = M[S] === "none" ? n : M[S] === "ascending" ? o : i;
206
+ let f = e.isAccessible ? {
207
+ ariaSort: M[S],
201
208
  ariaLabel: N,
202
209
  role: "columnheader",
203
- ariaColumnIndex: this.$props.isColCountDefined ? this.$props.columnsInitial.findIndex((n) => n.field === e.field) + 1 : void 0,
210
+ ariaColumnIndex: this.$props.isColCountDefined ? this.$props.columnsInitial.findIndex((l) => l.field === e.field) + 1 : void 0,
204
211
  ariaSelected: !1,
205
- ariaHaspopup: d ? "menu" : this.$props.filterable && e.filterable ? "dialog" : void 0
212
+ ariaHaspopup: p ? "menu" : this.$props.filterable && e.filterable ? "dialog" : void 0
206
213
  } : {
207
214
  role: "columnheader"
208
215
  };
209
- const _ = e.declarationIndex >= 0 ? ++this.index : --this.serviceIndex, q = e.columnMenuOpened !== void 0 ? e.columnMenuOpened : this.columnMenuOpened[e.field], E = (I = F[v]) != null ? I : e.headerColSpan, R = ce(this.$props.cells, e.cells), O = {
210
- ariaSort: m ? u.ariaSort : void 0,
211
- ariaLabel: m ? u.ariaLabel : void 0,
212
- role: u.role,
213
- ariaColumnIndex: u.ariaColumnIndex,
214
- ariaSelected: u.ariaSelected,
215
- ariaHaspopup: u.ariaHaspopup,
216
+ const _ = e.declarationIndex >= 0 ? ++this.index : --this.serviceIndex, q = e.columnMenuOpened !== void 0 ? e.columnMenuOpened : this.columnMenuOpened[e.field], E = (x = D[V]) != null ? x : e.headerColSpan, R = ce(this.$props.cells, e.cells), O = {
217
+ ariaSort: m ? f.ariaSort : void 0,
218
+ ariaLabel: m ? f.ariaLabel : void 0,
219
+ role: f.role,
220
+ ariaColumnIndex: f.ariaColumnIndex,
221
+ ariaSelected: f.ariaSelected,
222
+ ariaHaspopup: f.ariaHaspopup,
216
223
  key: _,
217
224
  colSpan: E,
218
225
  rowSpan: e.rowSpan,
@@ -220,8 +227,9 @@ const y = {
220
227
  style: P,
221
228
  columnId: e.id,
222
229
  navigatable: e.navigatable,
223
- onKeydown: (n) => this.cellKeyDown(n, e)
224
- }, g = [e.children.length === 0 && d && r(te, {
230
+ onKeydown: (l) => this.cellKeyDown(l, e),
231
+ onContextmenu: (l) => this.triggerContextMenu(l, e)
232
+ }, g = [e.children.length === 0 && p && r(te, {
225
233
  key: 0,
226
234
  column: {
227
235
  field: e.field,
@@ -238,36 +246,36 @@ const y = {
238
246
  filterOperators: this.$props.filterOperators,
239
247
  onFilterchange: this.filterChangeHandler,
240
248
  render: B,
241
- columnMenuIcon: x
249
+ columnMenuIcon: v
242
250
  }, null), e.defaultHeaderCell && r("span", {
243
251
  class: "k-cell-inner"
244
252
  }, [r(e.defaultHeaderCell, {
245
253
  key: 1,
246
254
  field: e.field,
247
255
  sortable: m,
248
- onHeadercellclick: (n) => this.cellClick(n, e),
256
+ onHeadercellclick: (l) => this.cellClick(l, e),
249
257
  onSelectionchange: this.selectionChangeHandler,
250
- selectionValue: (z = e.headerSelectionValue) != null ? z : this.$props.headerSelectionValue,
258
+ selectionValue: (I = e.headerSelectionValue) != null ? I : this.$props.headerSelectionValue,
251
259
  title: e.title,
252
260
  render: (e.headerCell || this.$props.cellRender) && this.getTemplate(e.headerCell || this.$props.cellRender)
253
- }, C(p) ? p : {
254
- default: () => [p]
261
+ }, b(h) ? h : {
262
+ default: () => [h]
255
263
  })]) || r("span", {
256
264
  class: "k-cell-inner"
257
265
  }, [r(ee, {
258
266
  key: 1,
259
267
  field: e.field,
260
268
  sortable: m,
261
- onHeadercellclick: (n) => this.cellClick(n, e),
269
+ onHeadercellclick: (l) => this.cellClick(l, e),
262
270
  selectionValue: (L = e.headerSelectionValue) != null ? L : this.$props.headerSelectionValue,
263
271
  title: e.title,
264
272
  render: (e.headerCell || this.$props.cellRender) && this.getTemplate(e.headerCell || this.$props.cellRender)
265
- }, C(p) ? p : {
266
- default: () => [p]
273
+ }, b(h) ? h : {
274
+ default: () => [h]
267
275
  })]), this.$props.columnResize && this.$props.columnResize.resizable && e.resizable && r(Y, {
268
276
  key: 2,
269
- onResize: (n, b, U) => this.$props.columnResize && this.$props.columnResize.dragHandler(n, e, b, U)
270
- }, null)], G = r(ae, O, C(g) ? g : {
277
+ onResize: (l, C, U) => this.$props.columnResize && this.$props.columnResize.dragHandler(l, e, C, U)
278
+ }, null)], G = r(ae, O, b(g) ? g : {
271
279
  default: () => [g]
272
280
  });
273
281
  return se.call(this, {
@@ -278,6 +286,9 @@ const y = {
278
286
  field: e.field,
279
287
  thProps: O
280
288
  },
289
+ additionalListeners: {
290
+ contextmenu: (l) => this.triggerContextMenu(l, e)
291
+ },
281
292
  defaultSlots: g
282
293
  });
283
294
  }, this);
@@ -286,23 +297,23 @@ const y = {
286
297
  role: "rowgroup",
287
298
  class: this.theadClasses,
288
299
  "data-keyboardnavheader": !0
289
- }, [this.$props.columnsMap.map(function(c, o) {
290
- let i;
300
+ }, [this.$props.columnsMap.map(function(u, s) {
301
+ let c;
291
302
  return (this.$props.groupable || this.$props.reorderable) && r(Z, {
292
- key: o,
303
+ key: s,
293
304
  onPressHandler: this.pressHandler,
294
305
  onDragHandler: this.dragHandler,
295
306
  onReleaseHandler: this.releaseHandler
296
- }, C(i = a.call(this, c, o)) ? i : {
297
- default: () => [i]
307
+ }, b(c = d.call(this, u, s)) ? c : {
308
+ default: () => [c]
298
309
  }) || r("tr", {
299
310
  class: "k-table-row",
300
311
  role: "row",
301
- "aria-rowindex": o + 1
302
- }, [a.call(this, c, o)]);
312
+ "aria-rowindex": s + 1
313
+ }, [d.call(this, u, s)]);
303
314
  }, this), this.$props.filterRow]);
304
315
  }
305
316
  });
306
317
  export {
307
- Ae as HeaderRow
318
+ ze as HeaderRow
308
319
  };
package/index.d.mts CHANGED
@@ -47,5 +47,8 @@ export * from './utils/main.js';
47
47
  export * from './interfaces/events.js';
48
48
  export * from './interfaces/GridCellsSettings.js';
49
49
  export * from './StatusBar.js';
50
+ export * from './contextMenu/enums.js';
51
+ export { GridContextMenu, contextMenuItemsMap, getDefaultHeadContextMenuItems, getDefaultBodyContextMenuItems } from './contextMenu/GridContextMenu.js';
52
+ export type { GridContextMenuOptions, GridCellBaseOptions, GridContextMenuProps, GridContextMenuItem } from './contextMenu/GridContextMenu.js';
50
53
  export { Grid, GridCell, GridEditCell, GridGroupCell, GridHierarchyCell, GridDetailRow, GridRow, GridFilterCell, GridHeaderCell, Footer, FooterRow, GridColumnMenuSort, sortGroupByField, GridColumnMenuFilter, filterGroupByField, GridColumnMenuItem, GridColumnMenuItemContent, GridColumnMenuItemGroup, GridColumnMenuFilterUI, GridColumnMenuFilterCell, GridColumnMenuCheckboxFilter, GridToolbar, GridNoRecords, GridSearchBox, };
51
54
  export type { GridProps, GridColumnProps, GridCellProps, GridDetailRowProps, GridRowProps, GridFilterCellProps, GridHeaderCellProps, GridFooterCellProps, GridColumnMenuProps, GridColumnMenuCheckboxFilterProps, GridToolbarProps, GridNoRecordsProps, GridSortSettings, GridPagerSettings, GridGroupableSettings, GridSearchBoxProps, GridColumnState, GridColSpanProps, };
package/index.d.ts CHANGED
@@ -47,5 +47,8 @@ export * from './utils/main';
47
47
  export * from './interfaces/events';
48
48
  export * from './interfaces/GridCellsSettings';
49
49
  export * from './StatusBar';
50
+ export * from './contextMenu/enums';
51
+ export { GridContextMenu, contextMenuItemsMap, getDefaultHeadContextMenuItems, getDefaultBodyContextMenuItems } from './contextMenu/GridContextMenu';
52
+ export type { GridContextMenuOptions, GridCellBaseOptions, GridContextMenuProps, GridContextMenuItem } from './contextMenu/GridContextMenu';
50
53
  export { Grid, GridCell, GridEditCell, GridGroupCell, GridHierarchyCell, GridDetailRow, GridRow, GridFilterCell, GridHeaderCell, Footer, FooterRow, GridColumnMenuSort, sortGroupByField, GridColumnMenuFilter, filterGroupByField, GridColumnMenuItem, GridColumnMenuItemContent, GridColumnMenuItemGroup, GridColumnMenuFilterUI, GridColumnMenuFilterCell, GridColumnMenuCheckboxFilter, GridToolbar, GridNoRecords, GridSearchBox, };
51
54
  export type { GridProps, GridColumnProps, GridCellProps, GridDetailRowProps, GridRowProps, GridFilterCellProps, GridHeaderCellProps, GridFooterCellProps, GridColumnMenuProps, GridColumnMenuCheckboxFilterProps, GridToolbarProps, GridNoRecordsProps, GridSortSettings, GridPagerSettings, GridGroupableSettings, GridSearchBoxProps, GridColumnState, GridColSpanProps, };
package/index.js CHANGED
@@ -5,4 +5,4 @@
5
5
  * Licensed under commercial license. See LICENSE.md in the package root for more information
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./RootGrid.js"),o=require("./columnMenu/GridColumnMenuSort.js"),t=require("./columnMenu/GridColumnMenuFilter.js"),l=require("./columnMenu/GridColumnMenuFilterUI.js"),u=require("./columnMenu/GridColumnMenuFilterCell.js"),n=require("./columnMenu/GridColumnMenuCheckboxFilter.js"),d=require("./cells/GridCell.js"),a=require("./cells/GridEditCell.js"),C=require("./cells/GridGroupCell.js"),s=require("./cells/GridHierarchyCell.js"),G=require("./cells/GridFilterCell.js"),m=require("./header/GridHeaderCell.js"),c=require("./footer/Footer.js"),p=require("./footer/FooterRow.js"),F=require("./rows/GridDetailRow.js"),M=require("./rows/GridRow.js"),q=require("./GridToolbar.js"),g=require("./components/noRecords/GridNoRecords.js");require("@progress/kendo-vue-data-tools");const S=require("./columnMenu/GridColumnMenuItem.js"),R=require("./columnMenu/GridColumnMenuItemContent.js"),f=require("./columnMenu/GridColumnMenuItemGroup.js"),h=require("./GridSearchBox.js"),e=require("./utils/main.js"),r=require("./StatusBar.js");exports.Grid=i.RootGrid;exports.GridColumnMenuSort=o.GridColumnMenuSort;exports.sortGroupByField=o.sortGroupByField;exports.GridColumnMenuFilter=t.GridColumnMenuFilter;exports.filterGroupByField=t.filterGroupByField;exports.GridColumnMenuFilterUI=l.GridColumnMenuFilterUI;exports.GridColumnMenuFilterCell=u.GridColumnMenuFilterCell;exports.GridColumnMenuCheckboxFilter=n.GridColumnMenuCheckboxFilter;exports.GridCell=d.GridCell;exports.GridEditCell=a.GridEditCell;exports.GridGroupCell=C.GridGroupCell;exports.GridHierarchyCell=s.GridHierarchyCell;exports.GridFilterCell=G.GridFilterCell;exports.GridHeaderCell=m.GridHeaderCell;exports.Footer=c.Footer;exports.FooterRow=p.FooterRow;exports.GridDetailRow=F.GridDetailRow;exports.GridRow=M.GridRow;exports.GridToolbar=q.GridToolbar;exports.GridNoRecords=g.GridNoRecords;exports.GridColumnMenuItem=S.GridColumnMenuItem;exports.GridColumnMenuItemContent=R.GridColumnMenuItemContent;exports.GridColumnMenuItemGroup=f.GridColumnMenuItemGroup;exports.GridSearchBox=h.GridSearchBox;exports.applyExpandedState=e.applyExpandedState;exports.autoGenerateColumns=e.autoGenerateColumns;exports.calcRowHeight=e.calcRowHeight;exports.checkPropCompatibility=e.checkPropCompatibility;exports.firefox=e.firefox;exports.firefoxMaxHeight=e.firefoxMaxHeight;exports.flatData=e.flatData;exports.footerColumns=e.footerColumns;exports.getColSpan=e.getColSpan;exports.getColumnWidth=e.getColumnWidth;exports.getDataAsArray=e.getDataAsArray;exports.getFlatColumnsState=e.getFlatColumnsState;exports.getIndex=e.getIndex;exports.getNestedValue=e.getNestedValue;exports.getRowSpanOptions=e.getRowSpanOptions;exports.groupedFirstItemValue=e.groupedFirstItemValue;exports.isRtl=e.isRtl;exports.isSorted=e.isSorted;exports.mapColumns=e.mapColumns;exports.parsers=e.parsers;exports.readColumns=e.readColumns;exports.resolveCells=e.resolveCells;exports.sanitizeColumns=e.sanitizeColumns;exports.StatusBar=r.StatusBar;exports.getStatusData=r.getStatusData;exports.leafColumns=r.leafColumns;
8
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./RootGrid.js"),o=require("./columnMenu/GridColumnMenuSort.js"),i=require("./columnMenu/GridColumnMenuFilter.js"),u=require("./columnMenu/GridColumnMenuFilterUI.js"),d=require("./columnMenu/GridColumnMenuFilterCell.js"),a=require("./columnMenu/GridColumnMenuCheckboxFilter.js"),C=require("./cells/GridCell.js"),s=require("./cells/GridEditCell.js"),G=require("./cells/GridGroupCell.js"),m=require("./cells/GridHierarchyCell.js"),c=require("./cells/GridFilterCell.js"),M=require("./header/GridHeaderCell.js"),p=require("./footer/Footer.js"),x=require("./footer/FooterRow.js"),F=require("./rows/GridDetailRow.js"),g=require("./rows/GridRow.js"),q=require("./GridToolbar.js"),I=require("./components/noRecords/GridNoRecords.js");require("@progress/kendo-vue-data-tools");const S=require("./columnMenu/GridColumnMenuItem.js"),f=require("./columnMenu/GridColumnMenuItemContent.js"),R=require("./columnMenu/GridColumnMenuItemGroup.js"),h=require("./GridSearchBox.js"),e=require("./utils/main.js"),t=require("./StatusBar.js"),l=require("./contextMenu/enums.js"),r=require("./contextMenu/GridContextMenu.js");exports.Grid=n.RootGrid;exports.GridColumnMenuSort=o.GridColumnMenuSort;exports.sortGroupByField=o.sortGroupByField;exports.GridColumnMenuFilter=i.GridColumnMenuFilter;exports.filterGroupByField=i.filterGroupByField;exports.GridColumnMenuFilterUI=u.GridColumnMenuFilterUI;exports.GridColumnMenuFilterCell=d.GridColumnMenuFilterCell;exports.GridColumnMenuCheckboxFilter=a.GridColumnMenuCheckboxFilter;exports.GridCell=C.GridCell;exports.GridEditCell=s.GridEditCell;exports.GridGroupCell=G.GridGroupCell;exports.GridHierarchyCell=m.GridHierarchyCell;exports.GridFilterCell=c.GridFilterCell;exports.GridHeaderCell=M.GridHeaderCell;exports.Footer=p.Footer;exports.FooterRow=x.FooterRow;exports.GridDetailRow=F.GridDetailRow;exports.GridRow=g.GridRow;exports.GridToolbar=q.GridToolbar;exports.GridNoRecords=I.GridNoRecords;exports.GridColumnMenuItem=S.GridColumnMenuItem;exports.GridColumnMenuItemContent=f.GridColumnMenuItemContent;exports.GridColumnMenuItemGroup=R.GridColumnMenuItemGroup;exports.GridSearchBox=h.GridSearchBox;exports.applyExpandedState=e.applyExpandedState;exports.autoGenerateColumns=e.autoGenerateColumns;exports.calcRowHeight=e.calcRowHeight;exports.checkPropCompatibility=e.checkPropCompatibility;exports.firefox=e.firefox;exports.firefoxMaxHeight=e.firefoxMaxHeight;exports.flatData=e.flatData;exports.footerColumns=e.footerColumns;exports.getColSpan=e.getColSpan;exports.getColumnWidth=e.getColumnWidth;exports.getDataAsArray=e.getDataAsArray;exports.getFlatColumnsState=e.getFlatColumnsState;exports.getIndex=e.getIndex;exports.getNestedValue=e.getNestedValue;exports.getRowSpanOptions=e.getRowSpanOptions;exports.groupedFirstItemValue=e.groupedFirstItemValue;exports.isRtl=e.isRtl;exports.isSorted=e.isSorted;exports.mapColumns=e.mapColumns;exports.parsers=e.parsers;exports.readColumns=e.readColumns;exports.resolveCells=e.resolveCells;exports.sanitizeColumns=e.sanitizeColumns;exports.StatusBar=t.StatusBar;exports.getStatusData=t.getStatusData;exports.leafColumns=t.leafColumns;exports.GridContextMenuAnchorPart=l.GridContextMenuAnchorPart;exports.GridContextMenuItemNames=l.GridContextMenuItemNames;exports.GridContextMenu=r.GridContextMenu;exports.contextMenuItemsMap=r.contextMenuItemsMap;exports.getDefaultBodyContextMenuItems=r.getDefaultBodyContextMenuItems;exports.getDefaultHeadContextMenuItems=r.getDefaultHeadContextMenuItems;
package/index.mjs CHANGED
@@ -6,79 +6,87 @@
6
6
  *-------------------------------------------------------------------------------------------
7
7
  */
8
8
  import { RootGrid as t } from "./RootGrid.mjs";
9
- import { GridColumnMenuSort as i, sortGroupByField as m } from "./columnMenu/GridColumnMenuSort.mjs";
10
- import { GridColumnMenuFilter as a, filterGroupByField as d } from "./columnMenu/GridColumnMenuFilter.mjs";
11
- import { GridColumnMenuFilterUI as n } from "./columnMenu/GridColumnMenuFilterUI.mjs";
12
- import { GridColumnMenuFilterCell as x } from "./columnMenu/GridColumnMenuFilterCell.mjs";
9
+ import { GridColumnMenuSort as m, sortGroupByField as i } from "./columnMenu/GridColumnMenuSort.mjs";
10
+ import { GridColumnMenuFilter as p, filterGroupByField as a } from "./columnMenu/GridColumnMenuFilter.mjs";
11
+ import { GridColumnMenuFilterUI as d } from "./columnMenu/GridColumnMenuFilterUI.mjs";
12
+ import { GridColumnMenuFilterCell as f } from "./columnMenu/GridColumnMenuFilterCell.mjs";
13
13
  import { GridColumnMenuCheckboxFilter as G } from "./columnMenu/GridColumnMenuCheckboxFilter.mjs";
14
- import { GridCell as g } from "./cells/GridCell.mjs";
15
- import { GridEditCell as M } from "./cells/GridEditCell.mjs";
16
- import { GridGroupCell as c } from "./cells/GridGroupCell.mjs";
14
+ import { GridCell as M } from "./cells/GridCell.mjs";
15
+ import { GridEditCell as F } from "./cells/GridEditCell.mjs";
16
+ import { GridGroupCell as I } from "./cells/GridGroupCell.mjs";
17
17
  import { GridHierarchyCell as h } from "./cells/GridHierarchyCell.mjs";
18
- import { GridFilterCell as I } from "./cells/GridFilterCell.mjs";
19
- import { GridHeaderCell as B } from "./header/GridHeaderCell.mjs";
18
+ import { GridFilterCell as y } from "./cells/GridFilterCell.mjs";
19
+ import { GridHeaderCell as w } from "./header/GridHeaderCell.mjs";
20
20
  import { Footer as H } from "./footer/Footer.mjs";
21
- import { FooterRow as k } from "./footer/FooterRow.mjs";
22
- import { GridDetailRow as E } from "./rows/GridDetailRow.mjs";
23
- import { GridRow as V } from "./rows/GridRow.mjs";
24
- import { GridToolbar as z } from "./GridToolbar.mjs";
25
- import { GridNoRecords as P } from "./components/noRecords/GridNoRecords.mjs";
21
+ import { FooterRow as A } from "./footer/FooterRow.mjs";
22
+ import { GridDetailRow as k } from "./rows/GridDetailRow.mjs";
23
+ import { GridRow as P } from "./rows/GridRow.mjs";
24
+ import { GridToolbar as v } from "./GridToolbar.mjs";
25
+ import { GridNoRecords as O } from "./components/noRecords/GridNoRecords.mjs";
26
26
  import "@progress/kendo-vue-data-tools";
27
27
  import { GridColumnMenuItem as U } from "./columnMenu/GridColumnMenuItem.mjs";
28
28
  import { GridColumnMenuItemContent as j } from "./columnMenu/GridColumnMenuItemContent.mjs";
29
29
  import { GridColumnMenuItemGroup as J } from "./columnMenu/GridColumnMenuItemGroup.mjs";
30
30
  import { GridSearchBox as L } from "./GridSearchBox.mjs";
31
- import { applyExpandedState as X, autoGenerateColumns as Y, calcRowHeight as Z, checkPropCompatibility as _, firefox as $, firefoxMaxHeight as rr, flatData as or, footerColumns as er, getColSpan as tr, getColumnWidth as lr, getDataAsArray as ir, getFlatColumnsState as mr, getIndex as pr, getNestedValue as ar, getRowSpanOptions as dr, groupedFirstItemValue as ur, isRtl as nr, isSorted as fr, mapColumns as xr, parsers as Cr, readColumns as Gr, resolveCells as sr, sanitizeColumns as gr } from "./utils/main.mjs";
32
- import { StatusBar as Mr, getStatusData as Sr, leafColumns as cr } from "./StatusBar.mjs";
31
+ import { applyExpandedState as X, autoGenerateColumns as Y, calcRowHeight as Z, checkPropCompatibility as _, firefox as $, firefoxMaxHeight as ee, flatData as re, footerColumns as oe, getColSpan as te, getColumnWidth as le, getDataAsArray as me, getFlatColumnsState as ie, getIndex as ne, getNestedValue as pe, getRowSpanOptions as ae, groupedFirstItemValue as ue, isRtl as de, isSorted as xe, mapColumns as fe, parsers as Ce, readColumns as Ge, resolveCells as se, sanitizeColumns as Me } from "./utils/main.mjs";
32
+ import { StatusBar as Fe, getStatusData as ce, leafColumns as Ie } from "./StatusBar.mjs";
33
+ import { GridContextMenuAnchorPart as he, GridContextMenuItemNames as Re } from "./contextMenu/enums.mjs";
34
+ import { GridContextMenu as De, contextMenuItemsMap as we, getDefaultBodyContextMenuItems as Be, getDefaultHeadContextMenuItems as He } from "./contextMenu/GridContextMenu.mjs";
33
35
  export {
34
36
  H as Footer,
35
- k as FooterRow,
37
+ A as FooterRow,
36
38
  t as Grid,
37
- g as GridCell,
39
+ M as GridCell,
38
40
  G as GridColumnMenuCheckboxFilter,
39
- a as GridColumnMenuFilter,
40
- x as GridColumnMenuFilterCell,
41
- n as GridColumnMenuFilterUI,
41
+ p as GridColumnMenuFilter,
42
+ f as GridColumnMenuFilterCell,
43
+ d as GridColumnMenuFilterUI,
42
44
  U as GridColumnMenuItem,
43
45
  j as GridColumnMenuItemContent,
44
46
  J as GridColumnMenuItemGroup,
45
- i as GridColumnMenuSort,
46
- E as GridDetailRow,
47
- M as GridEditCell,
48
- I as GridFilterCell,
49
- c as GridGroupCell,
50
- B as GridHeaderCell,
47
+ m as GridColumnMenuSort,
48
+ De as GridContextMenu,
49
+ he as GridContextMenuAnchorPart,
50
+ Re as GridContextMenuItemNames,
51
+ k as GridDetailRow,
52
+ F as GridEditCell,
53
+ y as GridFilterCell,
54
+ I as GridGroupCell,
55
+ w as GridHeaderCell,
51
56
  h as GridHierarchyCell,
52
- P as GridNoRecords,
53
- V as GridRow,
57
+ O as GridNoRecords,
58
+ P as GridRow,
54
59
  L as GridSearchBox,
55
- z as GridToolbar,
56
- Mr as StatusBar,
60
+ v as GridToolbar,
61
+ Fe as StatusBar,
57
62
  X as applyExpandedState,
58
63
  Y as autoGenerateColumns,
59
64
  Z as calcRowHeight,
60
65
  _ as checkPropCompatibility,
61
- d as filterGroupByField,
66
+ we as contextMenuItemsMap,
67
+ a as filterGroupByField,
62
68
  $ as firefox,
63
- rr as firefoxMaxHeight,
64
- or as flatData,
65
- er as footerColumns,
66
- tr as getColSpan,
67
- lr as getColumnWidth,
68
- ir as getDataAsArray,
69
- mr as getFlatColumnsState,
70
- pr as getIndex,
71
- ar as getNestedValue,
72
- dr as getRowSpanOptions,
73
- Sr as getStatusData,
74
- ur as groupedFirstItemValue,
75
- nr as isRtl,
76
- fr as isSorted,
77
- cr as leafColumns,
78
- xr as mapColumns,
79
- Cr as parsers,
80
- Gr as readColumns,
81
- sr as resolveCells,
82
- gr as sanitizeColumns,
83
- m as sortGroupByField
69
+ ee as firefoxMaxHeight,
70
+ re as flatData,
71
+ oe as footerColumns,
72
+ te as getColSpan,
73
+ le as getColumnWidth,
74
+ me as getDataAsArray,
75
+ Be as getDefaultBodyContextMenuItems,
76
+ He as getDefaultHeadContextMenuItems,
77
+ ie as getFlatColumnsState,
78
+ ne as getIndex,
79
+ pe as getNestedValue,
80
+ ae as getRowSpanOptions,
81
+ ce as getStatusData,
82
+ ue as groupedFirstItemValue,
83
+ de as isRtl,
84
+ xe as isSorted,
85
+ Ie as leafColumns,
86
+ fe as mapColumns,
87
+ Ce as parsers,
88
+ Ge as readColumns,
89
+ se as resolveCells,
90
+ Me as sanitizeColumns,
91
+ i as sortGroupByField
84
92
  };
@@ -8,7 +8,8 @@
8
8
  import { DataResult, SortDescriptor, CompositeFilterDescriptor, GroupDescriptor } from '@progress/kendo-data-query';
9
9
  import { GridGroupableSettings } from './GridGroupableSettings';
10
10
  import { GridCellsSettings } from './GridCellsSettings';
11
- import { GridSortChangeEvent, GridFilterChangeEvent, GridPageChangeEvent, GridExpandChangeEvent, GridSelectionChangeEvent, GridHeaderSelectionChangeEvent, GridRowClickEvent, GridItemChangeEvent, GridDataStateChangeEvent, GridColumnResizeEvent, GridColumnReorderEvent, GridGroupChangeEvent, GridCancelEvent, GridSaveEvent, GridRemoveEvent, GridEditEvent, GridNavigationActionEvent, GridKeyDownEvent, GridSearchChangeEvent, GridGroupExpandChangeEvent, GridDetailExpandChangeEvent, GridRowPinChangeEvent } from './events';
11
+ import { GridSortChangeEvent, GridFilterChangeEvent, GridPageChangeEvent, GridExpandChangeEvent, GridSelectionChangeEvent, GridHeaderSelectionChangeEvent, GridRowClickEvent, GridItemChangeEvent, GridDataStateChangeEvent, GridColumnResizeEvent, GridColumnReorderEvent, GridGroupChangeEvent, GridCancelEvent, GridSaveEvent, GridRemoveEvent, GridEditEvent, GridNavigationActionEvent, GridKeyDownEvent, GridSearchChangeEvent, GridGroupExpandChangeEvent, GridDetailExpandChangeEvent, GridRowPinChangeEvent, GridContextMenuEvent, GridContextMenuItemClickEvent } from './events';
12
+ import { GridContextMenuOptions, GridCellBaseOptions } from '../contextMenu/GridContextMenu';
12
13
  import { GridCellProps } from './GridCellProps';
13
14
  import { GridSortSettings } from './GridSortSettings';
14
15
  import { DetailExpandDescriptor, GridPagerSettings, GroupExpandDescriptor, SearchField, SelectDescriptor } from '@progress/kendo-vue-data-tools';
@@ -635,6 +636,35 @@ export interface GridProps {
635
636
  * enabled, the columns outside the view are not rendered.
636
637
  */
637
638
  columnVirtualization?: boolean;
639
+ /**
640
+ * Configures the context menu of the Grid. If set to `true`, the default context menu is rendered.
641
+ * Can be a `GridContextMenuOptions` object to configure head/body items separately,
642
+ * or a function that returns the configuration based on cell options.
643
+ *
644
+ * @example
645
+ * ```vue
646
+ * <Grid :context-menu="true" />
647
+ * ```
648
+ */
649
+ contextMenu?: boolean | GridContextMenuOptions | ((options: GridCellBaseOptions) => boolean | GridContextMenuOptions);
650
+ /**
651
+ * Fires when the context menu is activated on a cell.
652
+ *
653
+ * @example
654
+ * ```vue
655
+ * <Grid @contextmenu="handleContextMenu" />
656
+ * ```
657
+ */
658
+ onContextmenu?: (event: GridContextMenuEvent) => void;
659
+ /**
660
+ * Fires when a context menu item is clicked.
661
+ *
662
+ * @example
663
+ * ```vue
664
+ * <Grid @contextmenuitemclick="handleItemClick" />
665
+ * ```
666
+ */
667
+ onContextmenuitemclick?: (event: GridContextMenuItemClickEvent) => void;
638
668
  /**
639
669
  * If set to `true`, the user can use dedicated shortcuts to interact with the Grid.
640
670
  * By default, navigation is disabled and the Grid content is accessible in the normal tab sequence.