@progress/kendo-react-gantt
Version:
React Gantt enables the display of self-referencing tabular data with many features. KendoReact Gantt package
128 lines (127 loc) • 4.26 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 y, DropDownList as I } from "@progress/kendo-react-dropdowns";
import { Grid as k, GridToolbar as v, GridColumn as T } from "@progress/kendo-react-grid";
import { Button as D } from "@progress/kendo-react-buttons";
import { plusIcon as E, minusIcon as h } from "@progress/kendo-svg-icons";
import { classNames as S } from "@progress/kendo-react-common";
import { messages as b, editorAdd as x, editorRemove as M, editorDependencyNameLabel as L, editorDependencyTypeLabel as F } from "../messages/index.mjs";
import { useLocalization as G } from "@progress/kendo-react-intl";
import { orderBy as N, filterBy as R } from "@progress/kendo-data-query";
const B = (n) => {
const { selectedItem: s, updateDependency: d, flatTasks: a } = t.useContext(f), e = n.dataItem, [o, l] = t.useState(a), r = (c) => {
d(e, "toId", c.target.value.id);
}, i = () => {
if (s && !e.uid)
return s.id === e.id;
if (s && e.id === null)
return s.uid === e.uid;
}, p = t.useMemo(() => y(a, "id", e.toId), [a, e.toId]), m = (c) => {
const u = R(a, c.filter);
l(u);
};
return /* @__PURE__ */ t.createElement("td", { className: S(i() && "k-selected") }, /* @__PURE__ */ t.createElement(
I,
{
textField: "title",
data: o,
value: p,
onChange: r,
filterable: !0,
onFilterChange: m,
required: !0
}
));
}, w = (n) => {
const { selectedItem: s, updateDependency: d, dependencyTypes: a } = t.useContext(f), e = n.dataItem, o = (i) => {
d(e, "type", i.target.value.type);
}, l = () => {
if (s && !e.uid)
return s.id === e.id;
if (s && e.id === null)
return s.uid === e.uid;
}, r = t.useMemo(() => y(a, "type", e.type), [a, e.type]);
return /* @__PURE__ */ t.createElement("td", { className: S(l() && "k-selected") }, /* @__PURE__ */ t.createElement(I, { textField: "name", data: a, value: r, onChange: o }));
}, f = t.createContext({
flatTasks: [],
dependencyTypes: [],
selectedItem: void 0,
updateDependency: () => {
}
}), K = (n) => {
var m;
const [s, d] = t.useState([]), a = G(), e = (c) => a.toLanguageString(c, b[c]), o = e(x), l = e(M), r = e(L), i = e(F), p = t.useMemo(() => {
const c = n.successors.map((u) => {
const g = y(n.flatTasks, "id", u.toId), C = y(n.dependencyTypes, "type", u.type);
return {
...u,
taskTitle: g ? g.title : "",
typeName: C ? C.type : ""
};
});
return N(c, s);
}, [n.successors, n.dependencyTypes, n.flatTasks, s]);
return /* @__PURE__ */ t.createElement(
f.Provider,
{
value: {
flatTasks: n.flatTasks,
dependencyTypes: n.dependencyTypes,
selectedItem: n.selectedItem,
updateDependency: n.updateDependency
}
},
/* @__PURE__ */ t.createElement(
k,
{
data: p,
sort: s,
sortable: !0,
onRowClick: n.onSelectRow,
onSortChange: (c) => {
d(c.sort);
},
style: { height: "23em" }
},
/* @__PURE__ */ t.createElement(v, null, /* @__PURE__ */ t.createElement(D, { icon: "plus", svgIcon: E, onClick: n.addSuccessorsDependency }, o), /* @__PURE__ */ t.createElement(
D,
{
icon: "minus",
svgIcon: h,
onClick: n.deleteDependency,
disabled: ((m = n.selectedItem) == null ? void 0 : m.id) === void 0
},
l
)),
/* @__PURE__ */ t.createElement(
T,
{
field: "taskTitle",
title: r,
cells: {
data: B
}
}
),
/* @__PURE__ */ t.createElement(
T,
{
field: "type",
title: i,
cells: {
data: w
}
}
)
)
);
};
export {
K as GanttEditorSuccessors
};