UNPKG

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