UNPKG

@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
/** * @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 };