@progress/kendo-react-gantt 7.2.4-develop.2 → 7.2.4-develop.4
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/Gantt.js +8 -0
- package/Gantt.mjs +411 -0
- package/cells/FilterCells/GanttBooleanFilter.js +8 -0
- package/cells/FilterCells/GanttBooleanFilter.mjs +27 -0
- package/cells/FilterCells/GanttDateFilter.js +8 -0
- package/cells/FilterCells/GanttDateFilter.mjs +27 -0
- package/cells/FilterCells/GanttNumericFilter.js +8 -0
- package/cells/FilterCells/GanttNumericFilter.mjs +27 -0
- package/cells/FilterCells/GanttTextFilter.js +8 -0
- package/cells/FilterCells/GanttTextFilter.mjs +27 -0
- package/cells/FilterCells/utils.js +8 -0
- package/cells/FilterCells/utils.mjs +59 -0
- package/components/BaseView.js +8 -0
- package/components/BaseView.mjs +239 -0
- package/components/GanttDependency.js +8 -0
- package/components/GanttDependency.mjs +58 -0
- package/components/GanttTask.js +8 -0
- package/components/GanttTask.mjs +169 -0
- package/components/GanttTreelist.js +8 -0
- package/components/GanttTreelist.mjs +571 -0
- package/components/toolbar/AddButton.js +8 -0
- package/components/toolbar/AddButton.mjs +56 -0
- package/components/toolbar/Toolbar.js +8 -0
- package/components/toolbar/Toolbar.mjs +34 -0
- package/components/toolbar/view-selector/ViewSelector.js +8 -0
- package/components/toolbar/view-selector/ViewSelector.mjs +32 -0
- package/components/toolbar/view-selector/ViewSelectorItem.js +8 -0
- package/components/toolbar/view-selector/ViewSelectorItem.mjs +39 -0
- package/components/toolbar/view-selector/ViewSelectorList.js +8 -0
- package/components/toolbar/view-selector/ViewSelectorList.mjs +36 -0
- package/constants/index.js +8 -0
- package/constants/index.mjs +52 -0
- package/context/GanttContext.js +8 -0
- package/context/GanttContext.mjs +103 -0
- package/context/GanttViewContext.js +8 -0
- package/context/GanttViewContext.mjs +38 -0
- package/dist/cdn/js/kendo-react-gantt.js +8 -5
- package/editors/FormDateTimePicker.js +8 -0
- package/editors/FormDateTimePicker.mjs +29 -0
- package/editors/FormDropDownList.js +8 -0
- package/editors/FormDropDownList.mjs +62 -0
- package/editors/FormInput.js +8 -0
- package/editors/FormInput.mjs +29 -0
- package/editors/FormNumericTextBox.js +8 -0
- package/editors/FormNumericTextBox.mjs +30 -0
- package/editors/GanttEditor.js +8 -0
- package/editors/GanttEditor.mjs +260 -0
- package/editors/GanttEditorPredecessors.js +8 -0
- package/editors/GanttEditorPredecessors.mjs +121 -0
- package/editors/GanttEditorSuccessors.js +8 -0
- package/editors/GanttEditorSuccessors.mjs +121 -0
- package/editors/GanttForm.js +8 -0
- package/editors/GanttForm.mjs +113 -0
- package/editors/GanttRemoveDialog.js +8 -0
- package/editors/GanttRemoveDialog.mjs +49 -0
- package/hooks/useControlledState.js +8 -0
- package/hooks/useControlledState.mjs +21 -0
- package/hooks/useDictionaryStore.js +8 -0
- package/hooks/useDictionaryStore.mjs +30 -0
- package/hooks/useGanttTask.js +8 -0
- package/hooks/useGanttTask.mjs +35 -0
- package/index.d.mts +1394 -5
- package/index.d.ts +1394 -32
- package/index.js +8 -5
- package/index.mjs +50 -3087
- package/interfaces/DependencyType.js +8 -0
- package/interfaces/DependencyType.mjs +12 -0
- package/messages/index.js +8 -0
- package/messages/index.mjs +137 -0
- package/package-metadata.js +8 -0
- package/package-metadata.mjs +19 -0
- package/package.json +12 -12
- package/rows/GanttRow.js +8 -0
- package/rows/GanttRow.mjs +13 -0
- package/utils/data-operations.js +8 -0
- package/utils/data-operations.mjs +183 -0
- package/utils/index.js +8 -0
- package/utils/index.mjs +263 -0
- package/views/GanttDayView.js +8 -0
- package/views/GanttDayView.mjs +94 -0
- package/views/GanttMonthView.js +8 -0
- package/views/GanttMonthView.mjs +82 -0
- package/views/GanttWeekView.js +8 -0
- package/views/GanttWeekView.mjs +81 -0
- package/views/GanttYearView.js +8 -0
- package/views/GanttYearView.mjs +73 -0
- package/Gantt.d.ts +0 -29
- package/cells/FilterCells/GanttBooleanFilter.d.ts +0 -14
- package/cells/FilterCells/GanttDateFilter.d.ts +0 -14
- package/cells/FilterCells/GanttNumericFilter.d.ts +0 -14
- package/cells/FilterCells/GanttTextFilter.d.ts +0 -14
- package/cells/FilterCells/utils.d.ts +0 -42
- package/components/BaseView.d.ts +0 -24
- package/components/GanttDependency.d.ts +0 -13
- package/components/GanttTask.d.ts +0 -16
- package/components/GanttTreelist.d.ts +0 -143
- package/components/toolbar/AddButton.d.ts +0 -16
- package/components/toolbar/Toolbar.d.ts +0 -25
- package/components/toolbar/view-selector/ViewSelector.d.ts +0 -28
- package/components/toolbar/view-selector/ViewSelectorItem.d.ts +0 -15
- package/components/toolbar/view-selector/ViewSelectorList.d.ts +0 -7
- package/constants/index.d.ts +0 -57
- package/context/GanttContext.d.ts +0 -125
- package/context/GanttViewContext.d.ts +0 -44
- package/editors/FormDateTimePicker.d.ts +0 -9
- package/editors/FormDropDownList.d.ts +0 -9
- package/editors/FormInput.d.ts +0 -9
- package/editors/FormNumericTextBox.d.ts +0 -9
- package/editors/GanttEditor.d.ts +0 -21
- package/editors/GanttEditorPredecessors.d.ts +0 -25
- package/editors/GanttEditorSuccessors.d.ts +0 -25
- package/editors/GanttForm.d.ts +0 -70
- package/editors/GanttRemoveDialog.d.ts +0 -48
- package/hooks/useControlledState.d.ts +0 -8
- package/hooks/useDictionaryStore.d.ts +0 -22
- package/hooks/useGanttTask.d.ts +0 -8
- package/interfaces/AddDirection.d.ts +0 -10
- package/interfaces/DataItem.d.ts +0 -10
- package/interfaces/DateRange.d.ts +0 -12
- package/interfaces/DependencyModelFields.d.ts +0 -29
- package/interfaces/DependencyType.d.ts +0 -19
- package/interfaces/GanttBaseProps.d.ts +0 -66
- package/interfaces/GanttCellProps.d.ts +0 -45
- package/interfaces/GanttColumnProps.d.ts +0 -40
- package/interfaces/GanttDependency.d.ts +0 -30
- package/interfaces/GanttDependencyModelFields.d.ts +0 -29
- package/interfaces/GanttFilterCellProps.d.ts +0 -10
- package/interfaces/GanttFilterOperator.d.ts +0 -10
- package/interfaces/GanttHeaderCellProps.d.ts +0 -10
- package/interfaces/GanttNoRecordsProps.d.ts +0 -13
- package/interfaces/GanttProps.d.ts +0 -151
- package/interfaces/GanttRowProps.d.ts +0 -95
- package/interfaces/GanttSelectableSettings.d.ts +0 -22
- package/interfaces/GanttSlotType.d.ts +0 -8
- package/interfaces/GanttSortSettings.d.ts +0 -17
- package/interfaces/GanttTaskModelFields.d.ts +0 -64
- package/interfaces/GanttView.d.ts +0 -80
- package/interfaces/GanttViewTimelineHeaderCellProps.d.ts +0 -23
- package/interfaces/Rectangle.d.ts +0 -10
- package/interfaces/Slot.d.ts +0 -16
- package/interfaces/TaskModelFields.d.ts +0 -20
- package/interfaces/events.d.ts +0 -298
- package/messages/index.d.ts +0 -194
- package/package-metadata.d.ts +0 -9
- package/rows/GanttRow.d.ts +0 -8
- package/utils/data-operations.d.ts +0 -47
- package/utils/index.d.ts +0 -182
- package/views/GanttDayView.d.ts +0 -21
- package/views/GanttMonthView.d.ts +0 -17
- package/views/GanttWeekView.d.ts +0 -17
- package/views/GanttYearView.d.ts +0 -17
|
@@ -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 Pe=require("react"),u=require("../context/GanttContext.js"),Ye=require("../context/GanttViewContext.js"),qe=require("./GanttTask.js"),Oe=require("../hooks/useDictionaryStore.js"),Xe=require("./GanttDependency.js"),F=require("../utils/index.js"),O=require("@progress/kendo-react-data-tools"),R=require("../constants/index.js"),We=require("./GanttTreelist.js"),M=require("@progress/kendo-react-common");function Ve(d){const f=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(d){for(const a in d)if(a!=="default"){const D=Object.getOwnPropertyDescriptor(d,a);Object.defineProperty(f,a,D.get?D:{enumerable:!0,get:()=>d[a]})}}return f.default=d,Object.freeze(f)}const e=Ve(Pe),X=e.forwardRef((d,f)=>{const{slotLevels:a,slotWidth:D,timelineHeaderCell:W}=d,{columns:A,noRecords:V,resizable:v,reorderable:z,sortable:$,sort:j,filter:K,columnMenuFilter:B,columnMenu:U,navigatable:J,row:Q,selectable:Z}=u.useGanttPropsContext(),{onDataStateChange:ee,onSortChange:te,onFilterChange:ne,onColumnMenuFilterChange:re,onExpandChange:oe,onRowClick:se,onRowDoubleClick:le,onRowContextMenu:ce,onColumnResize:k,onColumnReorder:ae,onDependencyCreate:b,onKeyDown:ie,onSelectionChange:ue,onHeaderSelectionChange:de}=u.useGanttEventsContext(),fe=u.useGanttRowHeightContext(),me=u.useGanttToolbarHeightContext(),m=u.useGanttTaskModelFieldsContext(),pe=u.useGanttDependencyModelFieldsContext(),H=u.useGanttTaskDataContext(),Ce=u.useGanttDependencyDataContext(),I=e.useRef(null),N=e.useRef(null),p=e.useRef(null),h=e.useRef(null),_=e.useRef(0),P=e.useRef(M.useId()),ge=e.useRef(M.useId()),c=e.useRef(null),Y=e.useRef(null),Re=e.useCallback(t=>{p.current&&p.current.scrollIntoView(t)},[]);e.useImperativeHandle(Y,()=>({scrollIntoView:Re})),e.useImperativeHandle(f,()=>Y.current);const E=e.useRef(0),y=e.useRef(0),T=e.useRef(0),x=e.useRef(0),C=e.useRef(null),L=e.useRef(null),[g,G]=e.useState(null),De=F.getTimelineHeader(a,I,W),be=F.getTimelineContent(a,N),w=F.getTimelineWidth(a,D),{extendedColumns:he,columnsWidth:Ee,columnsMap:ye}=e.useMemo(()=>{const t=O.readColumns([...A,{title:"",sortable:!1,resizable:!1,reorderable:!1,width:w,headerCell:()=>De,cell:qe.GanttTask,orderIndex:Number.MAX_SAFE_INTEGER,navigatable:!1}],{prevId:0,idPrefix:P.current});let r=0;return t.forEach((n,o,l)=>{const s=o+1===l.length,i=n.children.length===0;s?n.isAccessible=!1:(n.locked=!0,i&&(n.width=n.width||R.DEFAULT_COLUMN_WIDTH)),i&&(r+=parseFloat(String(n.width)))}),{extendedColumns:t,columnsWidth:r,columnsMap:O.mapColumns(t)}},[A,w]),[Te,xe]=Oe.useDictionaryStore(),S=e.useCallback(()=>I.current&&I.current.parentElement,[]),q=()=>{const t=S(),r=N.current,n=p.current&&p.current.tbodyElement;if(!t||!r||!n)return;const o=n.offsetTop,l=t.offsetLeft,s=w;r.style.top=o+"px",r.style.left=l+"px",r.style.width=s+"px",r.style.height=n.offsetHeight+"px"},we=()=>{const t=S();t&&(_.current=t.offsetLeft)};e.useEffect(q),e.useEffect(we);const ke=e.useCallback(t=>{if(!h.current)return;const r=t.columns.slice(0,t.columns.length-1);if(t.end)h.current.style.left="0px";else{const n=S();if(!n)return;h.current.style.left=n.offsetLeft-_.current+"px",q()}k({...t,columns:r})},[k]),He=e.useCallback(t=>{const r=t.columns.slice(0,t.columns.length-1);ae({...t,columns:r})},[k]),Ie=e.useCallback(t=>{const n=(c.current&&c.current.ownerDocument?c.current.ownerDocument:document).elementFromPoint(t.clientX,t.clientY),o=c.current;if(!n||!n.parentElement||!o)return;const l=o.parentElement,s=o.firstElementChild;if(!l||!s)return;const i=n.getAttribute(R.DEPENDENCY_DRAG_HANDLE);if(i){const Se=o.offsetTop,Fe=o.offsetLeft,Me=l.offsetTop,Ae=l.offsetLeft,Ne=s.scrollTop,_e=s.scrollLeft;T.current=Fe+Ae,x.current=Se+Me,E.current=t.clientX-T.current+_e,y.current=t.clientY-x.current+Ne,C.current=n.parentElement.getAttribute(R.TASK_ID_ATT),L.current=i}},[]),Le=e.useCallback(t=>{const r=c.current;if(!r)return;const n=r.firstElementChild;if(!n)return;const o=n.scrollTop,l=n.scrollLeft,s=t.clientX-T.current+l,i=t.clientY-x.current+o;Math.abs(E.current-s)<10&&Math.abs(y.current-i)<10||G({startX:E.current,startY:y.current,endX:s,endY:i})},[]),Ge=e.useCallback(t=>{const n=(c.current&&c.current.ownerDocument?c.current.ownerDocument:document).elementFromPoint(t.clientX,t.clientY);if(!n||!n.parentElement)return;const o=n.parentElement.getAttribute(R.TASK_ID_ATT),l=n.getAttribute(R.DEPENDENCY_DRAG_HANDLE);if(l&&o!==C.current&&b){let s;L.current==="start"?s=l==="start"?3:2:s=l==="start"?1:0,b({fromId:C.current,toId:o,type:s})}E.current=0,y.current=0,T.current=0,x.current=0,C.current=null,L.current=null,G(null)},[b,G]);return e.createElement(Ye.GanttViewContext,{tasksStore:[Te,xe],timelineWidth:w,dependencyDrag:{isEnabled:!!b,draggedId:C.current,onDependencyHandlePress:Ie,onDependencyHandleDrag:Le,onDependencyHandleRelease:Ge}},e.createElement("div",{className:"k-gantt-content",ref:c,style:{height:`calc(100% - ${me}px)`}},e.createElement(We.GanttTreeList,{treelistId:ge.current,ref:p,extendedColumns:he,columnsMap:ye,dataItemKey:m.id,data:H,idPrefix:P.current,navigatable:J,expandField:m.isExpanded,subItemsField:m.children,editField:m.isInEdit,selectedField:m.isSelected,onDataStateChange:ee,onSortChange:te,onFilterChange:ne,onExpandChange:oe,onRowClick:se,onRowDoubleClick:le,onRowContextMenu:ce,onColumnResize:ke,onColumnReorder:He,onColumnMenuFilterChange:re,onKeyDown:ie,onSelectionChange:ue,onHeaderSelectionChange:de,tableProps:{style:{width:Ee},className:"k-table k-table-md k-table-layout-fixed"},noRecords:V,rowHeight:fe,resizable:v,reorderable:z,sortable:$,sort:j,filter:K,columnMenuFilter:B,columnMenu:U,row:Q,selectable:Z,afterContent:e.createElement(e.Fragment,null,e.createElement("svg",{className:"k-gantt-dependencies-svg",ref:h,style:{left:0,top:0}},Ce.map(t=>e.createElement(Xe.GanttDependency,{key:M.getter(pe.id)(t),dependency:t}))),e.createElement("svg",{className:"k-gantt-dependencies-svg",style:{left:0,top:0,zIndex:3}},g&&e.createElement("polyline",{points:`${g.startX},${g.startY} ${g.endX},${g.endY}`})),H&&H.length?be:null)})))});X.displayName="KendoReactGanttBaseView";exports.BaseView=X;
|
|
@@ -0,0 +1,239 @@
|
|
|
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 e from "react";
|
|
10
|
+
import { useGanttPropsContext as Ae, useGanttEventsContext as Ne, useGanttRowHeightContext as Xe, useGanttToolbarHeightContext as Ye, useGanttTaskModelFieldsContext as Pe, useGanttDependencyModelFieldsContext as We, useGanttTaskDataContext as _e, useGanttDependencyDataContext as ze } from "../context/GanttContext.mjs";
|
|
11
|
+
import { GanttViewContext as Ve } from "../context/GanttViewContext.mjs";
|
|
12
|
+
import { GanttTask as ve } from "./GanttTask.mjs";
|
|
13
|
+
import { useDictionaryStore as Oe } from "../hooks/useDictionaryStore.mjs";
|
|
14
|
+
import { GanttDependency as $e } from "./GanttDependency.mjs";
|
|
15
|
+
import { getTimelineHeader as Ke, getTimelineContent as Be, getTimelineWidth as Ue } from "../utils/index.mjs";
|
|
16
|
+
import { readColumns as je, mapColumns as qe } from "@progress/kendo-react-data-tools";
|
|
17
|
+
import { DEFAULT_COLUMN_WIDTH as Je, DEPENDENCY_DRAG_HANDLE as S, TASK_ID_ATT as A } from "../constants/index.mjs";
|
|
18
|
+
import { GanttTreeList as Qe } from "./GanttTreelist.mjs";
|
|
19
|
+
import { useId as N, getter as Ze } from "@progress/kendo-react-common";
|
|
20
|
+
const et = e.forwardRef((X, Y) => {
|
|
21
|
+
const { slotLevels: E, slotWidth: P, timelineHeaderCell: W } = X, {
|
|
22
|
+
columns: k,
|
|
23
|
+
noRecords: _,
|
|
24
|
+
resizable: z,
|
|
25
|
+
reorderable: V,
|
|
26
|
+
sortable: v,
|
|
27
|
+
sort: O,
|
|
28
|
+
filter: $,
|
|
29
|
+
columnMenuFilter: K,
|
|
30
|
+
columnMenu: B,
|
|
31
|
+
navigatable: U,
|
|
32
|
+
row: j,
|
|
33
|
+
selectable: q
|
|
34
|
+
} = Ae(), {
|
|
35
|
+
onDataStateChange: J,
|
|
36
|
+
onSortChange: Q,
|
|
37
|
+
onFilterChange: Z,
|
|
38
|
+
onColumnMenuFilterChange: ee,
|
|
39
|
+
onExpandChange: te,
|
|
40
|
+
onRowClick: ne,
|
|
41
|
+
onRowDoubleClick: re,
|
|
42
|
+
onRowContextMenu: oe,
|
|
43
|
+
onColumnResize: b,
|
|
44
|
+
onColumnReorder: se,
|
|
45
|
+
onDependencyCreate: m,
|
|
46
|
+
onKeyDown: le,
|
|
47
|
+
onSelectionChange: ce,
|
|
48
|
+
onHeaderSelectionChange: ae
|
|
49
|
+
} = Ne(), ie = Xe(), ue = Ye(), i = Pe(), fe = We(), y = _e(), de = ze(), x = e.useRef(null), I = e.useRef(null), u = e.useRef(null), p = e.useRef(null), L = e.useRef(0), F = e.useRef(N()), me = e.useRef(N()), c = e.useRef(null), G = e.useRef(null), pe = e.useCallback(
|
|
50
|
+
(t) => {
|
|
51
|
+
u.current && u.current.scrollIntoView(t);
|
|
52
|
+
},
|
|
53
|
+
[]
|
|
54
|
+
);
|
|
55
|
+
e.useImperativeHandle(G, () => ({ scrollIntoView: pe })), e.useImperativeHandle(Y, () => G.current);
|
|
56
|
+
const C = e.useRef(0), g = e.useRef(0), R = e.useRef(0), h = e.useRef(0), f = e.useRef(null), T = e.useRef(null), [d, w] = e.useState(null), Ce = Ke(E, x, W), ge = Be(E, I), D = Ue(E, P), { extendedColumns: Re, columnsWidth: he, columnsMap: De } = e.useMemo(
|
|
57
|
+
() => {
|
|
58
|
+
const t = je(
|
|
59
|
+
[
|
|
60
|
+
...k,
|
|
61
|
+
{
|
|
62
|
+
title: "",
|
|
63
|
+
sortable: !1,
|
|
64
|
+
resizable: !1,
|
|
65
|
+
reorderable: !1,
|
|
66
|
+
width: D,
|
|
67
|
+
headerCell: () => Ce,
|
|
68
|
+
cell: ve,
|
|
69
|
+
orderIndex: Number.MAX_SAFE_INTEGER,
|
|
70
|
+
navigatable: !1
|
|
71
|
+
}
|
|
72
|
+
],
|
|
73
|
+
{ prevId: 0, idPrefix: F.current }
|
|
74
|
+
);
|
|
75
|
+
let r = 0;
|
|
76
|
+
return t.forEach((n, o, l) => {
|
|
77
|
+
const s = o + 1 === l.length, a = n.children.length === 0;
|
|
78
|
+
s ? n.isAccessible = !1 : (n.locked = !0, a && (n.width = n.width || Je)), a && (r += parseFloat(String(n.width)));
|
|
79
|
+
}), {
|
|
80
|
+
extendedColumns: t,
|
|
81
|
+
columnsWidth: r,
|
|
82
|
+
columnsMap: qe(t)
|
|
83
|
+
};
|
|
84
|
+
},
|
|
85
|
+
[k, D]
|
|
86
|
+
), [Ee, be] = Oe(), H = e.useCallback(
|
|
87
|
+
() => x.current && x.current.parentElement,
|
|
88
|
+
[]
|
|
89
|
+
), M = () => {
|
|
90
|
+
const t = H(), r = I.current, n = u.current && u.current.tbodyElement;
|
|
91
|
+
if (!t || !r || !n)
|
|
92
|
+
return;
|
|
93
|
+
const o = n.offsetTop, l = t.offsetLeft, s = D;
|
|
94
|
+
r.style.top = o + "px", r.style.left = l + "px", r.style.width = s + "px", r.style.height = n.offsetHeight + "px";
|
|
95
|
+
}, ye = () => {
|
|
96
|
+
const t = H();
|
|
97
|
+
t && (L.current = t.offsetLeft);
|
|
98
|
+
};
|
|
99
|
+
e.useEffect(M), e.useEffect(ye);
|
|
100
|
+
const xe = e.useCallback(
|
|
101
|
+
(t) => {
|
|
102
|
+
if (!p.current)
|
|
103
|
+
return;
|
|
104
|
+
const r = t.columns.slice(0, t.columns.length - 1);
|
|
105
|
+
if (t.end)
|
|
106
|
+
p.current.style.left = "0px";
|
|
107
|
+
else {
|
|
108
|
+
const n = H();
|
|
109
|
+
if (!n)
|
|
110
|
+
return;
|
|
111
|
+
p.current.style.left = n.offsetLeft - L.current + "px", M();
|
|
112
|
+
}
|
|
113
|
+
b({
|
|
114
|
+
...t,
|
|
115
|
+
columns: r
|
|
116
|
+
});
|
|
117
|
+
},
|
|
118
|
+
[b]
|
|
119
|
+
), Te = e.useCallback(
|
|
120
|
+
(t) => {
|
|
121
|
+
const r = t.columns.slice(0, t.columns.length - 1);
|
|
122
|
+
se({
|
|
123
|
+
...t,
|
|
124
|
+
columns: r
|
|
125
|
+
});
|
|
126
|
+
},
|
|
127
|
+
[b]
|
|
128
|
+
), we = e.useCallback(
|
|
129
|
+
(t) => {
|
|
130
|
+
const n = (c.current && c.current.ownerDocument ? c.current.ownerDocument : document).elementFromPoint(t.clientX, t.clientY), o = c.current;
|
|
131
|
+
if (!n || !n.parentElement || !o)
|
|
132
|
+
return;
|
|
133
|
+
const l = o.parentElement, s = o.firstElementChild;
|
|
134
|
+
if (!l || !s)
|
|
135
|
+
return;
|
|
136
|
+
const a = n.getAttribute(S);
|
|
137
|
+
if (a) {
|
|
138
|
+
const Ie = o.offsetTop, Le = o.offsetLeft, Fe = l.offsetTop, Ge = l.offsetLeft, Me = s.scrollTop, Se = s.scrollLeft;
|
|
139
|
+
R.current = Le + Ge, h.current = Ie + Fe, C.current = t.clientX - R.current + Se, g.current = t.clientY - h.current + Me, f.current = n.parentElement.getAttribute(A), T.current = a;
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
[]
|
|
143
|
+
), He = e.useCallback(
|
|
144
|
+
(t) => {
|
|
145
|
+
const r = c.current;
|
|
146
|
+
if (!r)
|
|
147
|
+
return;
|
|
148
|
+
const n = r.firstElementChild;
|
|
149
|
+
if (!n)
|
|
150
|
+
return;
|
|
151
|
+
const o = n.scrollTop, l = n.scrollLeft, s = t.clientX - R.current + l, a = t.clientY - h.current + o;
|
|
152
|
+
Math.abs(C.current - s) < 10 && Math.abs(g.current - a) < 10 || w({
|
|
153
|
+
startX: C.current,
|
|
154
|
+
startY: g.current,
|
|
155
|
+
endX: s,
|
|
156
|
+
endY: a
|
|
157
|
+
});
|
|
158
|
+
},
|
|
159
|
+
[]
|
|
160
|
+
), ke = e.useCallback(
|
|
161
|
+
(t) => {
|
|
162
|
+
const n = (c.current && c.current.ownerDocument ? c.current.ownerDocument : document).elementFromPoint(t.clientX, t.clientY);
|
|
163
|
+
if (!n || !n.parentElement)
|
|
164
|
+
return;
|
|
165
|
+
const o = n.parentElement.getAttribute(A), l = n.getAttribute(S);
|
|
166
|
+
if (l && o !== f.current && m) {
|
|
167
|
+
let s;
|
|
168
|
+
T.current === "start" ? s = l === "start" ? 3 : 2 : s = l === "start" ? 1 : 0, m({
|
|
169
|
+
fromId: f.current,
|
|
170
|
+
toId: o,
|
|
171
|
+
type: s
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
C.current = 0, g.current = 0, R.current = 0, h.current = 0, f.current = null, T.current = null, w(null);
|
|
175
|
+
},
|
|
176
|
+
[m, w]
|
|
177
|
+
);
|
|
178
|
+
return /* @__PURE__ */ e.createElement(
|
|
179
|
+
Ve,
|
|
180
|
+
{
|
|
181
|
+
tasksStore: [Ee, be],
|
|
182
|
+
timelineWidth: D,
|
|
183
|
+
dependencyDrag: {
|
|
184
|
+
isEnabled: !!m,
|
|
185
|
+
draggedId: f.current,
|
|
186
|
+
onDependencyHandlePress: we,
|
|
187
|
+
onDependencyHandleDrag: He,
|
|
188
|
+
onDependencyHandleRelease: ke
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
/* @__PURE__ */ e.createElement("div", { className: "k-gantt-content", ref: c, style: { height: `calc(100% - ${ue}px)` } }, /* @__PURE__ */ e.createElement(
|
|
192
|
+
Qe,
|
|
193
|
+
{
|
|
194
|
+
treelistId: me.current,
|
|
195
|
+
ref: u,
|
|
196
|
+
extendedColumns: Re,
|
|
197
|
+
columnsMap: De,
|
|
198
|
+
dataItemKey: i.id,
|
|
199
|
+
data: y,
|
|
200
|
+
idPrefix: F.current,
|
|
201
|
+
navigatable: U,
|
|
202
|
+
expandField: i.isExpanded,
|
|
203
|
+
subItemsField: i.children,
|
|
204
|
+
editField: i.isInEdit,
|
|
205
|
+
selectedField: i.isSelected,
|
|
206
|
+
onDataStateChange: J,
|
|
207
|
+
onSortChange: Q,
|
|
208
|
+
onFilterChange: Z,
|
|
209
|
+
onExpandChange: te,
|
|
210
|
+
onRowClick: ne,
|
|
211
|
+
onRowDoubleClick: re,
|
|
212
|
+
onRowContextMenu: oe,
|
|
213
|
+
onColumnResize: xe,
|
|
214
|
+
onColumnReorder: Te,
|
|
215
|
+
onColumnMenuFilterChange: ee,
|
|
216
|
+
onKeyDown: le,
|
|
217
|
+
onSelectionChange: ce,
|
|
218
|
+
onHeaderSelectionChange: ae,
|
|
219
|
+
tableProps: { style: { width: he }, className: "k-table k-table-md k-table-layout-fixed" },
|
|
220
|
+
noRecords: _,
|
|
221
|
+
rowHeight: ie,
|
|
222
|
+
resizable: z,
|
|
223
|
+
reorderable: V,
|
|
224
|
+
sortable: v,
|
|
225
|
+
sort: O,
|
|
226
|
+
filter: $,
|
|
227
|
+
columnMenuFilter: K,
|
|
228
|
+
columnMenu: B,
|
|
229
|
+
row: j,
|
|
230
|
+
selectable: q,
|
|
231
|
+
afterContent: /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement("svg", { className: "k-gantt-dependencies-svg", ref: p, style: { left: 0, top: 0 } }, de.map((t) => /* @__PURE__ */ e.createElement($e, { key: Ze(fe.id)(t), dependency: t }))), /* @__PURE__ */ e.createElement("svg", { className: "k-gantt-dependencies-svg", style: { left: 0, top: 0, zIndex: 3 } }, d && /* @__PURE__ */ e.createElement("polyline", { points: `${d.startX},${d.startY} ${d.endX},${d.endY}` })), y && y.length ? ge : null)
|
|
232
|
+
}
|
|
233
|
+
))
|
|
234
|
+
);
|
|
235
|
+
});
|
|
236
|
+
et.displayName = "KendoReactGanttBaseView";
|
|
237
|
+
export {
|
|
238
|
+
et as BaseView
|
|
239
|
+
};
|
|
@@ -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 j=require("react"),m=require("../context/GanttContext.js"),w=require("../utils/index.js"),l=require("@progress/kendo-react-common"),x=require("../context/GanttViewContext.js");function O(t){const n=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(t){for(const e in t)if(e!=="default"){const o=Object.getOwnPropertyDescriptor(t,e);Object.defineProperty(n,e,o.get?o:{enumerable:!0,get:()=>t[e]})}}return n.default=t,Object.freeze(n)}const f=O(j),g=t=>{const{dependency:n}=t,[e]=x.useGanttViewTasksContext(),o=f.useRef(null),a=m.useGanttDependencyModelFieldsContext(),C=m.useGanttRowHeightContext(),[d,c]=f.useState(!1),b=()=>{if(o.current===null||e.current===null){c(!1);return}const u=e.current[l.getter(a.fromId)(n)],p=e.current[l.getter(a.toId)(n)];if(!u||!p){c(!1);return}const s=u.element,r=p.element;if(!s||!r){c(!1);return}if(d===!1){c(!0);return}const G={top:s.offsetTop+s.offsetHeight/2,start:s.offsetLeft,end:s.offsetLeft+s.offsetWidth},h={top:r.offsetTop+r.offsetHeight/2,start:r.offsetLeft,end:r.offsetLeft+r.offsetWidth},D=l.getter(a.type)(n),i=w.dependencyCoordinates(G,h,C,D);i&&i.length&&o.current.setAttribute("points",i.map(y=>`${y.left},${y.top}`).join(" "))};return f.useEffect(b),f.createElement("polyline",{ref:o,style:{display:d?void 0:"none"}})};g.displayName="KendoReactGanttDependency";exports.GanttDependency=g;
|
|
@@ -0,0 +1,58 @@
|
|
|
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 n from "react";
|
|
10
|
+
import { useGanttDependencyModelFieldsContext as w, useGanttRowHeightContext as x } from "../context/GanttContext.mjs";
|
|
11
|
+
import { dependencyCoordinates as D } from "../utils/index.mjs";
|
|
12
|
+
import { getter as a } from "@progress/kendo-react-common";
|
|
13
|
+
import { useGanttViewTasksContext as E } from "../context/GanttViewContext.mjs";
|
|
14
|
+
const H = (u) => {
|
|
15
|
+
const { dependency: s } = u, [f] = E(), r = n.useRef(null), c = w(), y = x(), [l, o] = n.useState(!1), h = () => {
|
|
16
|
+
if (r.current === null || f.current === null) {
|
|
17
|
+
o(!1);
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
const d = f.current[a(c.fromId)(s)], p = f.current[a(c.toId)(s)];
|
|
21
|
+
if (!d || !p) {
|
|
22
|
+
o(!1);
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const e = d.element, t = p.element;
|
|
26
|
+
if (!e || !t) {
|
|
27
|
+
o(!1);
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (l === !1) {
|
|
31
|
+
o(!0);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
const C = {
|
|
35
|
+
top: e.offsetTop + e.offsetHeight / 2,
|
|
36
|
+
start: e.offsetLeft,
|
|
37
|
+
end: e.offsetLeft + e.offsetWidth
|
|
38
|
+
}, g = {
|
|
39
|
+
top: t.offsetTop + t.offsetHeight / 2,
|
|
40
|
+
start: t.offsetLeft,
|
|
41
|
+
end: t.offsetLeft + t.offsetWidth
|
|
42
|
+
}, G = a(c.type)(s), i = D(C, g, y, G);
|
|
43
|
+
i && i.length && r.current.setAttribute("points", i.map((m) => `${m.left},${m.top}`).join(" "));
|
|
44
|
+
};
|
|
45
|
+
return n.useEffect(h), /* @__PURE__ */ n.createElement(
|
|
46
|
+
"polyline",
|
|
47
|
+
{
|
|
48
|
+
ref: r,
|
|
49
|
+
style: {
|
|
50
|
+
display: l ? void 0 : "none"
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
);
|
|
54
|
+
};
|
|
55
|
+
H.displayName = "KendoReactGanttDependency";
|
|
56
|
+
export {
|
|
57
|
+
H as GanttDependency
|
|
58
|
+
};
|
|
@@ -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 J=require("react"),S=require("../context/GanttContext.js"),Q=require("../utils/index.js"),a=require("@progress/kendo-react-common"),U=require("@progress/kendo-svg-icons"),j=require("../context/GanttViewContext.js"),X=require("../hooks/useGanttTask.js"),o=require("../constants/index.js");function Z(e){const d=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const s in e)if(s!=="default"){const l=Object.getOwnPropertyDescriptor(e,s);Object.defineProperty(d,s,l.get?l:{enumerable:!0,get:()=>e[s]})}}return d.default=e,Object.freeze(d)}const t=Z(J),L=t.forwardRef((e,d)=>{const s=S.useGanttDateRangeContext(),l=S.useGanttTaskModelFieldsContext(),$=j.useGanttViewTimelineWidthContext(),c=j.useGanttViewDependencyDragContext(),i=S.useGanttTaskEventsContext(),u=t.useRef(null),f=t.useRef(null);X.useGanttTask(e.dataItem,a.getter(l.id)(e.dataItem),d,u);const _=t.useRef(null),E=a.getter(l.id)(e.dataItem),r=a.getter(l.start)(e.dataItem),g=a.getter(l.end)(e.dataItem),V=a.getter(l.title)(e.dataItem),h=a.getter(l.percentComplete)(e.dataItem),A=a.getter(l.children)(e.dataItem),T=a.getter(l.isSelected)(e.dataItem),y=r&&r.getTime(),D=g&&g.getTime(),m=A&&A.length,C=!m&&y===D,I=y&&D&&Q.isInRange(s.start,s.end,r,g),[W,Y]=t.useState(!1),N=t.useRef(null),R=t.useRef(null);a.useDraggable(N,{onPress:c.onDependencyHandlePress,onDrag:c.onDependencyHandleDrag,onRelease:c.onDependencyHandleRelease}),a.useDraggable(R,{onPress:c.onDependencyHandlePress,onDrag:c.onDependencyHandleDrag,onRelease:c.onDependencyHandleRelease});const x=t.useCallback(n=>{i.onTaskClick&&i.onTaskClick({dataItem:e.dataItem,level:e.level,nativeEvent:n&&n.nativeEvent,syntheticEvent:n,target:null})},[e.dataItem,e.level]),H=t.useCallback(n=>{i.onTaskDoubleClick&&i.onTaskDoubleClick({dataItem:e.dataItem,level:e.level,nativeEvent:n&&n.nativeEvent,syntheticEvent:n,target:null})},[e.dataItem,e.level]),G=t.useCallback(n=>{i.onTaskContextMenu&&i.onTaskContextMenu({dataItem:e.dataItem,level:e.level,nativeEvent:n&&n.nativeEvent,syntheticEvent:n,target:null})},[e.dataItem,e.level]),K=t.useCallback(n=>{i.onTaskRemoveClick&&i.onTaskRemoveClick({dataItem:e.dataItem,level:e.level,nativeEvent:n&&n.nativeEvent,syntheticEvent:n,target:null})},[e.dataItem,e.level]),M=t.useCallback(()=>{const n=s.start,z=s.end,b=_.current,k=u.current,q=f.current;if(!I||b===null||k===null)return;const w=b.clientWidth/(z.getTime()-n.getTime()),O=(r.getTime()-n.getTime())*w,F=(g.getTime()-r.getTime())*w,B=(b.offsetHeight-k.offsetHeight)/2;k.style.left=`${Math.round(C?O-o.MILESTONE_OFFSET:O)}px`,k.style.top=`${Math.round(B)}px`,C||(k.style.width=`${Math.round(F)}px`,q!==null&&(q.style.width=`${Math.round(F*(h||0))}px`)),Y(!0)},[s.start.getTime(),s.end.getTime(),y,D,I,h,$]);t.useEffect(M,[M]);const P={visibility:W?void 0:"hidden",display:I?void 0:"none"},v={userSelect:"none",display:c.draggedId===String(E)?"block":void 0};return t.createElement("td",{ref:_,key:E,role:"presentation"},C?t.createElement("div",{"aria-hidden":!0,className:a.classNames({"k-task":!0,"k-task-milestone":!0,"k-selected":T&&!Array.isArray(T)}),style:P,ref:u,[o.TASK_ID_ATT]:E,onClick:x,onDoubleClick:H,onContextMenu:G},t.createElement("div",{className:"k-task-milestone-content"}),c.isEnabled&&t.createElement("div",{className:"k-task-dot k-task-start",ref:N,style:v,...o.DEPENDENCY_DRAG_HANDLE_START_ATT}),c.isEnabled&&t.createElement("div",{className:"k-task-dot k-task-end",ref:R,style:v,...o.DEPENDENCY_DRAG_HANDLE_FINISH_ATT})):t.createElement("div",{"aria-hidden":!0,className:a.classNames({"k-task":!0,"k-task-summary":m,"k-task-single":!m,"k-selected":T&&!Array.isArray(T)}),ref:u,style:P,[o.TASK_ID_ATT]:E,onClick:x,onDoubleClick:H,onContextMenu:G},m?t.createElement("div",{className:"k-task-summary-progress",ref:f},t.createElement("div",{className:"k-task-summary-complete"})):t.createElement("div",{className:"k-task-complete",ref:f}),!m&&t.createElement(t.Fragment,null,t.createElement("div",{className:"k-task-content"},V),i.onTaskRemoveClick?t.createElement("span",{className:"k-task-actions"},t.createElement("span",{onClick:K,className:"k-link k-task-delete","aria-label":"Delete"},t.createElement(a.IconWrap,{name:"x",icon:U.xIcon}))):null),c.isEnabled&&t.createElement("div",{className:"k-task-dot k-task-start",ref:N,style:v,...o.DEPENDENCY_DRAG_HANDLE_START_ATT}),c.isEnabled&&t.createElement("div",{className:"k-task-dot k-task-end",ref:R,style:v,...o.DEPENDENCY_DRAG_HANDLE_FINISH_ATT})))});L.displayName="KendoReactGanttTask";exports.GanttTask=L;
|
|
@@ -0,0 +1,169 @@
|
|
|
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 e from "react";
|
|
10
|
+
import { useGanttDateRangeContext as Q, useGanttTaskModelFieldsContext as U, useGanttTaskEventsContext as X } from "../context/GanttContext.mjs";
|
|
11
|
+
import { isInRange as Z } from "../utils/index.mjs";
|
|
12
|
+
import { getter as c, useDraggable as F, classNames as W, IconWrap as p } from "@progress/kendo-react-common";
|
|
13
|
+
import { xIcon as ee } from "@progress/kendo-svg-icons";
|
|
14
|
+
import { useGanttViewTimelineWidthContext as te, useGanttViewDependencyDragContext as ne } from "../context/GanttViewContext.mjs";
|
|
15
|
+
import { useGanttTask as ae } from "../hooks/useGanttTask.mjs";
|
|
16
|
+
import { MILESTONE_OFFSET as le, TASK_ID_ATT as $, DEPENDENCY_DRAG_HANDLE_START_ATT as L, DEPENDENCY_DRAG_HANDLE_FINISH_ATT as V } from "../constants/index.mjs";
|
|
17
|
+
const se = e.forwardRef((t, K) => {
|
|
18
|
+
const i = Q(), s = U(), O = te(), a = ne(), l = X(), r = e.useRef(null), f = e.useRef(null);
|
|
19
|
+
ae(t.dataItem, c(s.id)(t.dataItem), K, r);
|
|
20
|
+
const N = e.useRef(null), k = c(s.id)(t.dataItem), o = c(s.start)(t.dataItem), u = c(s.end)(t.dataItem), Y = c(s.title)(t.dataItem), h = c(s.percentComplete)(t.dataItem), b = c(s.children)(t.dataItem), E = c(s.isSelected)(t.dataItem), y = o && o.getTime(), T = u && u.getTime(), d = b && b.length, g = !d && y === T, C = y && T && Z(i.start, i.end, o, u), [j, q] = e.useState(!1), D = e.useRef(null), I = e.useRef(null);
|
|
21
|
+
F(D, {
|
|
22
|
+
onPress: a.onDependencyHandlePress,
|
|
23
|
+
onDrag: a.onDependencyHandleDrag,
|
|
24
|
+
onRelease: a.onDependencyHandleRelease
|
|
25
|
+
}), F(I, {
|
|
26
|
+
onPress: a.onDependencyHandlePress,
|
|
27
|
+
onDrag: a.onDependencyHandleDrag,
|
|
28
|
+
onRelease: a.onDependencyHandleRelease
|
|
29
|
+
});
|
|
30
|
+
const x = e.useCallback(
|
|
31
|
+
(n) => {
|
|
32
|
+
l.onTaskClick && l.onTaskClick({
|
|
33
|
+
dataItem: t.dataItem,
|
|
34
|
+
level: t.level,
|
|
35
|
+
nativeEvent: n && n.nativeEvent,
|
|
36
|
+
syntheticEvent: n,
|
|
37
|
+
target: null
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
[t.dataItem, t.level]
|
|
41
|
+
), S = e.useCallback(
|
|
42
|
+
(n) => {
|
|
43
|
+
l.onTaskDoubleClick && l.onTaskDoubleClick({
|
|
44
|
+
dataItem: t.dataItem,
|
|
45
|
+
level: t.level,
|
|
46
|
+
nativeEvent: n && n.nativeEvent,
|
|
47
|
+
syntheticEvent: n,
|
|
48
|
+
target: null
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
[t.dataItem, t.level]
|
|
52
|
+
), H = e.useCallback(
|
|
53
|
+
(n) => {
|
|
54
|
+
l.onTaskContextMenu && l.onTaskContextMenu({
|
|
55
|
+
dataItem: t.dataItem,
|
|
56
|
+
level: t.level,
|
|
57
|
+
nativeEvent: n && n.nativeEvent,
|
|
58
|
+
syntheticEvent: n,
|
|
59
|
+
target: null
|
|
60
|
+
});
|
|
61
|
+
},
|
|
62
|
+
[t.dataItem, t.level]
|
|
63
|
+
), z = e.useCallback(
|
|
64
|
+
(n) => {
|
|
65
|
+
l.onTaskRemoveClick && l.onTaskRemoveClick({
|
|
66
|
+
dataItem: t.dataItem,
|
|
67
|
+
level: t.level,
|
|
68
|
+
nativeEvent: n && n.nativeEvent,
|
|
69
|
+
syntheticEvent: n,
|
|
70
|
+
target: null
|
|
71
|
+
});
|
|
72
|
+
},
|
|
73
|
+
[t.dataItem, t.level]
|
|
74
|
+
), M = e.useCallback(
|
|
75
|
+
() => {
|
|
76
|
+
const n = i.start, B = i.end, R = N.current, m = r.current, _ = f.current;
|
|
77
|
+
if (!C || R === null || m === null)
|
|
78
|
+
return;
|
|
79
|
+
const G = R.clientWidth / (B.getTime() - n.getTime()), P = (o.getTime() - n.getTime()) * G, w = (u.getTime() - o.getTime()) * G, J = (R.offsetHeight - m.offsetHeight) / 2;
|
|
80
|
+
m.style.left = `${Math.round(g ? P - le : P)}px`, m.style.top = `${Math.round(J)}px`, g || (m.style.width = `${Math.round(w)}px`, _ !== null && (_.style.width = `${Math.round(w * (h || 0))}px`)), q(!0);
|
|
81
|
+
},
|
|
82
|
+
[i.start.getTime(), i.end.getTime(), y, T, C, h, O]
|
|
83
|
+
);
|
|
84
|
+
e.useEffect(M, [M]);
|
|
85
|
+
const A = {
|
|
86
|
+
visibility: j ? void 0 : "hidden",
|
|
87
|
+
display: C ? void 0 : "none"
|
|
88
|
+
}, v = {
|
|
89
|
+
userSelect: "none",
|
|
90
|
+
display: a.draggedId === String(k) ? "block" : void 0
|
|
91
|
+
};
|
|
92
|
+
return /* @__PURE__ */ e.createElement("td", { ref: N, key: k, role: "presentation" }, g ? /* @__PURE__ */ e.createElement(
|
|
93
|
+
"div",
|
|
94
|
+
{
|
|
95
|
+
"aria-hidden": !0,
|
|
96
|
+
className: W({
|
|
97
|
+
"k-task": !0,
|
|
98
|
+
"k-task-milestone": !0,
|
|
99
|
+
"k-selected": E && !Array.isArray(E)
|
|
100
|
+
}),
|
|
101
|
+
style: A,
|
|
102
|
+
ref: r,
|
|
103
|
+
[$]: k,
|
|
104
|
+
onClick: x,
|
|
105
|
+
onDoubleClick: S,
|
|
106
|
+
onContextMenu: H
|
|
107
|
+
},
|
|
108
|
+
/* @__PURE__ */ e.createElement("div", { className: "k-task-milestone-content" }),
|
|
109
|
+
a.isEnabled && /* @__PURE__ */ e.createElement(
|
|
110
|
+
"div",
|
|
111
|
+
{
|
|
112
|
+
className: "k-task-dot k-task-start",
|
|
113
|
+
ref: D,
|
|
114
|
+
style: v,
|
|
115
|
+
...L
|
|
116
|
+
}
|
|
117
|
+
),
|
|
118
|
+
a.isEnabled && /* @__PURE__ */ e.createElement(
|
|
119
|
+
"div",
|
|
120
|
+
{
|
|
121
|
+
className: "k-task-dot k-task-end",
|
|
122
|
+
ref: I,
|
|
123
|
+
style: v,
|
|
124
|
+
...V
|
|
125
|
+
}
|
|
126
|
+
)
|
|
127
|
+
) : /* @__PURE__ */ e.createElement(
|
|
128
|
+
"div",
|
|
129
|
+
{
|
|
130
|
+
"aria-hidden": !0,
|
|
131
|
+
className: W({
|
|
132
|
+
"k-task": !0,
|
|
133
|
+
"k-task-summary": d,
|
|
134
|
+
"k-task-single": !d,
|
|
135
|
+
"k-selected": E && !Array.isArray(E)
|
|
136
|
+
}),
|
|
137
|
+
ref: r,
|
|
138
|
+
style: A,
|
|
139
|
+
[$]: k,
|
|
140
|
+
onClick: x,
|
|
141
|
+
onDoubleClick: S,
|
|
142
|
+
onContextMenu: H
|
|
143
|
+
},
|
|
144
|
+
d ? /* @__PURE__ */ e.createElement("div", { className: "k-task-summary-progress", ref: f }, /* @__PURE__ */ e.createElement("div", { className: "k-task-summary-complete" })) : /* @__PURE__ */ e.createElement("div", { className: "k-task-complete", ref: f }),
|
|
145
|
+
!d && /* @__PURE__ */ e.createElement(e.Fragment, null, /* @__PURE__ */ e.createElement("div", { className: "k-task-content" }, Y), l.onTaskRemoveClick ? /* @__PURE__ */ e.createElement("span", { className: "k-task-actions" }, /* @__PURE__ */ e.createElement("span", { onClick: z, className: "k-link k-task-delete", "aria-label": "Delete" }, /* @__PURE__ */ e.createElement(p, { name: "x", icon: ee }))) : null),
|
|
146
|
+
a.isEnabled && /* @__PURE__ */ e.createElement(
|
|
147
|
+
"div",
|
|
148
|
+
{
|
|
149
|
+
className: "k-task-dot k-task-start",
|
|
150
|
+
ref: D,
|
|
151
|
+
style: v,
|
|
152
|
+
...L
|
|
153
|
+
}
|
|
154
|
+
),
|
|
155
|
+
a.isEnabled && /* @__PURE__ */ e.createElement(
|
|
156
|
+
"div",
|
|
157
|
+
{
|
|
158
|
+
className: "k-task-dot k-task-end",
|
|
159
|
+
ref: I,
|
|
160
|
+
style: v,
|
|
161
|
+
...V
|
|
162
|
+
}
|
|
163
|
+
)
|
|
164
|
+
));
|
|
165
|
+
});
|
|
166
|
+
se.displayName = "KendoReactGanttTask";
|
|
167
|
+
export {
|
|
168
|
+
se as GanttTask
|
|
169
|
+
};
|
|
@@ -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 J=require("react"),o=require("prop-types"),S=require("@progress/kendo-react-common"),c=require("@progress/kendo-react-data-tools"),D=require("@progress/kendo-react-treelist"),K=require("../utils/index.js");function Q(E){const p=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(E){for(const e in E)if(e!=="default"){const t=Object.getOwnPropertyDescriptor(E,e);Object.defineProperty(p,e,t.get?t:{enumerable:!0,get:()=>E[e]})}}return p.default=E,Object.freeze(p)}const l=Q(J),N=class N extends l.Component{constructor(p){super(p),this.state={activeId:void 0,level:0},this.tableElement=null,this.tbodyElement=null,this.wrapperScrollLeft=0,this.wrapperScrollTop=0,this.updateOnScroll=!1,this.tbodyOffsetTop=0,this.prevData=[],this.flattedData=[],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,{rowHeight:n=0}=this.props;this.element.scroll(0,(t-1)*n)},this.getColumns=e=>{const t=e.filter(s=>s.declarationIndex>=0&&s.parentIndex===-1),n=s=>(s.sort((i,r)=>i.declarationIndex-r.declarationIndex),s.map(i=>{const{declarationIndex:r,parentIndex:g,depth:u,colSpan:d,rowSpan:I,index:P,kFirst:b,groupable:O,children:R,...k}=i;return R.length?{children:n(R),...k}:k}));return n(t)},this.onKeyDown=e=>{if(c.tableKeyboardNavigation.onKeyDown(e,{contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef}),this.props.onKeyDown){const{mode:t,cell:n}=c.getSelectionOptions(this.props.selectable),s={dataItems:this.getLeafDataItems(),mode:t,cell:n,componentId:this.props.treelistId,selectedField:this.props.selectedField,...this.getEventArguments(e)};this.props.onKeyDown.call(void 0,s)}},this.onFocus=e=>{c.tableKeyboardNavigation.onFocus(e,{contextStateRef:this.contextStateRef})},this.onRowDrag=e=>{if(this.props.onRowDrag){const t={...e,target:this};this.props.onRowDrag.call(void 0,t)}},this.onRowDrop=e=>{if(this.props.onRowDrop){const t={...e,target:this};this.props.onRowDrop.call(void 0,t)}},this.onColumnReorder=(e,t,n)=>{const{extendedColumns:s}=this.props,i=s[e].depth,r=d=>{do d++;while(d<s.length&&s[d].depth>i);return d},g=[...s],u=g.splice(e,r(e)-e);if(g.splice(e<t?r(t-u.length):t,0,...u),g.filter(d=>d.declarationIndex>=0).forEach((d,I)=>d.orderIndex=I),this.props.onColumnReorder){const d={target:this,columns:this.getColumns(g),nativeEvent:n};this.props.onColumnReorder.call(void 0,d)}},this.onColumnResize=(e,t,n,s,i)=>{if(this.props.onColumnResize){const r=this.props.extendedColumns.filter(u=>u.children.length===0).reduce((u,d)=>u+=parseFloat(String(d.width)),0);this.tableElement&&(this.tableElement.style.width=r+"px");const g={columns:this.getColumns(this.props.extendedColumns),totalWidth:r,index:e,nativeEvent:s,newWidth:t,oldWidth:n,end:i,target:this};this.props.onColumnResize.call(void 0,g)}},this.onScroll=e=>{const t=e.currentTarget.scrollLeft,n=e.currentTarget.scrollTop,{columnVirtualization:s,scrollable:i,rowHeight:r=0}=this.props,g=r,u=0;let d=!1;s&&Math.abs(this.wrapperScrollLeft-t)>u&&(this.wrapperScrollLeft=t,d=!0),i==="virtual"&&Math.abs(this.wrapperScrollTop-n)>g&&(this.wrapperScrollTop=n,d=!0),d&&(this.updateOnScroll=!0,this.forceUpdate())},this.calculateSizes=e=>{if(!e||this.props.scrollable==="none")return;const t=Array.from(e.childNodes),n=t.find(r=>r.nodeName==="TABLE"),s=this.props.toolbar&&t.find(r=>r.nodeType===1&&r.classList.contains("k-grid-toolbar"));let i=0;if(s){const r=s.style.boxSizing;s.style.boxSizing="border-box",i=parseFloat(String(window.getComputedStyle(s).height))||s.offsetHeight,s.style.boxSizing=r,s.getAttribute("style")||s.removeAttribute("style")}this.tbodyOffsetTop=n.tBodies[0].offsetTop,D.setHeaderRowsTop(n,i)},this.onItemChange=e=>{if(e.field===this.props.expandField){const t=this.props.onExpandChange;if(t){const n={...this.getEventArguments(e.syntheticEvent),dataItem:e.dataItem,level:e.level,value:e.value};t.call(void 0,n)}return}if(this.props.onItemChange){const t={...this.getEventArguments(e.syntheticEvent),dataItem:e.dataItem,level:e.level,field:e.field,value:e.value};this.props.onItemChange.call(void 0,t)}},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.props.treelistId,dataItems:this.getLeafDataItems(),dataItem:null,level:[],...e};this.props.onSelectionChange.call(void 0,t)}},this.onSortChange=(e,t,n)=>{this.onDataStateChange(this.props.onSortChange,{sort:t,field:n},e)},this.onFilterChange=e=>{const{filter:t,field:n}=e;this.onDataStateChange(this.props.onFilterChange,{filter:t,field:n},e.syntheticEvent)},this.onColumnMenuFilterChange=(e,t,n)=>{if(!n)return;const{onColumnMenuFilterChange:s}=this.props;if(!s)return;const i={syntheticEvent:e,filter:t,field:n,target:this,nativeEvent:e.nativeEvent};s.call(void 0,i)},this.onExpandChange=(e,t,n)=>{const{expandField:s,onExpandChange:i}=this.props;if(s&&i){const r={...this.getEventArguments(e),dataItem:t,level:n,value:K.isExpanded(t,this.props.expandField)};i.call(void 0,r)}},this.onRowClick=(e,t)=>{if(this.props.onRowClick&&e.target.nodeName==="TD"){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowClick.call(void 0,n)}},this.rowDoubleClick=(e,t)=>{if(this.props.onRowDoubleClick&&e.target.nodeName==="TD"){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowDoubleClick.call(void 0,n)}},this.rowContextMenu=(e,t)=>{if(this.props.onRowContextMenu&&e.target.nodeName==="TD"){const n={dataItem:t.dataItem,level:t.level,...this.getEventArguments(e)};this.props.onRowContextMenu.call(void 0,n)}},this.onPageChange=e=>{if(this.props.onPageChange){const t={...this.getEventArguments(e.syntheticEvent),skip:e.skip,take:e.take};this.props.onPageChange.call(void 0,t)}},this.onDataStateChange=(e,t,n)=>{if(e&&e.call(void 0,{...this.getEventArguments(n),...t}),this.props.onDataStateChange){const s={...this.getEventArguments(n),dataState:{...this.getDataState(),...t}};this.props.onDataStateChange.call(void 0,s)}},this.getDataState=()=>({filter:this.props.filter,sort:this.props.sort}),this.getEventArguments=e=>({nativeEvent:e&&e.nativeEvent,syntheticEvent:e,target:this}),this.getLeafDataItems=()=>this.flatData.map(e=>e.dataItem),this.dragLogic=new c.CommonDragLogic(this.onColumnReorder,S.noop,S.noop),this.columnResize=new c.ColumnResize(this.onColumnResize),c.tableKeyboardNavigation.onConstructor({navigatable:!!p.navigatable,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef,idPrefix:p.idPrefix})}get document(){if(S.canUseDOM)return this.element&&this.element.ownerDocument||document}componentDidMount(){this.calculateSizes(this.element),c.tableKeyboardNavigation.onComponentDidMount({scope:this.element||void 0,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}getSnapshotBeforeUpdate(){return c.tableKeyboardNavigation.onGetSnapshotBeforeUpdate({document:this.document,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef}),null}componentDidUpdate(p){p.columns!==this.props.columns&&this.calculateSizes(this.element),c.tableKeyboardNavigation.onComponentDidUpdate({scope:this.element||void 0,contextStateRef:this.contextStateRef,navigationStateRef:this.navigationStateRef})}componentWillUnmount(){this.columnResize.columns=[],this.dragLogic.columns=[],this.prevData=[],this.flattedData=[],this.updateOnScroll=!1}render(){const{filterRow:p,scrollable:e="scrollable",resizable:t=!1,reorderable:n=!1,skip:s,take:i,afterContent:r,extendedColumns:g=[],columnsMap:u}=this.props,d=g.some(a=>!!a.filter)||p!==void 0,I=p||c.FilterRow,P=c.tableKeyboardNavigationTools.getIdPrefix(this.navigationStateRef);this.columnResize.columns=g,this.columnResize.resizable=t,this.dragLogic.columns=g,this.dragLogic.reorderable=n,this.dragLogic.groupable=!1;const b=g.filter(a=>a.children.length===0),O=l.createElement(c.Header,{headerRow:l.createElement(c.HeaderRow,{sort:this.props.sort,sortable:this.props.sortable,sortChange:this.onSortChange,selectionChange:this.onHeaderSelectionChange,columns:g,columnsMap:u,cellRender:this.props.headerCellRender,columnResize:this.columnResize,columnMenu:this.props.columnMenu,columnMenuFilter:this.props.columnMenuFilter,columnMenuFilterChange:this.onColumnMenuFilterChange,pressHandler:this.dragLogic.pressHandler,dragHandler:this.dragLogic.dragHandler,releaseHandler:this.dragLogic.releaseHandler}),filterRow:d&&l.createElement(I,{columns:b,filter:this.props.filter,filterChange:this.onFilterChange,sort:this.props.sort,ariaRowIndex:u.length+1})||void 0,columnResize:this.columnResize}),R=this.props.style||{},{colSpans:k,hiddenColumns:A}=c.tableColumnsVirtualization({enabled:this.props.columnVirtualization,columns:b,scrollLeft:this.wrapperScrollLeft,tableViewPortWidth:parseFloat((R.width||"").toString())}),j=(a,m,F,z,T,x)=>b.map((h,f)=>{if(A[f])return null;const y=h.id?h.id:f,L=`k-table-td ${h.className?h.className+" ":""}${h.locked?"k-grid-content-sticky":""}`,w={id:c.tableKeyboardNavigationTools.generateNavigatableId(`${F}-${String(f)}`,P),colSpan:k[f],dataItem:a.dataItem,field:h.field,format:h.format,className:L||void 0,render:this.props.cellRender,onChange:this.onItemChange,selectionChange:this.props.onSelectionChange?C=>{this.onSelectionChange({event:C,item:a,columnIndex:f,dataIndex:T})}:void 0,level:a.level,expandable:h.expandable,expanded:z,hasChildren:K.hasChildren(a.dataItem,this.props.subItemsField),colIndex:f,ariaColumnIndex:h.ariaColumnIndex,onExpandChange:this.onExpandChange,style:h.left!==void 0&&{left:h.left,right:h.right,borderRightWidth:h.rightBorder?"1px":""}||{},isSelected:Array.isArray(x)&&x.indexOf(f)>-1};return m&&h.editCell?l.createElement(h.editCell,{...w,onChange:this.onItemChange,key:y}):h.cell?l.createElement(h.cell,{key:y,...w}):l.createElement(D.TreeListCell,{key:y,...w})});let v=this.flatData;const H=v.length;s!==void 0&&i!==void 0&&(v=v.slice(s,s+i)),e==="virtual"&&(v=D.tableRowsVirtualization({rows:v,tableViewPortHeight:parseFloat((R.height||R.maxHeight||"").toString()),scrollTop:this.wrapperScrollTop}),this.updateOnScroll=!1);const U=v.map(a=>a.level),V=u.length+(d?1:0)+1,B=v.length>0&&v.map((a,m)=>{const F=S.getter(this.props.editField||"")(a.dataItem),z=S.getter(this.props.dataItemKey)(a.dataItem),T=String(z||a.level.join(".")),x=K.isExpanded(a.dataItem,this.props.expandField),h=this.props.selectedField?S.getter(this.props.selectedField)(a.dataItem):void 0,f={key:T,level:a.level,levels:U,dataItem:a.dataItem,selectedField:this.props.selectedField,rowHeight:a.height,render:this.props.rowRender,onDrop:this.onRowDrop,onDrag:this.onRowDrag,onClick:C=>this.onRowClick(C,a),onDoubleClick:C=>this.rowDoubleClick(C,a),onContextMenu:C=>this.rowContextMenu(C,a),isAltRow:m%2!==0,expanded:x,rowIndex:m,ariaRowIndex:V+m,ariaSetSize:a.levelCount,ariaPosInSet:a.level[a.level.length-1]+1,isSelected:typeof h=="boolean"&&h},y=this.props.editRow,L=this.props.row||D.TreeListRow,w=j(a,F,T,x,m,h);return F&&y?l.createElement(y,{...f,key:f.key},w):l.createElement(L,{...f,key:f.key},w)})||l.createElement("tr",{className:"k-table-row k-grid-norecords"},l.createElement("td",{className:"k-table-td",colSpan:b.length},this.props.noRecords||l.createElement(D.TreeListNoRecords,null))),q=a=>this.props.sort&&this.props.sort.some(m=>m.field===a),W=l.createElement("colgroup",{ref:a=>{this.columnResize.colGroupMain=a}},b.map((a,m)=>l.createElement("col",{key:m.toString(),className:q(a.field)?"k-sorted":void 0,style:a.width!==void 0?{width:a.width}:void 0}))),$=this.props.columnVirtualization||this.props.scrollable==="virtual",G=this.props.selectable&&this.props.selectable.drag?"none":void 0,_=this.props.tableProps||{};return l.createElement(c.TableKeyboardNavigationContext.Provider,{value:this.contextStateRef.current},l.createElement("div",{id:this.props.treelistId,style:this.props.style,className:S.classNames("k-grid k-grid-md",this.props.className,{"k-treelist-scrollable":e!=="none"}),ref:a=>this.element=a,onScroll:$?this.onScroll:void 0,onKeyDown:this.onKeyDown,onFocus:this.onFocus,"aria-rowcount":H,"aria-colcount":b.length,role:"treegrid",...c.tableKeyboardNavigationScopeAttributes},this.props.toolbar,l.createElement(c.TableSelection,{selectable:this.props.selectable,onRelease:this.selectionRelease,childRef:a=>{this.tableElement=a}},l.createElement("table",{className:"k-table k-table-md",...this.props.tableProps||{},style:{..._.style||{},userSelect:G},role:"presentation"},W,O,l.createElement("tbody",{className:"k-table-tbody",...c.tableKeyboardNavigationBodyAttributes,ref:a=>this.tbodyElement=a,role:"presentation"},B))),this.props.pager&&l.createElement(this.props.pager,{className:"k-grid-pager",total:H,skip:s,take:i,onPageChange:this.onPageChange}),n&&l.createElement(l.Fragment,null,l.createElement(c.DropClue,{ref:this.dragLogic.refDropElementClue}),l.createElement(c.DragClue,{ref:this.dragLogic.refDragElementClue})),r))}get flatData(){const{data:p=[],rowHeight:e=0}=this.props;let t=0;const n=()=>{const i={height:e,offsetTop:t};return t+=i.height,i},s=this.updateOnScroll&&this.prevData===p&&this.tbodyOffsetTop>0&&this.flattedData.length?this.flattedData:p.map(i=>({...i,...n()}));return this.prevData=p,this.flattedData=s,s}onSelectionChange(p){if(this.props.onSelectionChange){const{event:e,item:t,dataIndex:n,columnIndex:s}=p,{mode:i,cell:r}=c.getSelectionOptions(this.props.selectable),g={...this.getEventArguments(e.syntheticEvent),dataItem:t.dataItem,level:t.level,startColIndex:s,endColIndex:s,startRowIndex:n,endRowIndex:n,dataItems:this.getLeafDataItems(),altKey:!1,ctrlKey:!1,shiftKey:!1,metaKey:!1,mode:i,cell:r,isDrag:!1,componentId:this.props.treelistId,selectedField:this.props.selectedField||""};this.props.onSelectionChange.call(void 0,g)}}};N.propTypes={data:o.array,resizable:o.bool,reorderable:o.bool,sortable:o.oneOfType([o.bool,o.shape({mode:o.oneOf(["single","multiple"]),allowUnsort:o.bool})]),onSortChange:o.func,sort:o.array,columns:o.arrayOf(o.object),columnVirtualization:o.bool,filter:o.array,onFilterChange:o.func,filterRow:o.any,toolbar:o.any,noRecords:o.any,onExpandChange:o.func,expandField:o.string,subItemsField:o.string,selectedField:o.string,onSelectionChange:o.func,onHeaderSelectionChange:o.func,onRowClick:o.func,onItemChange:o.func,editField:o.string,scrollable:o.oneOf(["none","scrollable","virtual"]),rowHeight:o.number,style:o.object,tableProps:o.object,pager:o.any,skip:o.number,take:o.number,onPageChange:o.func,onDataStateChange:o.func,onColumnResize:o.func,onColumnReorder:o.func,extendedColumns:o.arrayOf(o.object),columnsMap:o.arrayOf(o.array),dataItemKey:o.string.isRequired,afterContent:o.any,navigatable:o.bool,idPrefix:o.string,treelistId:o.string},N.contextType=c.TableKeyboardNavigationContext;let M=N;exports.GanttTreeList=M;
|