@progress/kendo-react-treelist 7.2.4-develop.3 → 7.3.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.
- package/TreeList.js +8 -0
- package/TreeList.mjs +580 -0
- package/TreeListNoRecords.js +8 -0
- package/TreeListNoRecords.mjs +23 -0
- package/TreeListToolbar.js +8 -0
- package/TreeListToolbar.mjs +26 -0
- package/cells/EditCells/TreeListBooleanEditor.js +8 -0
- package/cells/EditCells/TreeListBooleanEditor.mjs +55 -0
- package/cells/EditCells/TreeListDateEditor.js +8 -0
- package/cells/EditCells/TreeListDateEditor.mjs +54 -0
- package/cells/EditCells/TreeListNumericEditor.js +8 -0
- package/cells/EditCells/TreeListNumericEditor.mjs +53 -0
- package/cells/EditCells/TreeListTextEditor.js +8 -0
- package/cells/EditCells/TreeListTextEditor.mjs +53 -0
- package/cells/FilterCells/TreeListBooleanFilter.js +8 -0
- package/cells/FilterCells/TreeListBooleanFilter.mjs +26 -0
- package/cells/FilterCells/TreeListDateFilter.js +8 -0
- package/cells/FilterCells/TreeListDateFilter.mjs +26 -0
- package/cells/FilterCells/TreeListNumericFilter.js +8 -0
- package/cells/FilterCells/TreeListNumericFilter.mjs +26 -0
- package/cells/FilterCells/TreeListTextFilter.js +8 -0
- package/cells/FilterCells/TreeListTextFilter.mjs +26 -0
- package/cells/FilterCells/utils.js +8 -0
- package/cells/FilterCells/utils.mjs +59 -0
- package/cells/TreeListCell.js +8 -0
- package/cells/TreeListCell.mjs +71 -0
- package/cells/TreeListSelectionCell.js +8 -0
- package/cells/TreeListSelectionCell.mjs +47 -0
- package/constants/index.js +8 -0
- package/constants/index.mjs +15 -0
- package/dist/cdn/js/kendo-react-treelist.js +8 -5
- package/header/TreeListHeaderCell.js +8 -0
- package/header/TreeListHeaderCell.mjs +14 -0
- package/header/TreeListHeaderSelectionCell.js +8 -0
- package/header/TreeListHeaderSelectionCell.mjs +25 -0
- package/index.d.mts +1139 -5
- package/index.d.ts +1139 -38
- package/index.js +8 -5
- package/index.mjs +66 -1184
- package/messages/index.js +8 -0
- package/messages/index.mjs +59 -0
- package/package-metadata.js +8 -0
- package/package-metadata.mjs +19 -0
- package/package.json +8 -8
- package/rows/TreeListDraggableRow.js +8 -0
- package/rows/TreeListDraggableRow.mjs +130 -0
- package/rows/TreeListRow.js +8 -0
- package/rows/TreeListRow.mjs +47 -0
- package/utils/index.js +8 -0
- package/utils/index.mjs +46 -0
- package/ScrollMode.d.ts +0 -5
- package/TreeList.d.ts +0 -137
- package/TreeListNoRecords.d.ts +0 -16
- package/TreeListToolbar.d.ts +0 -15
- package/cells/EditCells/TreeListBooleanEditor.d.ts +0 -11
- package/cells/EditCells/TreeListDateEditor.d.ts +0 -11
- package/cells/EditCells/TreeListNumericEditor.d.ts +0 -12
- package/cells/EditCells/TreeListTextEditor.d.ts +0 -11
- package/cells/FilterCells/TreeListBooleanFilter.d.ts +0 -14
- package/cells/FilterCells/TreeListDateFilter.d.ts +0 -14
- package/cells/FilterCells/TreeListNumericFilter.d.ts +0 -14
- package/cells/FilterCells/TreeListTextFilter.d.ts +0 -14
- package/cells/FilterCells/utils.d.ts +0 -42
- package/cells/TreeListCell.d.ts +0 -9
- package/cells/TreeListSelectionCell.d.ts +0 -11
- package/constants/index.d.ts +0 -10
- package/header/TreeListHeaderCell.d.ts +0 -7
- package/header/TreeListHeaderSelectionCell.d.ts +0 -15
- package/interfaces/DataItemWrapper.d.ts +0 -14
- package/interfaces/TreeListCellProps.d.ts +0 -45
- package/interfaces/TreeListColumnProps.d.ts +0 -45
- package/interfaces/TreeListFilterCellProps.d.ts +0 -10
- package/interfaces/TreeListFilterOperator.d.ts +0 -10
- package/interfaces/TreeListHeaderCellProps.d.ts +0 -10
- package/interfaces/TreeListNoRecordsProps.d.ts +0 -13
- package/interfaces/TreeListProps.d.ts +0 -241
- package/interfaces/TreeListRowProps.d.ts +0 -96
- package/interfaces/TreeListSelectableSettings.d.ts +0 -22
- package/interfaces/TreeListSortSettings.d.ts +0 -13
- package/interfaces/TreeListToolbarProps.d.ts +0 -13
- package/interfaces/events.d.ts +0 -269
- package/messages/index.d.ts +0 -124
- package/package-metadata.d.ts +0 -9
- package/rows/TreeListDraggableRow.d.ts +0 -36
- package/rows/TreeListRow.d.ts +0 -10
- package/utils/index.d.ts +0 -21
package/TreeList.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const W=require("react"),n=require("prop-types"),g=require("@progress/kendo-react-common"),h=require("@progress/kendo-react-data-tools"),O=require("./utils/index.js"),$=require("./cells/TreeListCell.js"),G=require("./TreeListNoRecords.js"),J=require("./rows/TreeListRow.js"),Q=require("./package-metadata.js");function X(x){const l=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(x){for(const e in x)if(e!=="default"){const t=Object.getOwnPropertyDescriptor(x,e);Object.defineProperty(l,e,t.get?t:{enumerable:!0,get:()=>x[e]})}}return l.default=x,Object.freeze(l)}const d=X(W),T=class T extends d.Component{constructor(l){super(l),this.wrapperScrollLeft=0,this.wrapperScrollTop=0,this.updateOnScroll=!1,this.tbodyOffsetTop=0,this.prevData=[],this.flattedData=[],this.extendedColumn=[],this.columnsMap=[],this.element=null,this.contextStateRef={current:void 0},this.navigationStateRef={current:void 0},this.scrollIntoView=e=>{if(!this.element)return;const{rowIndex:t=0}=e,{scrollable:o,rowHeight:s=0}=this.props;if(o==="virtual"||s)this.element.scroll(0,(t-1)*s);else{const r=this.element.querySelector(`tbody > tr:nth-child(${t})`);if(r){const i=r.offsetTop-this.tbodyOffsetTop;this.element.scroll(0,i)}}},this.getExtendedColumn=g.memoizeOne((e,t)=>h.readColumns(e,{prevId:0,idPrefix:t})),this.getColumnsMap=g.memoizeOne(e=>h.mapColumns(e)),this.onKeyDown=e=>{if(h.tableKeyboardNavigation.onKeyDown(e,{contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef}),this.props.onKeyDown){const{mode:t,cell:o}=h.getSelectionOptions(this.props.selectable),s={dataItems:this.getLeafDataItems(),mode:t,cell:o,componentId:this._treeListId,selectedField:this.props.selectedField,...this.getArguments(e)};this.props.onKeyDown.call(void 0,s)}},this.onFocus=e=>{h.tableKeyboardNavigation.onFocus(e,{contextStateRef:this.contextStateRef})},this.onRowDrag=e=>{this.props.onRowDrag&&this.props.onRowDrag.call(void 0,{...e,target:this})},this.onRowDrop=e=>{this.props.onRowDrop&&this.props.onRowDrop.call(void 0,{...e,target:this})},this.columnReorder=(e,t,o)=>{const s=this.extendedColumn[e].depth,r=p=>{do p++;while(p<this.extendedColumn.length&&this.extendedColumn[p].depth>s);return p},i=this.extendedColumn.splice(e,r(e)-e);if(this.extendedColumn.splice(e<t?r(t-i.length):t,0,...i),this.extendedColumn.filter(p=>p.declarationIndex>=0).forEach((p,m)=>p.orderIndex=m),this.props.onColumnReorder){const p={target:this,columns:this.columns,nativeEvent:o};this.props.onColumnReorder.call(void 0,p)}},this.onResize=(e,t,o,s,r)=>{if(this.props.onColumnResize){const i=this.extendedColumn.filter(m=>m.children.length===0).reduce((m,C)=>m+=parseFloat(String(C.width)),0),p={columns:this.columns,totalWidth:i,index:e,nativeEvent:s,newWidth:t,oldWidth:o,end:r,target:this};this.props.onColumnResize.call(void 0,p)}},this.handleOnScroll=e=>{const t=e.currentTarget.scrollLeft,o=e.currentTarget.scrollTop,{columnVirtualization:s,scrollable:r,rowHeight:i=0}=this.props,p=i,m=0;let C=!1;s&&Math.abs(this.wrapperScrollLeft-t)>m&&(this.wrapperScrollLeft=t,C=!0),r==="virtual"&&Math.abs(this.wrapperScrollTop-o)>p&&(this.wrapperScrollTop=o,C=!0),C&&(this.updateOnScroll=!0,this.forceUpdate())},this.calculateSizes=e=>{if(!e||this.props.scrollable==="none")return;const t=Array.from(e.childNodes),o=t.find(i=>i.nodeName==="TABLE"),s=this.props.toolbar&&t.find(i=>i.nodeType===1&&i.classList.contains("k-grid-toolbar"));let r=0;if(s){const i=s.style.boxSizing;s.style.boxSizing="border-box",r=parseFloat(String(window.getComputedStyle(s).height))||s.offsetHeight,s.style.boxSizing=i,s.getAttribute("style")||s.removeAttribute("style")}this.tbodyOffsetTop=o.tBodies[0].offsetTop,O.setHeaderRowsTop(o,r)},this.itemChange=e=>{const t=this.props.onItemChange;if(e.field===this.props.expandField){const o=this.props.onExpandChange;if(o){const s={...this.getArguments(e.syntheticEvent),dataItem:e.dataItem,level:e.level,value:e.value};o.call(void 0,s)}return}if(t){const o={...this.getArguments(e.syntheticEvent),dataItem:e.dataItem,level:e.level,field:e.field,value:e.value};t.call(void 0,o)}},this.onHeaderSelectionChange=e=>{if(this.props.onHeaderSelectionChange){const t={field:e.field,nativeEvent:e.syntheticEvent&&e.syntheticEvent.nativeEvent,syntheticEvent:e.syntheticEvent,target:this,dataItems:this.getLeafDataItems()};this.props.onHeaderSelectionChange.call(void 0,t)}},this.selectionRelease=e=>{if(this.props.onSelectionChange){const t={syntheticEvent:void 0,target:this,selectedField:this.props.selectedField||"",componentId:this._treeListId,dataItems:this.getLeafDataItems(),dataItem:null,level:[],...e};this.props.onSelectionChange.call(void 0,t)}},this.sortChange=(e,t,o)=>{this.raiseDataEvent(this.props.onSortChange,{sort:t,field:o},e)},this.headerFilterChange=(e,t,o)=>{this.raiseDataEvent(this.props.onFilterChange,{filter:t,field:o},e)},this.filterChange=e=>{const{filter:t,field:o}=e;this.raiseDataEvent(this.props.onFilterChange,{filter:t,field:o},e.syntheticEvent)},this.columnMenuFilterChange=(e,t,o)=>{const{onColumnMenuFilterChange:s}=this.props;if(!s)return;const r={syntheticEvent:e,filter:t,field:o,target:this,nativeEvent:e.nativeEvent};s.call(void 0,r)},this.expandChange=(e,t,o)=>{const{expandField:s,onExpandChange:r}=this.props;if(s&&r){const i={...this.getArguments(e),dataItem:t,level:o,value:this.expanded(t)};r.call(void 0,i)}},this.rowClick=(e,t)=>{if(this.props.onRowClick&&e.target.nodeName==="TD"){const o={dataItem:t.dataItem,level:t.level,...this.getArguments(e)};this.props.onRowClick.call(void 0,o)}},this.rowDoubleClick=(e,t)=>{if(this.props.onRowDoubleClick&&e.target.nodeName==="TD"){const o={dataItem:t.dataItem,level:t.level,...this.getArguments(e)};this.props.onRowDoubleClick.call(void 0,o)}},this.rowContextMenu=(e,t)=>{if(this.props.onRowContextMenu&&e.target.nodeName==="TD"){const o={dataItem:t.dataItem,level:t.level,...this.getArguments(e)};this.props.onRowContextMenu.call(void 0,o)}},this.onPageChange=e=>{if(this.props.onPageChange){const t={...this.getArguments(e.syntheticEvent),skip:e.skip,take:e.take};this.props.onPageChange.call(void 0,t)}},this.expandedSubItems=e=>{const t=[];return this.expanded(e)&&this.hasChildren(e)&&t.push(...g.getNestedValue(this.props.subItemsField,e)),t},this.getLeafDataItems=()=>this.flatData.map(e=>e.dataItem),this.expanded=e=>!!g.getNestedValue(this.props.expandField,e),this.hasChildren=e=>!!g.getNestedValue(this.props.subItemsField,e),g.validatePackage(Q.packageMetadata),this.dragLogic=new h.CommonDragLogic(this.columnReorder,g.noop,g.noop),this.columnResize=new h.ColumnResize(this.onResize.bind(this)),h.tableKeyboardNavigation.onConstructor({navigatable:!!l.navigatable,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}get _treeListId(){return this.props.id+"-treelist"}get document(){if(g.canUseDOM)return this.element&&this.element.ownerDocument||document}componentDidMount(){this.calculateSizes(this.element),h.tableKeyboardNavigation.onComponentDidMount({scope:this.element||void 0,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}getSnapshotBeforeUpdate(){return h.tableKeyboardNavigation.onGetSnapshotBeforeUpdate({document:this.document,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef}),null}componentDidUpdate(l){l.columns!==this.props.columns&&this.calculateSizes(this.element),h.tableKeyboardNavigation.onComponentDidUpdate({scope:this.element||void 0,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}componentWillUnmount(){this.columnsMap=[],this.prevData=[],this.flattedData=[],this.updateOnScroll=!1,this.getExtendedColumn.clear(),this.getColumnsMap.clear()}render(){const{columns:l=[],filterRow:e,scrollable:t="scrollable",resizable:o=!1,reorderable:s=!1,skip:r,take:i}=this.props,p=l.some(a=>!!a.filter||!!a.filterCell)||e!==void 0,m=e||h.FilterRow,C=h.tableKeyboardNavigationTools.getIdPrefix(this.navigationStateRef);this.extendedColumn=this.getExtendedColumn(l,C),this.columnsMap=this.getColumnsMap(this.extendedColumn);const v=this.extendedColumn.filter(a=>a.children.length===0);this.columnResize.columns=this.extendedColumn,this.columnResize.resizable=o,this.dragLogic.columns=this.extendedColumn,this.dragLogic.reorderable=s,this.dragLogic.groupable=!1;const M=d.createElement(h.Header,{headerRow:d.createElement(h.HeaderRow,{sort:this.props.sort,sortable:this.props.sortable,sortChange:this.sortChange,selectionChange:this.onHeaderSelectionChange,columns:this.extendedColumn,columnsMap:this.columnsMap,cellRender:this.props.headerCellRender,columnResize:this.columnResize,columnMenu:this.props.columnMenu,columnMenuFilter:this.props.columnMenuFilter,columnMenuFilterChange:this.columnMenuFilterChange,pressHandler:this.dragLogic.pressHandler,dragHandler:this.dragLogic.dragHandler,releaseHandler:this.dragLogic.releaseHandler,filterChange:this.headerFilterChange}),filterRow:p&&d.createElement(m,{columns:v,filter:this.props.filter,filterChange:this.filterChange,sort:this.props.sort,ariaRowIndex:this.columnsMap.length+1})||void 0,columnResize:this.columnResize}),R=this.props.style||{},{colSpans:I,hiddenColumns:H}=h.tableColumnsVirtualization({enabled:this.props.columnVirtualization,columns:v,scrollLeft:this.wrapperScrollLeft,tableViewPortWidth:parseFloat((R.width||"").toString())}),P=(a,f,E,k,F,D)=>v.map((c,u)=>{if(H[u])return null;const w=c.id?c.id:u,N=`${c.className?c.className+" ":""}${c.locked?"k-grid-content-sticky":""}`,y={id:h.tableKeyboardNavigationTools.generateNavigatableId(`${E}-${String(u)}`,C),colSpan:I[u],dataItem:a.dataItem,field:c.field,format:c.format,className:N||void 0,render:this.props.cellRender,onChange:this.itemChange,selectionChange:this.props.onSelectionChange?S=>{this.selectionChange({event:S,item:a,columnIndex:u,dataIndex:F})}:void 0,level:a.level,expandable:c.expandable,expanded:k,hasChildren:this.hasChildren(a.dataItem),onExpandChange:this.expandChange,colIndex:u,ariaColumnIndex:c.ariaColumnIndex,style:c.left!==void 0&&{left:c.left,right:c.right,borderRightWidth:c.rightBorder?"1px":""}||{},isSelected:Array.isArray(D)&&D.indexOf(u)>-1};return f&&c.editCell?d.createElement(c.editCell,{key:w,...y,onChange:this.itemChange}):c.cell?d.createElement(c.cell,{key:w,...y}):d.createElement($.TreeListCell,{key:w,...y})});let b=this.flatData;const L=b.length;r!==void 0&&i!==void 0&&(b=b.slice(r,r+i)),t==="virtual"&&(b=O.tableRowsVirtualization({rows:b,tableViewPortHeight:parseFloat((R.height||R.maxHeight||"").toString()),scrollTop:this.wrapperScrollTop}),this.updateOnScroll=!1);const A=b.map(a=>a.level),V=this.columnsMap.length+(p?1:0)+1,B=b.length>0&&b.map((a,f)=>{const E=g.getNestedValue(this.props.editField,a.dataItem),k=this.props.dataItemKey&&g.getter(this.props.dataItemKey)(a.dataItem),F=String(k||a.level.join(".")),D=this.expanded(a.dataItem),c=this.props.selectedField?g.getNestedValue(this.props.selectedField,a.dataItem):void 0,u={key:F,level:a.level,levels:A,dataItem:a.dataItem,selectedField:this.props.selectedField,rowHeight:t==="virtual"?a.height:this.props.rowHeight,render:this.props.rowRender,onDrop:this.onRowDrop,onDrag:this.onRowDrag,onClick:S=>this.rowClick(S,a),onDoubleClick:S=>this.rowDoubleClick(S,a),onContextMenu:S=>this.rowContextMenu(S,a),isAltRow:f%2!==0,expanded:D,rowIndex:f,ariaRowIndex:V+f,ariaSetSize:a.levelCount,ariaPosInSet:a.level[a.level.length-1]+1,isSelected:typeof c=="boolean"&&c},w=this.props.editRow,N=this.props.row||J.TreeListRow,y=P(a,E,F,D,f,c);return E&&w?d.createElement(w,{...u,key:u.key},y):d.createElement(N,{...u,key:u.key},y)})||d.createElement("tr",{className:"k-table-row k-grid-norecords"},d.createElement("td",{colSpan:v.length},this.props.noRecords||d.createElement(G.TreeListNoRecords,null))),U=a=>this.props.sort&&this.props.sort.some(f=>f.field===a),j=d.createElement("colgroup",{ref:a=>{this.columnResize.colGroupMain=a}},v.map((a,f)=>d.createElement("col",{key:f.toString(),className:U(a.field)?"k-sorted":void 0,style:a.width!==void 0?{width:a.width}:void 0}))),q=this.props.columnVirtualization||this.props.scrollable==="virtual",_=this.props.selectable&&this.props.selectable.drag?"none":void 0,K=this.props.tableProps||{};return d.createElement(h.TableKeyboardNavigationContext.Provider,{value:this.contextStateRef.current},d.createElement("div",{id:this.props.id,style:this.props.style,className:g.classNames("k-grid k-grid-md","k-treelist",this.props.className,{"k-treelist-scrollable":t!=="none"}),ref:a=>this.element=a,onScroll:q?this.handleOnScroll:void 0,onKeyDown:this.onKeyDown,onFocus:this.onFocus,"aria-rowcount":L,"aria-colcount":v.length,role:"treegrid",...h.tableKeyboardNavigationScopeAttributes},this.props.toolbar,d.createElement(h.TableSelection,{selectable:this.props.selectable,onRelease:this.selectionRelease},d.createElement("table",{className:"k-table k-table-md k-grid-table",...K,style:{...K.style||{},userSelect:_},role:"presentation"},j,M,d.createElement("tbody",{className:"k-table-tbody",...h.tableKeyboardNavigationBodyAttributes,role:"presentation"},B))),this.props.pager&&d.createElement(this.props.pager,{className:"k-grid-pager",total:L,skip:r,take:i,onPageChange:this.onPageChange}),s&&d.createElement(d.Fragment,null,d.createElement(h.DropClue,{ref:this.dragLogic.refDropElementClue}),d.createElement(h.DragClue,{ref:this.dragLogic.refDragElementClue}))))}get columns(){const l=this.extendedColumn.filter(t=>t.declarationIndex>=0&&t.parentIndex===-1),e=t=>(t.sort((o,s)=>o.declarationIndex-s.declarationIndex),t.map(o=>{const{declarationIndex:s,parentIndex:r,depth:i,colSpan:p,rowSpan:m,index:C,kFirst:v,groupable:M,children:R,...I}=o;return R.length?{children:e(R),...I}:I}));return e(l)}get flatData(){const{data:l=[],rowHeight:e=0}=this.props;let t=0;const o=r=>{const i={height:e,offsetTop:t};return t+=i.height,i};let s=this.updateOnScroll&&this.prevData===l&&this.tbodyOffsetTop>0&&this.flattedData.length?this.flattedData:h.flatData(l,this.expandedSubItems,o);return this.prevData=l,this.flattedData=s,s}selectionChange(l){if(this.props.onSelectionChange){const{event:e,item:t,dataIndex:o,columnIndex:s}=l,{mode:r,cell:i}=h.getSelectionOptions(this.props.selectable),p={...this.getArguments(e.syntheticEvent),dataItem:t.dataItem,level:t.level,startColIndex:s,endColIndex:s,startRowIndex:o,endRowIndex:o,dataItems:this.getLeafDataItems(),altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1,mode:r,cell:i,isDrag:!1,componentId:this._treeListId,selectedField:this.props.selectedField||""};this.props.onSelectionChange.call(void 0,p)}}raiseDataEvent(l,e,t){const o=this.props.onDataStateChange;if(l)l.call(void 0,{...this.getArguments(t),...e});else if(o){const s={...this.getArguments(t),dataState:{...this.getDataState(),...e}};o.call(void 0,s)}}getDataState(){return{filter:this.props.filter,sort:this.props.sort}}getArguments(l){return{nativeEvent:l&&l.nativeEvent,syntheticEvent:l,target:this}}};T.propTypes={data:n.array,resizable:n.bool,reorderable:n.bool,sortable:n.oneOfType([n.bool,n.shape({mode:n.oneOf(["single","multiple"]),allowUnsort:n.bool})]),onSortChange:n.func,sort:n.array,columns:n.arrayOf(n.object),columnVirtualization:n.bool,filter:n.array,onFilterChange:n.func,filterRow:n.any,toolbar:n.any,noRecords:n.any,onExpandChange:n.func,expandField:n.string,subItemsField:n.string,selectedField:n.string,onSelectionChange:n.func,onHeaderSelectionChange:n.func,onRowClick:n.func,onItemChange:n.func,editField:n.string,scrollable:n.oneOf(["none","scrollable","virtual"]),rowHeight:n.number,style:n.object,tableProps:n.object,pager:n.any,skip:n.number,take:n.number,onPageChange:n.func,onDataStateChange:n.func,onColumnResize:n.func,onColumnReorder:n.func,dataItemKey:n.string,navigatable:n.bool},T.contextType=h.TableKeyboardNavigationContext;let z=T;exports.TreeList=z;
|
package/TreeList.mjs
ADDED
|
@@ -0,0 +1,580 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";
|
|
9
|
+
import * as r from "react";
|
|
10
|
+
import n from "prop-types";
|
|
11
|
+
import { memoizeOne as N, getNestedValue as y, validatePackage as J, noop as H, canUseDOM as Q, getter as X, classNames as Y } from "@progress/kendo-react-common";
|
|
12
|
+
import { readColumns as Z, mapColumns as ee, tableKeyboardNavigation as w, getSelectionOptions as A, CommonDragLogic as te, ColumnResize as oe, TableKeyboardNavigationContext as K, tableKeyboardNavigationTools as O, Header as se, HeaderRow as ne, tableColumnsVirtualization as ae, tableKeyboardNavigationScopeAttributes as ie, TableSelection as le, tableKeyboardNavigationBodyAttributes as re, DropClue as he, DragClue as de, flatData as ce, FilterRow as pe } from "@progress/kendo-react-data-tools";
|
|
13
|
+
import { setHeaderRowsTop as ge, tableRowsVirtualization as ue } from "./utils/index.mjs";
|
|
14
|
+
import { TreeListCell as me } from "./cells/TreeListCell.mjs";
|
|
15
|
+
import { TreeListNoRecords as fe } from "./TreeListNoRecords.mjs";
|
|
16
|
+
import { TreeListRow as Ce } from "./rows/TreeListRow.mjs";
|
|
17
|
+
import { packageMetadata as ve } from "./package-metadata.mjs";
|
|
18
|
+
const F = class F extends r.Component {
|
|
19
|
+
constructor(h) {
|
|
20
|
+
super(h), this.wrapperScrollLeft = 0, this.wrapperScrollTop = 0, this.updateOnScroll = !1, this.tbodyOffsetTop = 0, this.prevData = [], this.flattedData = [], this.extendedColumn = [], this.columnsMap = [], this.element = null, this.contextStateRef = { current: void 0 }, this.navigationStateRef = { current: void 0 }, this.scrollIntoView = (e) => {
|
|
21
|
+
if (!this.element)
|
|
22
|
+
return;
|
|
23
|
+
const { rowIndex: t = 0 } = e, { scrollable: o, rowHeight: s = 0 } = this.props;
|
|
24
|
+
if (o === "virtual" || s)
|
|
25
|
+
this.element.scroll(0, (t - 1) * s);
|
|
26
|
+
else {
|
|
27
|
+
const l = this.element.querySelector(`tbody > tr:nth-child(${t})`);
|
|
28
|
+
if (l) {
|
|
29
|
+
const i = l.offsetTop - this.tbodyOffsetTop;
|
|
30
|
+
this.element.scroll(0, i);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}, this.getExtendedColumn = N(
|
|
34
|
+
(e, t) => Z(e, { prevId: 0, idPrefix: t })
|
|
35
|
+
), this.getColumnsMap = N(
|
|
36
|
+
(e) => ee(e)
|
|
37
|
+
), this.onKeyDown = (e) => {
|
|
38
|
+
if (w.onKeyDown(e, {
|
|
39
|
+
contextStateRef: this.contextStateRef,
|
|
40
|
+
navigationStateRef: this.navigationStateRef
|
|
41
|
+
}), this.props.onKeyDown) {
|
|
42
|
+
const { mode: t, cell: o } = A(this.props.selectable), s = {
|
|
43
|
+
dataItems: this.getLeafDataItems(),
|
|
44
|
+
mode: t,
|
|
45
|
+
cell: o,
|
|
46
|
+
componentId: this._treeListId,
|
|
47
|
+
selectedField: this.props.selectedField,
|
|
48
|
+
...this.getArguments(e)
|
|
49
|
+
};
|
|
50
|
+
this.props.onKeyDown.call(void 0, s);
|
|
51
|
+
}
|
|
52
|
+
}, this.onFocus = (e) => {
|
|
53
|
+
w.onFocus(e, {
|
|
54
|
+
contextStateRef: this.contextStateRef
|
|
55
|
+
});
|
|
56
|
+
}, this.onRowDrag = (e) => {
|
|
57
|
+
this.props.onRowDrag && this.props.onRowDrag.call(void 0, { ...e, target: this });
|
|
58
|
+
}, this.onRowDrop = (e) => {
|
|
59
|
+
this.props.onRowDrop && this.props.onRowDrop.call(void 0, { ...e, target: this });
|
|
60
|
+
}, this.columnReorder = (e, t, o) => {
|
|
61
|
+
const s = this.extendedColumn[e].depth, l = (c) => {
|
|
62
|
+
do
|
|
63
|
+
c++;
|
|
64
|
+
while (c < this.extendedColumn.length && this.extendedColumn[c].depth > s);
|
|
65
|
+
return c;
|
|
66
|
+
}, i = this.extendedColumn.splice(e, l(e) - e);
|
|
67
|
+
if (this.extendedColumn.splice(e < t ? l(t - i.length) : t, 0, ...i), this.extendedColumn.filter((c) => c.declarationIndex >= 0).forEach((c, g) => c.orderIndex = g), this.props.onColumnReorder) {
|
|
68
|
+
const c = {
|
|
69
|
+
target: this,
|
|
70
|
+
columns: this.columns,
|
|
71
|
+
nativeEvent: o
|
|
72
|
+
};
|
|
73
|
+
this.props.onColumnReorder.call(void 0, c);
|
|
74
|
+
}
|
|
75
|
+
}, this.onResize = (e, t, o, s, l) => {
|
|
76
|
+
if (this.props.onColumnResize) {
|
|
77
|
+
const i = this.extendedColumn.filter((g) => g.children.length === 0).reduce((g, m) => g += parseFloat(String(m.width)), 0), c = {
|
|
78
|
+
columns: this.columns,
|
|
79
|
+
totalWidth: i,
|
|
80
|
+
index: e,
|
|
81
|
+
nativeEvent: s,
|
|
82
|
+
newWidth: t,
|
|
83
|
+
oldWidth: o,
|
|
84
|
+
end: l,
|
|
85
|
+
target: this
|
|
86
|
+
};
|
|
87
|
+
this.props.onColumnResize.call(void 0, c);
|
|
88
|
+
}
|
|
89
|
+
}, this.handleOnScroll = (e) => {
|
|
90
|
+
const t = e.currentTarget.scrollLeft, o = e.currentTarget.scrollTop, { columnVirtualization: s, scrollable: l, rowHeight: i = 0 } = this.props, c = i, g = 0;
|
|
91
|
+
let m = !1;
|
|
92
|
+
s && Math.abs(this.wrapperScrollLeft - t) > g && (this.wrapperScrollLeft = t, m = !0), l === "virtual" && Math.abs(this.wrapperScrollTop - o) > c && (this.wrapperScrollTop = o, m = !0), m && (this.updateOnScroll = !0, this.forceUpdate());
|
|
93
|
+
}, this.calculateSizes = (e) => {
|
|
94
|
+
if (!e || this.props.scrollable === "none")
|
|
95
|
+
return;
|
|
96
|
+
const t = Array.from(e.childNodes), o = t.find((i) => i.nodeName === "TABLE"), s = this.props.toolbar && t.find((i) => i.nodeType === 1 && i.classList.contains("k-grid-toolbar"));
|
|
97
|
+
let l = 0;
|
|
98
|
+
if (s) {
|
|
99
|
+
const i = s.style.boxSizing;
|
|
100
|
+
s.style.boxSizing = "border-box", l = parseFloat(String(window.getComputedStyle(s).height)) || s.offsetHeight, s.style.boxSizing = i, s.getAttribute("style") || s.removeAttribute("style");
|
|
101
|
+
}
|
|
102
|
+
this.tbodyOffsetTop = o.tBodies[0].offsetTop, ge(o, l);
|
|
103
|
+
}, this.itemChange = (e) => {
|
|
104
|
+
const t = this.props.onItemChange;
|
|
105
|
+
if (e.field === this.props.expandField) {
|
|
106
|
+
const o = this.props.onExpandChange;
|
|
107
|
+
if (o) {
|
|
108
|
+
const s = {
|
|
109
|
+
...this.getArguments(e.syntheticEvent),
|
|
110
|
+
dataItem: e.dataItem,
|
|
111
|
+
level: e.level,
|
|
112
|
+
value: e.value
|
|
113
|
+
};
|
|
114
|
+
o.call(void 0, s);
|
|
115
|
+
}
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (t) {
|
|
119
|
+
const o = {
|
|
120
|
+
...this.getArguments(e.syntheticEvent),
|
|
121
|
+
dataItem: e.dataItem,
|
|
122
|
+
level: e.level,
|
|
123
|
+
field: e.field,
|
|
124
|
+
value: e.value
|
|
125
|
+
};
|
|
126
|
+
t.call(void 0, o);
|
|
127
|
+
}
|
|
128
|
+
}, this.onHeaderSelectionChange = (e) => {
|
|
129
|
+
if (this.props.onHeaderSelectionChange) {
|
|
130
|
+
const t = {
|
|
131
|
+
field: e.field,
|
|
132
|
+
nativeEvent: e.syntheticEvent && e.syntheticEvent.nativeEvent,
|
|
133
|
+
syntheticEvent: e.syntheticEvent,
|
|
134
|
+
target: this,
|
|
135
|
+
dataItems: this.getLeafDataItems()
|
|
136
|
+
};
|
|
137
|
+
this.props.onHeaderSelectionChange.call(void 0, t);
|
|
138
|
+
}
|
|
139
|
+
}, this.selectionRelease = (e) => {
|
|
140
|
+
if (this.props.onSelectionChange) {
|
|
141
|
+
const t = {
|
|
142
|
+
syntheticEvent: void 0,
|
|
143
|
+
target: this,
|
|
144
|
+
selectedField: this.props.selectedField || "",
|
|
145
|
+
componentId: this._treeListId,
|
|
146
|
+
dataItems: this.getLeafDataItems(),
|
|
147
|
+
dataItem: null,
|
|
148
|
+
level: [],
|
|
149
|
+
...e
|
|
150
|
+
};
|
|
151
|
+
this.props.onSelectionChange.call(void 0, t);
|
|
152
|
+
}
|
|
153
|
+
}, this.sortChange = (e, t, o) => {
|
|
154
|
+
this.raiseDataEvent(this.props.onSortChange, { sort: t, field: o }, e);
|
|
155
|
+
}, this.headerFilterChange = (e, t, o) => {
|
|
156
|
+
this.raiseDataEvent(this.props.onFilterChange, { filter: t, field: o }, e);
|
|
157
|
+
}, this.filterChange = (e) => {
|
|
158
|
+
const { filter: t, field: o } = e;
|
|
159
|
+
this.raiseDataEvent(this.props.onFilterChange, { filter: t, field: o }, e.syntheticEvent);
|
|
160
|
+
}, this.columnMenuFilterChange = (e, t, o) => {
|
|
161
|
+
const { onColumnMenuFilterChange: s } = this.props;
|
|
162
|
+
if (!s)
|
|
163
|
+
return;
|
|
164
|
+
const l = {
|
|
165
|
+
syntheticEvent: e,
|
|
166
|
+
filter: t,
|
|
167
|
+
field: o,
|
|
168
|
+
target: this,
|
|
169
|
+
nativeEvent: e.nativeEvent
|
|
170
|
+
};
|
|
171
|
+
s.call(void 0, l);
|
|
172
|
+
}, this.expandChange = (e, t, o) => {
|
|
173
|
+
const { expandField: s, onExpandChange: l } = this.props;
|
|
174
|
+
if (s && l) {
|
|
175
|
+
const i = {
|
|
176
|
+
...this.getArguments(e),
|
|
177
|
+
dataItem: t,
|
|
178
|
+
level: o,
|
|
179
|
+
value: this.expanded(t)
|
|
180
|
+
};
|
|
181
|
+
l.call(void 0, i);
|
|
182
|
+
}
|
|
183
|
+
}, this.rowClick = (e, t) => {
|
|
184
|
+
if (this.props.onRowClick && e.target.nodeName === "TD") {
|
|
185
|
+
const o = {
|
|
186
|
+
dataItem: t.dataItem,
|
|
187
|
+
level: t.level,
|
|
188
|
+
...this.getArguments(e)
|
|
189
|
+
};
|
|
190
|
+
this.props.onRowClick.call(void 0, o);
|
|
191
|
+
}
|
|
192
|
+
}, this.rowDoubleClick = (e, t) => {
|
|
193
|
+
if (this.props.onRowDoubleClick && e.target.nodeName === "TD") {
|
|
194
|
+
const o = {
|
|
195
|
+
dataItem: t.dataItem,
|
|
196
|
+
level: t.level,
|
|
197
|
+
...this.getArguments(e)
|
|
198
|
+
};
|
|
199
|
+
this.props.onRowDoubleClick.call(void 0, o);
|
|
200
|
+
}
|
|
201
|
+
}, this.rowContextMenu = (e, t) => {
|
|
202
|
+
if (this.props.onRowContextMenu && e.target.nodeName === "TD") {
|
|
203
|
+
const o = {
|
|
204
|
+
dataItem: t.dataItem,
|
|
205
|
+
level: t.level,
|
|
206
|
+
...this.getArguments(e)
|
|
207
|
+
};
|
|
208
|
+
this.props.onRowContextMenu.call(void 0, o);
|
|
209
|
+
}
|
|
210
|
+
}, this.onPageChange = (e) => {
|
|
211
|
+
if (this.props.onPageChange) {
|
|
212
|
+
const t = {
|
|
213
|
+
...this.getArguments(e.syntheticEvent),
|
|
214
|
+
skip: e.skip,
|
|
215
|
+
take: e.take
|
|
216
|
+
};
|
|
217
|
+
this.props.onPageChange.call(void 0, t);
|
|
218
|
+
}
|
|
219
|
+
}, this.expandedSubItems = (e) => {
|
|
220
|
+
const t = [];
|
|
221
|
+
return this.expanded(e) && this.hasChildren(e) && t.push(...y(this.props.subItemsField, e)), t;
|
|
222
|
+
}, this.getLeafDataItems = () => this.flatData.map((e) => e.dataItem), this.expanded = (e) => !!y(this.props.expandField, e), this.hasChildren = (e) => !!y(this.props.subItemsField, e), J(ve), this.dragLogic = new te(this.columnReorder, H, H), this.columnResize = new oe(this.onResize.bind(this)), w.onConstructor({
|
|
223
|
+
navigatable: !!h.navigatable,
|
|
224
|
+
contextStateRef: this.contextStateRef,
|
|
225
|
+
navigationStateRef: this.navigationStateRef
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
get _treeListId() {
|
|
229
|
+
return this.props.id + "-treelist";
|
|
230
|
+
}
|
|
231
|
+
get document() {
|
|
232
|
+
if (Q)
|
|
233
|
+
return this.element && this.element.ownerDocument || document;
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* @hidden
|
|
237
|
+
*/
|
|
238
|
+
componentDidMount() {
|
|
239
|
+
this.calculateSizes(this.element), w.onComponentDidMount({
|
|
240
|
+
scope: this.element || void 0,
|
|
241
|
+
contextStateRef: this.contextStateRef,
|
|
242
|
+
navigationStateRef: this.navigationStateRef
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* @hidden
|
|
247
|
+
*/
|
|
248
|
+
getSnapshotBeforeUpdate() {
|
|
249
|
+
return w.onGetSnapshotBeforeUpdate({
|
|
250
|
+
document: this.document,
|
|
251
|
+
contextStateRef: this.contextStateRef,
|
|
252
|
+
navigationStateRef: this.navigationStateRef
|
|
253
|
+
}), null;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* @hidden
|
|
257
|
+
*/
|
|
258
|
+
componentDidUpdate(h) {
|
|
259
|
+
h.columns !== this.props.columns && this.calculateSizes(this.element), w.onComponentDidUpdate({
|
|
260
|
+
scope: this.element || void 0,
|
|
261
|
+
contextStateRef: this.contextStateRef,
|
|
262
|
+
navigationStateRef: this.navigationStateRef
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* @hidden
|
|
267
|
+
*/
|
|
268
|
+
componentWillUnmount() {
|
|
269
|
+
this.columnsMap = [], this.prevData = [], this.flattedData = [], this.updateOnScroll = !1, this.getExtendedColumn.clear(), this.getColumnsMap.clear();
|
|
270
|
+
}
|
|
271
|
+
/**
|
|
272
|
+
* @hidden
|
|
273
|
+
*/
|
|
274
|
+
render() {
|
|
275
|
+
const {
|
|
276
|
+
columns: h = [],
|
|
277
|
+
filterRow: e,
|
|
278
|
+
scrollable: t = "scrollable",
|
|
279
|
+
resizable: o = !1,
|
|
280
|
+
reorderable: s = !1,
|
|
281
|
+
skip: l,
|
|
282
|
+
take: i
|
|
283
|
+
} = this.props, c = h.some((a) => !!a.filter || !!a.filterCell) || e !== void 0, g = e || pe, m = O.getIdPrefix(this.navigationStateRef);
|
|
284
|
+
this.extendedColumn = this.getExtendedColumn(h, m), this.columnsMap = this.getColumnsMap(this.extendedColumn);
|
|
285
|
+
const C = this.extendedColumn.filter((a) => a.children.length === 0);
|
|
286
|
+
this.columnResize.columns = this.extendedColumn, this.columnResize.resizable = o, this.dragLogic.columns = this.extendedColumn, this.dragLogic.reorderable = s, this.dragLogic.groupable = !1;
|
|
287
|
+
const M = /* @__PURE__ */ r.createElement(
|
|
288
|
+
se,
|
|
289
|
+
{
|
|
290
|
+
headerRow: /* @__PURE__ */ r.createElement(
|
|
291
|
+
ne,
|
|
292
|
+
{
|
|
293
|
+
sort: this.props.sort,
|
|
294
|
+
sortable: this.props.sortable,
|
|
295
|
+
sortChange: this.sortChange,
|
|
296
|
+
selectionChange: this.onHeaderSelectionChange,
|
|
297
|
+
columns: this.extendedColumn,
|
|
298
|
+
columnsMap: this.columnsMap,
|
|
299
|
+
cellRender: this.props.headerCellRender,
|
|
300
|
+
columnResize: this.columnResize,
|
|
301
|
+
columnMenu: this.props.columnMenu,
|
|
302
|
+
columnMenuFilter: this.props.columnMenuFilter,
|
|
303
|
+
columnMenuFilterChange: this.columnMenuFilterChange,
|
|
304
|
+
pressHandler: this.dragLogic.pressHandler,
|
|
305
|
+
dragHandler: this.dragLogic.dragHandler,
|
|
306
|
+
releaseHandler: this.dragLogic.releaseHandler,
|
|
307
|
+
filterChange: this.headerFilterChange
|
|
308
|
+
}
|
|
309
|
+
),
|
|
310
|
+
filterRow: c && /* @__PURE__ */ r.createElement(
|
|
311
|
+
g,
|
|
312
|
+
{
|
|
313
|
+
columns: C,
|
|
314
|
+
filter: this.props.filter,
|
|
315
|
+
filterChange: this.filterChange,
|
|
316
|
+
sort: this.props.sort,
|
|
317
|
+
ariaRowIndex: this.columnsMap.length + 1
|
|
318
|
+
}
|
|
319
|
+
) || void 0,
|
|
320
|
+
columnResize: this.columnResize
|
|
321
|
+
}
|
|
322
|
+
), b = this.props.style || {}, { colSpans: D, hiddenColumns: B } = ae({
|
|
323
|
+
enabled: this.props.columnVirtualization,
|
|
324
|
+
columns: C,
|
|
325
|
+
scrollLeft: this.wrapperScrollLeft,
|
|
326
|
+
tableViewPortWidth: parseFloat((b.width || "").toString())
|
|
327
|
+
}), V = (a, u, I, E, k, x) => C.map((d, p) => {
|
|
328
|
+
if (B[p])
|
|
329
|
+
return null;
|
|
330
|
+
const S = d.id ? d.id : p, z = `${d.className ? d.className + " " : ""}${d.locked ? "k-grid-content-sticky" : ""}`, R = {
|
|
331
|
+
id: O.generateNavigatableId(`${I}-${String(p)}`, m),
|
|
332
|
+
colSpan: D[p],
|
|
333
|
+
dataItem: a.dataItem,
|
|
334
|
+
field: d.field,
|
|
335
|
+
format: d.format,
|
|
336
|
+
className: z || void 0,
|
|
337
|
+
render: this.props.cellRender,
|
|
338
|
+
onChange: this.itemChange,
|
|
339
|
+
selectionChange: this.props.onSelectionChange ? (v) => {
|
|
340
|
+
this.selectionChange({ event: v, item: a, columnIndex: p, dataIndex: k });
|
|
341
|
+
} : void 0,
|
|
342
|
+
level: a.level,
|
|
343
|
+
expandable: d.expandable,
|
|
344
|
+
expanded: E,
|
|
345
|
+
hasChildren: this.hasChildren(a.dataItem),
|
|
346
|
+
onExpandChange: this.expandChange,
|
|
347
|
+
colIndex: p,
|
|
348
|
+
ariaColumnIndex: d.ariaColumnIndex,
|
|
349
|
+
style: d.left !== void 0 && {
|
|
350
|
+
left: d.left,
|
|
351
|
+
right: d.right,
|
|
352
|
+
borderRightWidth: d.rightBorder ? "1px" : ""
|
|
353
|
+
} || {},
|
|
354
|
+
isSelected: Array.isArray(x) && x.indexOf(p) > -1
|
|
355
|
+
};
|
|
356
|
+
return u && d.editCell ? /* @__PURE__ */ r.createElement(d.editCell, { key: S, ...R, onChange: this.itemChange }) : d.cell ? /* @__PURE__ */ r.createElement(d.cell, { key: S, ...R }) : /* @__PURE__ */ r.createElement(me, { key: S, ...R });
|
|
357
|
+
});
|
|
358
|
+
let f = this.flatData;
|
|
359
|
+
const T = f.length;
|
|
360
|
+
l !== void 0 && i !== void 0 && (f = f.slice(l, l + i)), t === "virtual" && (f = ue({
|
|
361
|
+
rows: f,
|
|
362
|
+
tableViewPortHeight: parseFloat((b.height || b.maxHeight || "").toString()),
|
|
363
|
+
scrollTop: this.wrapperScrollTop
|
|
364
|
+
}), this.updateOnScroll = !1);
|
|
365
|
+
const U = f.map((a) => a.level), $ = this.columnsMap.length + (c ? 1 : 0) + 1, W = f.length > 0 && f.map((a, u) => {
|
|
366
|
+
const I = y(this.props.editField, a.dataItem), E = this.props.dataItemKey && X(this.props.dataItemKey)(a.dataItem), k = String(E || a.level.join(".")), x = this.expanded(a.dataItem), d = this.props.selectedField ? y(this.props.selectedField, a.dataItem) : void 0, p = {
|
|
367
|
+
key: k,
|
|
368
|
+
level: a.level,
|
|
369
|
+
levels: U,
|
|
370
|
+
dataItem: a.dataItem,
|
|
371
|
+
selectedField: this.props.selectedField,
|
|
372
|
+
rowHeight: t === "virtual" ? a.height : this.props.rowHeight,
|
|
373
|
+
render: this.props.rowRender,
|
|
374
|
+
onDrop: this.onRowDrop,
|
|
375
|
+
onDrag: this.onRowDrag,
|
|
376
|
+
onClick: (v) => this.rowClick(v, a),
|
|
377
|
+
onDoubleClick: (v) => this.rowDoubleClick(v, a),
|
|
378
|
+
onContextMenu: (v) => this.rowContextMenu(v, a),
|
|
379
|
+
isAltRow: u % 2 !== 0,
|
|
380
|
+
expanded: x,
|
|
381
|
+
rowIndex: u,
|
|
382
|
+
ariaRowIndex: $ + u,
|
|
383
|
+
ariaSetSize: a.levelCount,
|
|
384
|
+
ariaPosInSet: a.level[a.level.length - 1] + 1,
|
|
385
|
+
isSelected: typeof d == "boolean" && d
|
|
386
|
+
}, S = this.props.editRow, z = this.props.row || Ce, R = V(a, I, k, x, u, d);
|
|
387
|
+
return I && S ? /* @__PURE__ */ r.createElement(S, { ...p, key: p.key }, R) : /* @__PURE__ */ r.createElement(z, { ...p, key: p.key }, R);
|
|
388
|
+
}) || /* @__PURE__ */ r.createElement("tr", { className: "k-table-row k-grid-norecords" }, /* @__PURE__ */ r.createElement("td", { colSpan: C.length }, this.props.noRecords || /* @__PURE__ */ r.createElement(fe, null))), j = (a) => this.props.sort && this.props.sort.some((u) => u.field === a), G = /* @__PURE__ */ r.createElement("colgroup", { ref: (a) => {
|
|
389
|
+
this.columnResize.colGroupMain = a;
|
|
390
|
+
} }, C.map(
|
|
391
|
+
(a, u) => /* @__PURE__ */ r.createElement(
|
|
392
|
+
"col",
|
|
393
|
+
{
|
|
394
|
+
key: u.toString(),
|
|
395
|
+
className: j(a.field) ? "k-sorted" : void 0,
|
|
396
|
+
style: a.width !== void 0 ? { width: a.width } : void 0
|
|
397
|
+
}
|
|
398
|
+
)
|
|
399
|
+
)), _ = this.props.columnVirtualization || this.props.scrollable === "virtual", q = this.props.selectable && this.props.selectable.drag ? "none" : void 0, L = this.props.tableProps || {};
|
|
400
|
+
return /* @__PURE__ */ r.createElement(K.Provider, { value: this.contextStateRef.current }, /* @__PURE__ */ r.createElement(
|
|
401
|
+
"div",
|
|
402
|
+
{
|
|
403
|
+
id: this.props.id,
|
|
404
|
+
style: this.props.style,
|
|
405
|
+
className: Y(
|
|
406
|
+
"k-grid k-grid-md",
|
|
407
|
+
"k-treelist",
|
|
408
|
+
this.props.className,
|
|
409
|
+
{ "k-treelist-scrollable": t !== "none" }
|
|
410
|
+
),
|
|
411
|
+
ref: (a) => this.element = a,
|
|
412
|
+
onScroll: _ ? this.handleOnScroll : void 0,
|
|
413
|
+
onKeyDown: this.onKeyDown,
|
|
414
|
+
onFocus: this.onFocus,
|
|
415
|
+
"aria-rowcount": T,
|
|
416
|
+
"aria-colcount": C.length,
|
|
417
|
+
role: "treegrid",
|
|
418
|
+
...ie
|
|
419
|
+
},
|
|
420
|
+
this.props.toolbar,
|
|
421
|
+
/* @__PURE__ */ r.createElement(
|
|
422
|
+
le,
|
|
423
|
+
{
|
|
424
|
+
selectable: this.props.selectable,
|
|
425
|
+
onRelease: this.selectionRelease
|
|
426
|
+
},
|
|
427
|
+
/* @__PURE__ */ r.createElement(
|
|
428
|
+
"table",
|
|
429
|
+
{
|
|
430
|
+
className: "k-table k-table-md k-grid-table",
|
|
431
|
+
...L,
|
|
432
|
+
style: { ...L.style || {}, userSelect: q },
|
|
433
|
+
role: "presentation"
|
|
434
|
+
},
|
|
435
|
+
G,
|
|
436
|
+
M,
|
|
437
|
+
/* @__PURE__ */ r.createElement("tbody", { className: "k-table-tbody", ...re, role: "presentation" }, W)
|
|
438
|
+
)
|
|
439
|
+
),
|
|
440
|
+
this.props.pager && /* @__PURE__ */ r.createElement(
|
|
441
|
+
this.props.pager,
|
|
442
|
+
{
|
|
443
|
+
className: "k-grid-pager",
|
|
444
|
+
total: T,
|
|
445
|
+
skip: l,
|
|
446
|
+
take: i,
|
|
447
|
+
onPageChange: this.onPageChange
|
|
448
|
+
}
|
|
449
|
+
),
|
|
450
|
+
s && /* @__PURE__ */ r.createElement(r.Fragment, null, /* @__PURE__ */ r.createElement(he, { ref: this.dragLogic.refDropElementClue }), /* @__PURE__ */ r.createElement(de, { ref: this.dragLogic.refDragElementClue }))
|
|
451
|
+
));
|
|
452
|
+
}
|
|
453
|
+
get columns() {
|
|
454
|
+
const h = this.extendedColumn.filter((t) => t.declarationIndex >= 0 && t.parentIndex === -1), e = (t) => (t.sort((o, s) => o.declarationIndex - s.declarationIndex), t.map((o) => {
|
|
455
|
+
const {
|
|
456
|
+
declarationIndex: s,
|
|
457
|
+
parentIndex: l,
|
|
458
|
+
depth: i,
|
|
459
|
+
colSpan: c,
|
|
460
|
+
rowSpan: g,
|
|
461
|
+
index: m,
|
|
462
|
+
kFirst: C,
|
|
463
|
+
groupable: M,
|
|
464
|
+
children: b,
|
|
465
|
+
...D
|
|
466
|
+
} = o;
|
|
467
|
+
return b.length ? {
|
|
468
|
+
children: e(b),
|
|
469
|
+
...D
|
|
470
|
+
} : D;
|
|
471
|
+
}));
|
|
472
|
+
return e(h);
|
|
473
|
+
}
|
|
474
|
+
get flatData() {
|
|
475
|
+
const { data: h = [], rowHeight: e = 0 } = this.props;
|
|
476
|
+
let t = 0;
|
|
477
|
+
const o = (l) => {
|
|
478
|
+
const i = { height: e, offsetTop: t };
|
|
479
|
+
return t += i.height, i;
|
|
480
|
+
};
|
|
481
|
+
let s = this.updateOnScroll && this.prevData === h && this.tbodyOffsetTop > 0 && this.flattedData.length ? this.flattedData : ce(h, this.expandedSubItems, o);
|
|
482
|
+
return this.prevData = h, this.flattedData = s, s;
|
|
483
|
+
}
|
|
484
|
+
selectionChange(h) {
|
|
485
|
+
if (this.props.onSelectionChange) {
|
|
486
|
+
const { event: e, item: t, dataIndex: o, columnIndex: s } = h, { mode: l, cell: i } = A(this.props.selectable), c = {
|
|
487
|
+
...this.getArguments(e.syntheticEvent),
|
|
488
|
+
dataItem: t.dataItem,
|
|
489
|
+
level: t.level,
|
|
490
|
+
startColIndex: s,
|
|
491
|
+
endColIndex: s,
|
|
492
|
+
startRowIndex: o,
|
|
493
|
+
endRowIndex: o,
|
|
494
|
+
dataItems: this.getLeafDataItems(),
|
|
495
|
+
altKey: !1,
|
|
496
|
+
ctrlKey: !1,
|
|
497
|
+
shiftKey: !1,
|
|
498
|
+
metaKey: !1,
|
|
499
|
+
mode: l,
|
|
500
|
+
cell: i,
|
|
501
|
+
isDrag: !1,
|
|
502
|
+
componentId: this._treeListId,
|
|
503
|
+
selectedField: this.props.selectedField || ""
|
|
504
|
+
};
|
|
505
|
+
this.props.onSelectionChange.call(void 0, c);
|
|
506
|
+
}
|
|
507
|
+
}
|
|
508
|
+
raiseDataEvent(h, e, t) {
|
|
509
|
+
const o = this.props.onDataStateChange;
|
|
510
|
+
if (h)
|
|
511
|
+
h.call(void 0, { ...this.getArguments(t), ...e });
|
|
512
|
+
else if (o) {
|
|
513
|
+
const s = {
|
|
514
|
+
...this.getArguments(t),
|
|
515
|
+
dataState: { ...this.getDataState(), ...e }
|
|
516
|
+
};
|
|
517
|
+
o.call(void 0, s);
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
getDataState() {
|
|
521
|
+
return {
|
|
522
|
+
filter: this.props.filter,
|
|
523
|
+
sort: this.props.sort
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
getArguments(h) {
|
|
527
|
+
return {
|
|
528
|
+
nativeEvent: h && h.nativeEvent,
|
|
529
|
+
syntheticEvent: h,
|
|
530
|
+
target: this
|
|
531
|
+
};
|
|
532
|
+
}
|
|
533
|
+
};
|
|
534
|
+
F.propTypes = {
|
|
535
|
+
data: n.array,
|
|
536
|
+
resizable: n.bool,
|
|
537
|
+
reorderable: n.bool,
|
|
538
|
+
sortable: n.oneOfType([
|
|
539
|
+
n.bool,
|
|
540
|
+
n.shape({
|
|
541
|
+
mode: n.oneOf(["single", "multiple"]),
|
|
542
|
+
allowUnsort: n.bool
|
|
543
|
+
})
|
|
544
|
+
]),
|
|
545
|
+
onSortChange: n.func,
|
|
546
|
+
sort: n.array,
|
|
547
|
+
columns: n.arrayOf(n.object),
|
|
548
|
+
columnVirtualization: n.bool,
|
|
549
|
+
filter: n.array,
|
|
550
|
+
onFilterChange: n.func,
|
|
551
|
+
filterRow: n.any,
|
|
552
|
+
toolbar: n.any,
|
|
553
|
+
noRecords: n.any,
|
|
554
|
+
onExpandChange: n.func,
|
|
555
|
+
expandField: n.string,
|
|
556
|
+
subItemsField: n.string,
|
|
557
|
+
selectedField: n.string,
|
|
558
|
+
onSelectionChange: n.func,
|
|
559
|
+
onHeaderSelectionChange: n.func,
|
|
560
|
+
onRowClick: n.func,
|
|
561
|
+
onItemChange: n.func,
|
|
562
|
+
editField: n.string,
|
|
563
|
+
scrollable: n.oneOf(["none", "scrollable", "virtual"]),
|
|
564
|
+
rowHeight: n.number,
|
|
565
|
+
style: n.object,
|
|
566
|
+
tableProps: n.object,
|
|
567
|
+
pager: n.any,
|
|
568
|
+
skip: n.number,
|
|
569
|
+
take: n.number,
|
|
570
|
+
onPageChange: n.func,
|
|
571
|
+
onDataStateChange: n.func,
|
|
572
|
+
onColumnResize: n.func,
|
|
573
|
+
onColumnReorder: n.func,
|
|
574
|
+
dataItemKey: n.string,
|
|
575
|
+
navigatable: n.bool
|
|
576
|
+
}, F.contextType = K;
|
|
577
|
+
let P = F;
|
|
578
|
+
export {
|
|
579
|
+
P as TreeList
|
|
580
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("react"),c=require("@progress/kendo-react-intl"),o=require("./messages/index.js");function a(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const n=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,n.get?n:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const u=a(s);class i extends u.Component{render(){return this.props.children||c.provideLocalizationService(this).toLanguageString(o.noRecords,o.messages[o.noRecords])}}c.registerForLocalization(i);exports.TreeListNoRecords=i;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";
|
|
9
|
+
import * as r from "react";
|
|
10
|
+
import { provideLocalizationService as o, registerForLocalization as t } from "@progress/kendo-react-intl";
|
|
11
|
+
import { noRecords as e, messages as i } from "./messages/index.mjs";
|
|
12
|
+
class s extends r.Component {
|
|
13
|
+
/**
|
|
14
|
+
* @hidden
|
|
15
|
+
*/
|
|
16
|
+
render() {
|
|
17
|
+
return this.props.children || o(this).toLanguageString(e, i[e]);
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
t(s);
|
|
21
|
+
export {
|
|
22
|
+
s as TreeListNoRecords
|
|
23
|
+
};
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
*-------------------------------------------------------------------------------------------
|
|
4
|
+
* Copyright © 2024 Progress Software Corporation. All rights reserved.
|
|
5
|
+
* Licensed under commercial license. See LICENSE.md in the package root for more information
|
|
6
|
+
*-------------------------------------------------------------------------------------------
|
|
7
|
+
*/
|
|
8
|
+
"use client";"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const a=require("react");function c(e){const r=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const t in e)if(t!=="default"){const o=Object.getOwnPropertyDescriptor(e,t);Object.defineProperty(r,t,o.get?o:{enumerable:!0,get:()=>e[t]})}}return r.default=e,Object.freeze(r)}const n=c(a);class l extends n.Component{render(){return n.createElement("div",{className:"k-toolbar k-toolbar-md k-grid-toolbar"},this.props.children)}}exports.TreeListToolbar=l;
|