@progress/kendo-react-data-tools
Version:
Includes React Pager & React Filter component, an intuitive interface to create complex filter descriptions. KendoReact Data Tools package
9 lines (8 loc) • 3.92 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
;Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("@progress/kendo-react-common"),R=require("./constants.js"),M="items",x={},F=(e,t)=>!e||Array.isArray(e)&&e.length===0?[t]:e.findIndex(d=>d===t)>-1?e.filter(d=>d!==t):[...e,t],j=e=>{let t=e;for(;t;){if(t.hasAttribute(R.TABLE_PREVENT_SELECTION_ELEMENT))return!0;t=t.parentElement}return!1},h=(e,t)=>{let o=e;for(;o;){if(o.tagName===t)return o;if(o.tagName==="TABLE")return null;o=o.parentElement}return null},N=e=>{if(!e)return;const t=e.getAttribute(R.TABLE_ROW_INDEX_ATTRIBUTE);return t?parseInt(t,10):void 0},L=e=>{if(!e)return;const t=e.getAttribute(R.TABLE_COL_INDEX_ATTRIBUTE);return t?parseInt(t,10):void 0},b=e=>{const t=e.subItemsField||M,o=s.getter(e.dataItemKey);return s.mapTree(e.data,t,d=>s.extendDataItem(d,t,{[e.selectedField]:e.selectedState[o(d)]}))},G=e=>{const{event:t,dataItemKey:o,selectedState:d}=e,{syntheticEvent:i,nativeEvent:n,dataItems:I,componentId:l,mode:f,cell:E,selectedField:T}=t,{target:S,ctrlKey:p,metaKey:w,altKey:u,shiftKey:K}=n;if(i.isDefaultPrevented()&&!K||n.keyCode!==s.Keys.space&&n.keyCode!==s.Keys.enter&&n.keyCode!==s.Keys.right&&n.keyCode!==s.Keys.left&&n.keyCode!==s.Keys.up&&n.keyCode!==s.Keys.down)return d;i.preventDefault();const v=h(S,"TD"),g=h(S,"TR");let r=L(v),m=N(g),a={};return v&&g&&m!==void 0&&r!==void 0&&(n.keyCode===s.Keys.right&&r++,n.keyCode===s.Keys.left&&r--,n.keyCode===s.Keys.down&&m++,n.keyCode===s.Keys.up&&m--,a=O({selectedState:d,dataItemKey:o,event:{ctrlKey:p,metaKey:w,altKey:u,shiftKey:K,dataItems:I,cell:E,mode:f,selectedField:T,componentId:l,startColIndex:r,endColIndex:r,startRowIndex:m,endRowIndex:m,isDrag:!1,syntheticEvent:i,nativeEvent:n,target:t.target,dataItem:null}})),a},O=e=>{const{event:t,dataItemKey:o,selectedState:d}=e,{dataItems:i,startRowIndex:n,endRowIndex:I,startColIndex:l,endColIndex:f,cell:E,isDrag:T,ctrlKey:S,shiftKey:p,metaKey:w,componentId:u,mode:K,dataItem:v}=t,g=s.getter(o);let r={};const m=v!==null;if(K==="single"){const a=i.slice(n,n+1)[0],y=g(a);x[u]={rowIndex:n,colIndex:l},y!==void 0&&(r[y]=E?[l]:!0)}else if(T||!p&&!S&&!w&&!m){T||(x[u]={rowIndex:n,colIndex:l});const a=[];for(let c=l;c<=f;c++)a.push(c);i.slice(n,I+1).forEach(c=>{const D=g(c);D!==void 0&&(r[D]=E?[...a]:!0)})}else if(S||w||m){x[u]={rowIndex:n,colIndex:l};const y=i.slice(n,I+1)[0],c=g(y);c!==void 0&&(r={...d},r[c]=E&&!m?F(r[c],l):!r[c])}else if(p){const a=x[u]&&x[u].rowIndex||0,y=x[u]&&x[u].colIndex||0,c=Math.min(a,n,I),D=Math.max(a,n,I),k=Math.min(y,l,f),B=Math.max(y,l,f),A=[];for(let C=k;C<=B;C++)A.push(C);i.slice(c,D+1).forEach(C=>{const _=g(C);_!==void 0&&(r[_]=E?[...A]:!0)})}return r},U=s.hasRelativeStackingContext(),X=e=>{if(!e||!U)return null;let t=e.parentElement;for(;t;){if(window.getComputedStyle(t).transform!=="none")return t;t=t.parentElement}},q=e=>{if(e&&e.ownerDocument&&e!==e.ownerDocument.body){const t=e.getBoundingClientRect();return{left:t.left-e.scrollLeft,top:t.top-e.scrollTop}}return{left:0,top:0}},V=e=>{var n,I,l,f;const t=typeof e=="object"?(n=e.enabled)!=null?n:!0:e!=null?e:!1,o=typeof e=="object"&&(I=e.drag)!=null?I:!1,d=typeof e=="object"&&(l=e.mode)!=null?l:"multiple",i=typeof e=="object"&&(f=e.cell)!=null?f:!1;return{enabled:t,drag:o,mode:d,cell:i}};exports.closestTagName=h;exports.getColumnIndex=L;exports.getOffset=q;exports.getRowIndex=N;exports.getSelectedState=O;exports.getSelectedStateFromKeyDown=G;exports.getSelectionOptions=V;exports.isInNonSelectable=j;exports.relativeContextElement=X;exports.setSelectedState=b;