UNPKG

@progress/kendo-vue-data-tools

Version:
9 lines (8 loc) 3.27 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 p=require("@progress/kendo-vue-common"),A=require("./constants.js"),F="items",m={},M=(e,t)=>!e||Array.isArray(e)&&e.length===0?[t]:e.findIndex(o=>o===t)>-1?e.filter(o=>o===t):[...e,t],v=(e,t)=>{let n=e;for(;n;){if(n.tagName===t)return n;if(n.tagName==="TABLE")return null;n=n.parentElement}return null},K=e=>{if(!e)return;const t=e.getAttribute(A.TABLE_ROW_INDEX_ATTRIBUTE);return t?parseInt(t,10):void 0},_=e=>{if(!e)return;const t=e.getAttribute(A.TABLE_COL_INDEX_ATTRIBUTE);return t?parseInt(t,10):void 0},U=e=>{const t=e.subItemsField||F;return p.mapTree(e.data,t,n=>p.extendDataItem(n,t,{[e.selectedField]:e.selectedState[n[e.dataItemKey]]}))},k=e=>{const{dataItemKey:t,selectedState:n}=e,{event:o,dataItems:c,componentId:r,mode:u,cell:a,selectedField:f}=e.event,{target:I,ctrlKey:T,metaKey:w,altKey:C,shiftKey:y}=o;if(o.isDefaultPrevented()||o.keyCode!==p.Keys.enter)return n;const l=v(I,"TD"),D=v(I,"TR"),S=_(l),s=K(D);let x={};return l&&D&&s!==void 0&&S!==void 0&&(x=O({selectedState:n,dataItemKey:t,event:{ctrlKey:T,metaKey:w,altKey:C,shiftKey:y,dataItems:c,cell:a,mode:u,selectedField:f,componentId:r,startColIndex:S,endColIndex:S,startRowIndex:s,endRowIndex:s,isDrag:!1,event:o,target:o.target,dataItem:null}})),x},O=e=>{const{event:t,dataItemKey:n,selectedState:o}=e,{dataItems:c,startRowIndex:r,endRowIndex:u,startColIndex:a,endColIndex:f,cell:I,isDrag:T,ctrlKey:w,shiftKey:C,metaKey:y,componentId:l,mode:D,dataItem:S}=t;let s={};const x=S!==null;if(D==="single"){const g=c.slice(r,r+1)[0][n];m[l]={rowIndex:r,colIndex:a},s[g]=I?[a]:!0}else if(T||!C&&!w&&!y&&!x){T||(m[l]={rowIndex:r,colIndex:a});const i=[];for(let d=a;d<=f;d++)i.push(d);c.slice(r,u+1).forEach(d=>{const R=d[n];s[R]=I?[...i]:!0})}else if(w||y||x){m[l]={rowIndex:r,colIndex:a};const d=c.slice(r,u+1)[0][n];s={...o},s[d]=I&&!x?M(s[d],a):!s[d]}else if(C){const i=m[l]&&m[l].rowIndex||0,g=m[l]&&m[l].colIndex||0,d=Math.min(i,r,u),R=Math.max(i,r,u),L=Math.min(g,a,f),N=Math.max(g,a,f),h=[];for(let E=L;E<=N;E++)h.push(E);c.slice(d,R+1).forEach(E=>{const B=E[n];s[B]=I?[...h]:!0})}return s},X=p.hasRelativeStackingContext(),b=e=>{if(!e||!X)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}},G=e=>{const t=e?typeof e.enabled=="boolean"?e.enabled:!0:!1,n=e?!!e.drag:!1,o=e&&e.mode?e.mode:"multiple",c=!!(e&&e.cell);return{enabled:t,drag:n,mode:o,cell:c}};exports.closestTagName=v;exports.getColumnIndex=_;exports.getOffset=q;exports.getRowIndex=K;exports.getSelectedState=O;exports.getSelectedStateFromKeyDown=k;exports.getSelectionOptions=G;exports.relativeContextElement=b;exports.setSelectedState=U;