@progress/kendo-react-gantt
Version:
React Gantt enables the display of self-referencing tabular data with many features. KendoReact Gantt package
131 lines (130 loc) • 4.32 kB
JavaScript
/**
* @license
*-------------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the package root for more information
*-------------------------------------------------------------------------------------------
*/
import * as t from "react";
import { findByFieldValue as p, DropDownList as I } from "@progress/kendo-react-dropdowns";
import { Grid as k, GridToolbar as v, GridColumn as C } from "@progress/kendo-react-grid";
import { Button as D } from "@progress/kendo-react-buttons";
import { plusIcon as E, minusIcon as S } from "@progress/kendo-svg-icons";
import { classNames as h } from "@progress/kendo-react-common";
import { messages as b, editorAdd as M, editorRemove as x, editorDependencyNameLabel as L, editorDependencyTypeLabel as N } from "../messages/index.mjs";
import { useLocalization as P } from "@progress/kendo-react-intl";
import { orderBy as R, filterBy as F } from "@progress/kendo-data-query";
const G = (n) => {
const { selectedItem: s, updateDependency: r, flatTasks: d } = t.useContext(g), e = n.dataItem, [c, l] = t.useState(d), i = t.useRef(null), m = (o) => {
r(e, "fromId", o.target.value.id);
}, f = () => {
if (s && !e.uid)
return s.id === e.id;
if (s && e.id === null)
return s.uid === e.uid;
}, u = t.useMemo(
() => p(d, "id", e.fromId),
[d, e.fromId]
), a = (o) => {
const y = F(d, o.filter);
l(y);
};
return /* @__PURE__ */ t.createElement("td", { ref: i, className: h(f() && "k-selected") }, /* @__PURE__ */ t.createElement(
I,
{
textField: "title",
data: c,
value: u,
onChange: m,
filterable: !0,
onFilterChange: a,
required: !0
}
));
}, B = (n) => {
const { selectedItem: s, updateDependency: r, dependencyTypes: d } = t.useContext(g), e = n.dataItem, c = (m) => {
r(e, "type", m.target.value.type);
}, l = () => {
if (s && !e.uid)
return s.id === e.id;
if (s && e.id === null)
return s.uid === e.uid;
}, i = t.useMemo(() => p(d, "type", e.type), [d, e.type]);
return /* @__PURE__ */ t.createElement("td", { className: h(l() && "k-selected") }, /* @__PURE__ */ t.createElement(I, { textField: "name", data: d, value: i, onChange: c }));
}, g = t.createContext({
flatTasks: [],
dependencyTypes: [],
selectedItem: void 0,
updateDependency: () => {
}
}), J = (n) => {
var u;
const [s, r] = t.useState([]), d = P(), e = (a) => d.toLanguageString(a, b[a]), c = e(M), l = e(x), i = e(L), m = e(N), f = t.useMemo(() => {
const a = n.predecessors.map((o) => {
const y = p(n.flatTasks, "id", o.fromId), T = p(n.dependencyTypes, "type", o.type);
return {
...o,
taskTitle: y ? y.title : "",
typeName: T ? T.type : ""
};
});
return R(a, s);
}, [n.predecessors, n.dependencyTypes, n.flatTasks, s]);
return /* @__PURE__ */ t.createElement(
g.Provider,
{
value: {
flatTasks: n.flatTasks,
dependencyTypes: n.dependencyTypes,
selectedItem: n.selectedItem,
updateDependency: n.updateDependency
}
},
/* @__PURE__ */ t.createElement(
k,
{
data: f,
sort: s,
sortable: !0,
onRowClick: n.onSelectRow,
onSortChange: (a) => {
r(a.sort);
},
style: { height: "23em" }
},
/* @__PURE__ */ t.createElement(v, null, /* @__PURE__ */ t.createElement(D, { icon: "plus", svgIcon: E, onClick: n.addPredecessorsDependency }, c), /* @__PURE__ */ t.createElement(
D,
{
icon: "minus",
svgIcon: S,
onClick: n.deleteDependency,
disabled: ((u = n.selectedItem) == null ? void 0 : u.id) === void 0
},
l
)),
/* @__PURE__ */ t.createElement(
C,
{
field: "taskTitle",
title: i,
cells: {
data: G
}
}
),
/* @__PURE__ */ t.createElement(
C,
{
field: "typeName",
title: m,
cells: {
data: B
}
}
)
)
);
};
export {
J as GanttEditorPredecessors
};