gantt-lib 0.131.0 → 0.132.0
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/README.md +1 -0
- package/dist/core/scheduling/index.d.mts +1 -1
- package/dist/core/scheduling/index.d.ts +1 -1
- package/dist/core/scheduling/index.js +1 -1
- package/dist/core/scheduling/index.js.map +1 -1
- package/dist/core/scheduling/index.mjs +1 -1
- package/dist/core/scheduling/index.mjs.map +1 -1
- package/dist/{index-CZ_2i1CO.d.mts → index-5SEBp7fs.d.mts} +5 -3
- package/dist/{index-CZ_2i1CO.d.ts → index-5SEBp7fs.d.ts} +5 -3
- package/dist/index.css.map +1 -1
- package/dist/index.d.mts +22 -3
- package/dist/index.d.ts +22 -3
- package/dist/index.js +310 -219
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +256 -166
- package/dist/index.mjs.map +1 -1
- package/dist/styles.css +105 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -39,6 +39,7 @@ __export(index_exports, {
|
|
|
39
39
|
DatePicker: () => DatePicker,
|
|
40
40
|
DragGuideLines: () => DragGuideLines_default,
|
|
41
41
|
GanttChart: () => GanttChart,
|
|
42
|
+
GenerationSkeletonRows: () => GenerationSkeleton_default,
|
|
42
43
|
GridBackground: () => GridBackground_default,
|
|
43
44
|
Input: () => Input,
|
|
44
45
|
PlanFactMatrix: () => PlanFactMatrix,
|
|
@@ -1479,7 +1480,7 @@ function resizeTaskWithCascade(taskId, anchor, newDate, snapshot, options) {
|
|
|
1479
1480
|
const originalStart = parseDateOnly(task.startDate);
|
|
1480
1481
|
const originalEnd = parseDateOnly(task.endDate);
|
|
1481
1482
|
let newRange;
|
|
1482
|
-
if (anchor === "
|
|
1483
|
+
if (anchor === "start") {
|
|
1483
1484
|
newRange = { start: originalStart, end: newDate };
|
|
1484
1485
|
} else {
|
|
1485
1486
|
newRange = { start: newDate, end: originalEnd };
|
|
@@ -8642,6 +8643,55 @@ var NewTaskRow = ({
|
|
|
8642
8643
|
] });
|
|
8643
8644
|
};
|
|
8644
8645
|
|
|
8646
|
+
// src/components/GenerationSkeleton/GenerationSkeleton.tsx
|
|
8647
|
+
var import_jsx_runtime16 = require("react/jsx-runtime");
|
|
8648
|
+
var MAX_SKELETON_ROWS = 200;
|
|
8649
|
+
function clampCount(count) {
|
|
8650
|
+
if (!Number.isFinite(count)) return 0;
|
|
8651
|
+
return Math.min(MAX_SKELETON_ROWS, Math.max(0, Math.floor(count)));
|
|
8652
|
+
}
|
|
8653
|
+
var GenerationSkeletonRows = ({
|
|
8654
|
+
count,
|
|
8655
|
+
rowHeight,
|
|
8656
|
+
variant,
|
|
8657
|
+
startIndex = 0,
|
|
8658
|
+
taskListLayout,
|
|
8659
|
+
chartDayWidth = 40
|
|
8660
|
+
}) => {
|
|
8661
|
+
const safeCount = clampCount(count);
|
|
8662
|
+
if (safeCount === 0) return null;
|
|
8663
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
8664
|
+
"div",
|
|
8665
|
+
{
|
|
8666
|
+
className: `gantt-generation-skeleton gantt-generation-skeleton-${variant}`,
|
|
8667
|
+
"aria-hidden": "true",
|
|
8668
|
+
style: taskListLayout ? {
|
|
8669
|
+
"--skeleton-name-left": `${taskListLayout.nameLeft}px`,
|
|
8670
|
+
"--skeleton-name-width": `${taskListLayout.nameWidth}px`
|
|
8671
|
+
} : void 0,
|
|
8672
|
+
children: Array.from({ length: safeCount }, (_, index) => {
|
|
8673
|
+
const rowIndex = startIndex + index;
|
|
8674
|
+
const parentShape = rowIndex % 4 === 0;
|
|
8675
|
+
const shortShape = rowIndex % 3 === 1;
|
|
8676
|
+
const mediumShape = rowIndex % 3 === 2;
|
|
8677
|
+
const chartBarDays = 5 + rowIndex % 6;
|
|
8678
|
+
const chartBarStyle = variant === "chart" ? { width: `${chartBarDays * Math.max(1, chartDayWidth)}px` } : void 0;
|
|
8679
|
+
return /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
|
|
8680
|
+
"div",
|
|
8681
|
+
{
|
|
8682
|
+
className: "gantt-generation-skeleton-row",
|
|
8683
|
+
style: { top: `${rowIndex * rowHeight}px`, height: `${rowHeight}px` },
|
|
8684
|
+
children: variant === "task-list" ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_jsx_runtime16.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: `gantt-generation-skeleton-label ${shortShape ? "gantt-generation-skeleton-label-short" : ""} ${mediumShape ? "gantt-generation-skeleton-label-medium" : ""}` }) }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: `gantt-generation-skeleton-bar ${parentShape ? "gantt-generation-skeleton-bar-parent" : ""} ${shortShape ? "gantt-generation-skeleton-bar-short" : ""}`, style: chartBarStyle })
|
|
8685
|
+
},
|
|
8686
|
+
rowIndex
|
|
8687
|
+
);
|
|
8688
|
+
})
|
|
8689
|
+
}
|
|
8690
|
+
);
|
|
8691
|
+
};
|
|
8692
|
+
GenerationSkeletonRows.displayName = "GenerationSkeletonRows";
|
|
8693
|
+
var GenerationSkeleton_default = GenerationSkeletonRows;
|
|
8694
|
+
|
|
8645
8695
|
// src/components/TaskList/columns/createBuiltInColumns.tsx
|
|
8646
8696
|
var BUILT_IN_COLUMN_WIDTHS = {
|
|
8647
8697
|
selection: 36,
|
|
@@ -8729,7 +8779,7 @@ function resolveTaskListColumns(builtIn, custom, hiddenColumnIds = []) {
|
|
|
8729
8779
|
}
|
|
8730
8780
|
|
|
8731
8781
|
// src/components/TaskList/TaskList.tsx
|
|
8732
|
-
var
|
|
8782
|
+
var import_jsx_runtime17 = require("react/jsx-runtime");
|
|
8733
8783
|
var LINK_TYPE_ORDER2 = ["FS", "SS", "FF", "SF"];
|
|
8734
8784
|
var MIN_TASK_LIST_WIDTH = 530;
|
|
8735
8785
|
var DEFAULT_COLUMN_MIN_WIDTH = 40;
|
|
@@ -8867,7 +8917,7 @@ var SelectAllCheckbox = ({
|
|
|
8867
8917
|
ref.current.indeterminate = indeterminate;
|
|
8868
8918
|
}
|
|
8869
8919
|
}, [indeterminate]);
|
|
8870
|
-
return /* @__PURE__ */ (0,
|
|
8920
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
8871
8921
|
"input",
|
|
8872
8922
|
{
|
|
8873
8923
|
ref,
|
|
@@ -8936,7 +8986,8 @@ var TaskList = ({
|
|
|
8936
8986
|
bodyMinHeight,
|
|
8937
8987
|
taskDateChangeMode = "preserve-duration",
|
|
8938
8988
|
onTaskDateChangeModeChange,
|
|
8939
|
-
visibleRowIndices
|
|
8989
|
+
visibleRowIndices,
|
|
8990
|
+
skeletonRowCount = 0
|
|
8940
8991
|
}) => {
|
|
8941
8992
|
const reorderDisabled = disableTaskListReorder || disableTaskDrag;
|
|
8942
8993
|
const [internalSelectedTaskIds, setInternalSelectedTaskIds] = (0, import_react13.useState)(/* @__PURE__ */ new Set());
|
|
@@ -8990,8 +9041,8 @@ var TaskList = ({
|
|
|
8990
9041
|
return tasks2;
|
|
8991
9042
|
}, [orderedTasks, collapsedParentIds, filterMode, filteredTaskIds, isFilterActive, criticalPathMode, criticalTaskIds]);
|
|
8992
9043
|
const totalHeight = (0, import_react13.useMemo)(
|
|
8993
|
-
() => visibleTasks.length * rowHeight,
|
|
8994
|
-
[visibleTasks.length
|
|
9044
|
+
() => (visibleTasks.length + Math.max(0, Math.floor(skeletonRowCount))) * rowHeight,
|
|
9045
|
+
[rowHeight, skeletonRowCount, visibleTasks.length]
|
|
8995
9046
|
);
|
|
8996
9047
|
const visibleTaskNumberMap = (0, import_react13.useMemo)(
|
|
8997
9048
|
() => Object.fromEntries(
|
|
@@ -9679,6 +9730,22 @@ var TaskList = ({
|
|
|
9679
9730
|
() => resolvedColumns.reduce((sum, col) => sum + (col.width ?? 120), 0),
|
|
9680
9731
|
[resolvedColumns]
|
|
9681
9732
|
);
|
|
9733
|
+
const generationSkeletonTaskListLayout = (0, import_react13.useMemo)(() => {
|
|
9734
|
+
let left = 0;
|
|
9735
|
+
const layout = {
|
|
9736
|
+
nameLeft: 40,
|
|
9737
|
+
nameWidth: 200
|
|
9738
|
+
};
|
|
9739
|
+
for (const column of resolvedColumns) {
|
|
9740
|
+
const width = column.width ?? 120;
|
|
9741
|
+
if (column.id === "name") {
|
|
9742
|
+
layout.nameLeft = left;
|
|
9743
|
+
layout.nameWidth = width;
|
|
9744
|
+
}
|
|
9745
|
+
left += width;
|
|
9746
|
+
}
|
|
9747
|
+
return layout;
|
|
9748
|
+
}, [resolvedColumns]);
|
|
9682
9749
|
const requestedTaskListWidth = taskListWidth ?? Math.min(MIN_TASK_LIST_WIDTH, resolvedColumnWidthTotal);
|
|
9683
9750
|
const effectiveTaskListWidth = Math.max(requestedTaskListWidth, resolvedColumnWidthTotal);
|
|
9684
9751
|
const tableHeaderHeight = headerHeight + 1;
|
|
@@ -9740,7 +9807,7 @@ var TaskList = ({
|
|
|
9740
9807
|
document.body.style.cursor = "col-resize";
|
|
9741
9808
|
document.body.style.userSelect = "none";
|
|
9742
9809
|
}, [resolvedColumns]);
|
|
9743
|
-
const renderResizeHandle = (0, import_react13.useCallback)((columnId) => /* @__PURE__ */ (0,
|
|
9810
|
+
const renderResizeHandle = (0, import_react13.useCallback)((columnId) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
9744
9811
|
"button",
|
|
9745
9812
|
{
|
|
9746
9813
|
type: "button",
|
|
@@ -9754,7 +9821,7 @@ var TaskList = ({
|
|
|
9754
9821
|
}
|
|
9755
9822
|
}
|
|
9756
9823
|
), [startColumnResize]);
|
|
9757
|
-
return /* @__PURE__ */ (0,
|
|
9824
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
9758
9825
|
"div",
|
|
9759
9826
|
{
|
|
9760
9827
|
ref: overlayRef,
|
|
@@ -9763,17 +9830,17 @@ var TaskList = ({
|
|
|
9763
9830
|
"--tasklist-width": `${effectiveTaskListWidth}px`,
|
|
9764
9831
|
"--gantt-row-content-lines": String(Math.max(2, Math.floor(rowContentLines)))
|
|
9765
9832
|
},
|
|
9766
|
-
children: /* @__PURE__ */ (0,
|
|
9767
|
-
/* @__PURE__ */ (0,
|
|
9833
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "gantt-tl-table", children: [
|
|
9834
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "gantt-tl-header", style: { height: `${tableHeaderHeight}px` }, children: resolvedColumns.map((col) => {
|
|
9768
9835
|
if (col.id === "selection") {
|
|
9769
|
-
return /* @__PURE__ */ (0,
|
|
9836
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
9770
9837
|
"div",
|
|
9771
9838
|
{
|
|
9772
9839
|
className: "gantt-tl-headerCell gantt-tl-cell-selection",
|
|
9773
9840
|
"data-column-id": "selection",
|
|
9774
9841
|
style: { width: col.width, minWidth: col.width, maxWidth: col.width, flex: `0 0 ${col.width}px`, position: "relative" },
|
|
9775
9842
|
children: [
|
|
9776
|
-
/* @__PURE__ */ (0,
|
|
9843
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
9777
9844
|
SelectAllCheckbox,
|
|
9778
9845
|
{
|
|
9779
9846
|
checked: areAllVisibleTasksSelected,
|
|
@@ -9788,15 +9855,15 @@ var TaskList = ({
|
|
|
9788
9855
|
);
|
|
9789
9856
|
}
|
|
9790
9857
|
if (col.id === "dependencies") {
|
|
9791
|
-
return /* @__PURE__ */ (0,
|
|
9858
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
9792
9859
|
"div",
|
|
9793
9860
|
{
|
|
9794
9861
|
className: "gantt-tl-headerCell gantt-tl-cell-deps",
|
|
9795
9862
|
"data-column-id": "dependencies",
|
|
9796
9863
|
style: { width: col.width, minWidth: col.width, maxWidth: col.width, flex: `0 0 ${col.width}px`, position: "relative" },
|
|
9797
9864
|
children: [
|
|
9798
|
-
/* @__PURE__ */ (0,
|
|
9799
|
-
/* @__PURE__ */ (0,
|
|
9865
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(Popover, { open: typeMenuOpen, onOpenChange: setTypeMenuOpen, children: [
|
|
9866
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
9800
9867
|
"button",
|
|
9801
9868
|
{
|
|
9802
9869
|
className: "gantt-tl-dep-type-trigger",
|
|
@@ -9809,7 +9876,7 @@ var TaskList = ({
|
|
|
9809
9876
|
]
|
|
9810
9877
|
}
|
|
9811
9878
|
) }),
|
|
9812
|
-
/* @__PURE__ */ (0,
|
|
9879
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(PopoverContent, { portal: true, align: "start", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "gantt-tl-dep-type-menu", children: LINK_TYPE_ORDER2.map((lt) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
9813
9880
|
"button",
|
|
9814
9881
|
{
|
|
9815
9882
|
className: `gantt-tl-dep-type-option${activeLinkType === lt ? " active" : ""}`,
|
|
@@ -9819,13 +9886,13 @@ var TaskList = ({
|
|
|
9819
9886
|
},
|
|
9820
9887
|
children: [
|
|
9821
9888
|
import_react13.default.createElement(LINK_TYPE_ICONS[lt]),
|
|
9822
|
-
/* @__PURE__ */ (0,
|
|
9889
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { children: LINK_TYPE_LABELS[lt] })
|
|
9823
9890
|
]
|
|
9824
9891
|
},
|
|
9825
9892
|
lt
|
|
9826
9893
|
)) }) })
|
|
9827
9894
|
] }),
|
|
9828
|
-
dependencyError && /* @__PURE__ */ (0,
|
|
9895
|
+
dependencyError && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("div", { className: "gantt-tl-dep-error", children: dependencyError }),
|
|
9829
9896
|
renderResizeHandle(col.id)
|
|
9830
9897
|
]
|
|
9831
9898
|
},
|
|
@@ -9834,7 +9901,7 @@ var TaskList = ({
|
|
|
9834
9901
|
}
|
|
9835
9902
|
const builtInClass = BUILT_IN_CSS_CLASSES[col.id];
|
|
9836
9903
|
if (builtInClass !== void 0) {
|
|
9837
|
-
return /* @__PURE__ */ (0,
|
|
9904
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
9838
9905
|
"div",
|
|
9839
9906
|
{
|
|
9840
9907
|
className: `gantt-tl-headerCell ${builtInClass}`,
|
|
@@ -9848,7 +9915,7 @@ var TaskList = ({
|
|
|
9848
9915
|
col.id
|
|
9849
9916
|
);
|
|
9850
9917
|
}
|
|
9851
|
-
return /* @__PURE__ */ (0,
|
|
9918
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
9852
9919
|
"div",
|
|
9853
9920
|
{
|
|
9854
9921
|
className: `gantt-tl-headerCell gantt-tl-headerCell-custom gantt-tl-cell-align-${col.align ?? "left"}`,
|
|
@@ -9863,7 +9930,7 @@ var TaskList = ({
|
|
|
9863
9930
|
col.id
|
|
9864
9931
|
);
|
|
9865
9932
|
}) }),
|
|
9866
|
-
/* @__PURE__ */ (0,
|
|
9933
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
9867
9934
|
"div",
|
|
9868
9935
|
{
|
|
9869
9936
|
className: "gantt-tl-body",
|
|
@@ -9873,7 +9940,7 @@ var TaskList = ({
|
|
|
9873
9940
|
position: "relative"
|
|
9874
9941
|
},
|
|
9875
9942
|
children: [
|
|
9876
|
-
shouldShowBeforeFirstDropZone && /* @__PURE__ */ (0,
|
|
9943
|
+
shouldShowBeforeFirstDropZone && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
9877
9944
|
"div",
|
|
9878
9945
|
{
|
|
9879
9946
|
className: [
|
|
@@ -9890,7 +9957,7 @@ var TaskList = ({
|
|
|
9890
9957
|
const previousVisibleTask = index > 0 ? visibleTasks[index - 1] : void 0;
|
|
9891
9958
|
const canDemoteTask = index === 0 || !task.parentId || previousVisibleTask?.id !== task.parentId;
|
|
9892
9959
|
const topOffset = index * rowHeight + (hasVisiblePendingInsert && index > pendingInsertRowIndex ? rowHeight : 0);
|
|
9893
|
-
return /* @__PURE__ */ (0,
|
|
9960
|
+
return /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
9894
9961
|
"div",
|
|
9895
9962
|
{
|
|
9896
9963
|
style: {
|
|
@@ -9899,7 +9966,7 @@ var TaskList = ({
|
|
|
9899
9966
|
left: 0,
|
|
9900
9967
|
right: 0
|
|
9901
9968
|
},
|
|
9902
|
-
children: /* @__PURE__ */ (0,
|
|
9969
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
9903
9970
|
TaskListRow,
|
|
9904
9971
|
{
|
|
9905
9972
|
task,
|
|
@@ -9973,7 +10040,7 @@ var TaskList = ({
|
|
|
9973
10040
|
task.id
|
|
9974
10041
|
);
|
|
9975
10042
|
}),
|
|
9976
|
-
hasVisiblePendingInsert && /* @__PURE__ */ (0,
|
|
10043
|
+
hasVisiblePendingInsert && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
9977
10044
|
"div",
|
|
9978
10045
|
{
|
|
9979
10046
|
style: {
|
|
@@ -9982,7 +10049,7 @@ var TaskList = ({
|
|
|
9982
10049
|
left: 0,
|
|
9983
10050
|
right: 0
|
|
9984
10051
|
},
|
|
9985
|
-
children: /* @__PURE__ */ (0,
|
|
10052
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
9986
10053
|
NewTaskRow,
|
|
9987
10054
|
{
|
|
9988
10055
|
rowHeight,
|
|
@@ -9992,11 +10059,21 @@ var TaskList = ({
|
|
|
9992
10059
|
}
|
|
9993
10060
|
)
|
|
9994
10061
|
}
|
|
10062
|
+
),
|
|
10063
|
+
/* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
10064
|
+
GenerationSkeleton_default,
|
|
10065
|
+
{
|
|
10066
|
+
count: skeletonRowCount,
|
|
10067
|
+
rowHeight,
|
|
10068
|
+
variant: "task-list",
|
|
10069
|
+
startIndex: visibleTasks.length,
|
|
10070
|
+
taskListLayout: generationSkeletonTaskListLayout
|
|
10071
|
+
}
|
|
9995
10072
|
)
|
|
9996
10073
|
]
|
|
9997
10074
|
}
|
|
9998
10075
|
),
|
|
9999
|
-
isCreating && !pendingInsert && /* @__PURE__ */ (0,
|
|
10076
|
+
isCreating && !pendingInsert && /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
|
|
10000
10077
|
NewTaskRow,
|
|
10001
10078
|
{
|
|
10002
10079
|
rowHeight,
|
|
@@ -10005,7 +10082,7 @@ var TaskList = ({
|
|
|
10005
10082
|
nestingDepth: 0
|
|
10006
10083
|
}
|
|
10007
10084
|
),
|
|
10008
|
-
enableAddTask && onAdd && !isCreating && !pendingInsert && /* @__PURE__ */ (0,
|
|
10085
|
+
enableAddTask && onAdd && !isCreating && !pendingInsert && /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
|
|
10009
10086
|
"button",
|
|
10010
10087
|
{
|
|
10011
10088
|
className: `gantt-tl-add-btn${!reorderDisabled && dragOverTarget?.index === visibleTasks.length ? " gantt-tl-add-btn-drag-over" : ""}`,
|
|
@@ -10499,7 +10576,7 @@ var useResourceItemDrag = ({
|
|
|
10499
10576
|
};
|
|
10500
10577
|
|
|
10501
10578
|
// src/components/ResourceTimelineChart/ResourceTimelineChart.tsx
|
|
10502
|
-
var
|
|
10579
|
+
var import_jsx_runtime18 = require("react/jsx-runtime");
|
|
10503
10580
|
var DEFAULT_DAY_WIDTH = 40;
|
|
10504
10581
|
var DEFAULT_HEADER_HEIGHT = 40;
|
|
10505
10582
|
var DEFAULT_LANE_HEIGHT = 40;
|
|
@@ -10662,41 +10739,41 @@ var orderResourcesByType = (resources) => {
|
|
|
10662
10739
|
};
|
|
10663
10740
|
var ResourceTypeIcon = ({ type }) => {
|
|
10664
10741
|
if (type === "\u041B\u044E\u0434\u0438") {
|
|
10665
|
-
return /* @__PURE__ */ (0,
|
|
10666
|
-
/* @__PURE__ */ (0,
|
|
10667
|
-
/* @__PURE__ */ (0,
|
|
10668
|
-
/* @__PURE__ */ (0,
|
|
10669
|
-
/* @__PURE__ */ (0,
|
|
10742
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconPeople", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
10743
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2" }),
|
|
10744
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("circle", { cx: "9", cy: "7", r: "4" }),
|
|
10745
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M22 21v-2a4 4 0 0 0-3-3.87" }),
|
|
10746
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M16 3.13a4 4 0 0 1 0 7.75" })
|
|
10670
10747
|
] });
|
|
10671
10748
|
}
|
|
10672
10749
|
if (type === "\u041E\u0431\u043E\u0440\u0443\u0434\u043E\u0432\u0430\u043D\u0438\u0435") {
|
|
10673
|
-
return /* @__PURE__ */ (0,
|
|
10674
|
-
/* @__PURE__ */ (0,
|
|
10675
|
-
/* @__PURE__ */ (0,
|
|
10676
|
-
/* @__PURE__ */ (0,
|
|
10750
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconEquipment", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
10751
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9" }),
|
|
10752
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "m18 15 4-4" }),
|
|
10753
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5" })
|
|
10677
10754
|
] });
|
|
10678
10755
|
}
|
|
10679
10756
|
if (type === "\u041C\u0430\u0442\u0435\u0440\u0438\u0430\u043B\u044B") {
|
|
10680
|
-
return /* @__PURE__ */ (0,
|
|
10681
|
-
/* @__PURE__ */ (0,
|
|
10682
|
-
/* @__PURE__ */ (0,
|
|
10683
|
-
/* @__PURE__ */ (0,
|
|
10757
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconMaterials", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
10758
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M10 22v-8" }),
|
|
10759
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M2.336 8.89 10 14l11.715-7.029" }),
|
|
10760
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M22 14a2 2 0 0 1-.971 1.715l-10 6a2 2 0 0 1-2.138-.05l-6-4A2 2 0 0 1 2 16v-6a2 2 0 0 1 .971-1.715l10-6a2 2 0 0 1 2.138.05l6 4A2 2 0 0 1 22 8z" })
|
|
10684
10761
|
] });
|
|
10685
10762
|
}
|
|
10686
|
-
return /* @__PURE__ */ (0,
|
|
10687
|
-
/* @__PURE__ */ (0,
|
|
10688
|
-
/* @__PURE__ */ (0,
|
|
10689
|
-
/* @__PURE__ */ (0,
|
|
10763
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceTypeIcon gantt-resourceTimeline-resourceTypeIconOther", width: "16", height: "16", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
10764
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("circle", { cx: "12", cy: "12", r: "9" }),
|
|
10765
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M12 8v4" }),
|
|
10766
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M12 16h.01" })
|
|
10690
10767
|
] });
|
|
10691
10768
|
};
|
|
10692
|
-
var ResourceTypeDropdownIcon = () => /* @__PURE__ */ (0,
|
|
10693
|
-
var ResourceGroupChevronIcon = () => /* @__PURE__ */ (0,
|
|
10769
|
+
var ResourceTypeDropdownIcon = () => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("svg", { className: "gantt-resourceTimeline-resourceTypeDropdownIcon", width: "10", height: "10", viewBox: "0 0 10 10", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M2 3.5 5 6.5 8 3.5" }) });
|
|
10770
|
+
var ResourceGroupChevronIcon = () => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("svg", { className: "gantt-resourceTimeline-resourceGroupChevronIcon", width: "12", height: "12", viewBox: "0 0 12 12", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M4 2.5 7.5 6 4 9.5" }) });
|
|
10694
10771
|
function isInactiveResourceStatus(status) {
|
|
10695
10772
|
return status?.trim().toLocaleLowerCase() === "inactive";
|
|
10696
10773
|
}
|
|
10697
|
-
var ResourceStatusLockIcon = () => /* @__PURE__ */ (0,
|
|
10698
|
-
/* @__PURE__ */ (0,
|
|
10699
|
-
/* @__PURE__ */ (0,
|
|
10774
|
+
var ResourceStatusLockIcon = () => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceStatusIcon", width: "12", height: "12", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
10775
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("rect", { x: "5", y: "11", width: "14", height: "10", rx: "2" }),
|
|
10776
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("path", { d: "M8 11V8a4 4 0 1 1 8 0v3" })
|
|
10700
10777
|
] });
|
|
10701
10778
|
var ResourceHeader = ({
|
|
10702
10779
|
resource,
|
|
@@ -10786,7 +10863,7 @@ var ResourceHeader = ({
|
|
|
10786
10863
|
handleNameCancel();
|
|
10787
10864
|
}
|
|
10788
10865
|
}, [applyResourcePatch, handleNameCancel, nameValue, resource.name]);
|
|
10789
|
-
return /* @__PURE__ */ (0,
|
|
10866
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
10790
10867
|
"div",
|
|
10791
10868
|
{
|
|
10792
10869
|
className: `gantt-resourceTimeline-resourceHeader${menuOpen ? " gantt-resourceTimeline-resourceHeaderMenuOpen" : ""}${isInactive ? " gantt-resourceTimeline-resourceHeaderInactive" : ""}`,
|
|
@@ -10797,10 +10874,10 @@ var ResourceHeader = ({
|
|
|
10797
10874
|
gridTemplateColumns: columnTemplate
|
|
10798
10875
|
},
|
|
10799
10876
|
children: [
|
|
10800
|
-
/* @__PURE__ */ (0,
|
|
10801
|
-
/* @__PURE__ */ (0,
|
|
10802
|
-
/* @__PURE__ */ (0,
|
|
10803
|
-
/* @__PURE__ */ (0,
|
|
10877
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceNumber", children: rowIndex + 1 }),
|
|
10878
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceName", children: [
|
|
10879
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Popover, { open: typeMenuOpen, onOpenChange: setTypeMenuOpen, children: [
|
|
10880
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
10804
10881
|
"button",
|
|
10805
10882
|
{
|
|
10806
10883
|
type: "button",
|
|
@@ -10813,12 +10890,12 @@ var ResourceHeader = ({
|
|
|
10813
10890
|
setTypeMenuOpen((open) => !open);
|
|
10814
10891
|
},
|
|
10815
10892
|
children: [
|
|
10816
|
-
/* @__PURE__ */ (0,
|
|
10817
|
-
/* @__PURE__ */ (0,
|
|
10893
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ResourceTypeIcon, { type }),
|
|
10894
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ResourceTypeDropdownIcon, {})
|
|
10818
10895
|
]
|
|
10819
10896
|
}
|
|
10820
10897
|
) }),
|
|
10821
|
-
/* @__PURE__ */ (0,
|
|
10898
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverContent, { className: "gantt-resourceTimeline-resourceOptionMenu", portal: true, align: "start", children: RESOURCE_TYPE_OPTIONS.map((option) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
10822
10899
|
"button",
|
|
10823
10900
|
{
|
|
10824
10901
|
type: "button",
|
|
@@ -10829,14 +10906,14 @@ var ResourceHeader = ({
|
|
|
10829
10906
|
applyResourcePatch({ type: option });
|
|
10830
10907
|
},
|
|
10831
10908
|
children: [
|
|
10832
|
-
/* @__PURE__ */ (0,
|
|
10909
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceOptionIcon", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ResourceTypeIcon, { type: option }) }),
|
|
10833
10910
|
option
|
|
10834
10911
|
]
|
|
10835
10912
|
},
|
|
10836
10913
|
option
|
|
10837
10914
|
)) })
|
|
10838
10915
|
] }),
|
|
10839
|
-
editingName ? /* @__PURE__ */ (0,
|
|
10916
|
+
editingName ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
10840
10917
|
Input,
|
|
10841
10918
|
{
|
|
10842
10919
|
ref: nameInputRef,
|
|
@@ -10848,7 +10925,7 @@ var ResourceHeader = ({
|
|
|
10848
10925
|
"aria-label": `\u041D\u043E\u0432\u043E\u0435 \u043D\u0430\u0437\u0432\u0430\u043D\u0438\u0435 \u0440\u0435\u0441\u0443\u0440\u0441\u0430 ${resource.name}`,
|
|
10849
10926
|
className: "gantt-tl-name-input gantt-resourceTimeline-resourceNameInput"
|
|
10850
10927
|
}
|
|
10851
|
-
) : /* @__PURE__ */ (0,
|
|
10928
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
10852
10929
|
"button",
|
|
10853
10930
|
{
|
|
10854
10931
|
type: "button",
|
|
@@ -10860,23 +10937,23 @@ var ResourceHeader = ({
|
|
|
10860
10937
|
onResourceNameClick?.(resourceId);
|
|
10861
10938
|
},
|
|
10862
10939
|
onDoubleClick: handleNameDoubleClick,
|
|
10863
|
-
children: /* @__PURE__ */ (0,
|
|
10864
|
-
isInactive && /* @__PURE__ */ (0,
|
|
10940
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceNameContent", children: [
|
|
10941
|
+
isInactive && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
10865
10942
|
"span",
|
|
10866
10943
|
{
|
|
10867
10944
|
className: "gantt-resourceTimeline-resourceStatusMarker",
|
|
10868
10945
|
"aria-label": `\u0420\u0435\u0441\u0443\u0440\u0441 ${resource.name} \u043D\u0435\u0430\u043A\u0442\u0438\u0432\u0435\u043D`,
|
|
10869
10946
|
title: "\u041D\u0435\u0430\u043A\u0442\u0438\u0432\u0435\u043D",
|
|
10870
|
-
children: /* @__PURE__ */ (0,
|
|
10947
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ResourceStatusLockIcon, {})
|
|
10871
10948
|
}
|
|
10872
10949
|
),
|
|
10873
|
-
/* @__PURE__ */ (0,
|
|
10950
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceNameText", children: resource.name })
|
|
10874
10951
|
] })
|
|
10875
10952
|
}
|
|
10876
10953
|
)
|
|
10877
10954
|
] }),
|
|
10878
|
-
/* @__PURE__ */ (0,
|
|
10879
|
-
/* @__PURE__ */ (0,
|
|
10955
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Popover, { open: scopeMenuOpen, onOpenChange: setScopeMenuOpen, children: [
|
|
10956
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
10880
10957
|
"button",
|
|
10881
10958
|
{
|
|
10882
10959
|
type: "button",
|
|
@@ -10887,10 +10964,10 @@ var ResourceHeader = ({
|
|
|
10887
10964
|
event.stopPropagation();
|
|
10888
10965
|
setScopeMenuOpen((open) => !open);
|
|
10889
10966
|
},
|
|
10890
|
-
children: /* @__PURE__ */ (0,
|
|
10967
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { children: scopeLabel })
|
|
10891
10968
|
}
|
|
10892
10969
|
) }),
|
|
10893
|
-
/* @__PURE__ */ (0,
|
|
10970
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverContent, { className: "gantt-resourceTimeline-resourceOptionMenu", portal: true, align: "start", children: RESOURCE_SCOPE_OPTIONS.map((option) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
10894
10971
|
"button",
|
|
10895
10972
|
{
|
|
10896
10973
|
type: "button",
|
|
@@ -10901,35 +10978,35 @@ var ResourceHeader = ({
|
|
|
10901
10978
|
applyResourcePatch({ scope: option });
|
|
10902
10979
|
},
|
|
10903
10980
|
children: [
|
|
10904
|
-
/* @__PURE__ */ (0,
|
|
10981
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: `gantt-resourceTimeline-resourceOptionScopeDot gantt-resourceTimeline-resourceScope${option}` }),
|
|
10905
10982
|
RESOURCE_SCOPE_LABELS[option] ?? option
|
|
10906
10983
|
]
|
|
10907
10984
|
},
|
|
10908
10985
|
option
|
|
10909
10986
|
)) })
|
|
10910
10987
|
] }),
|
|
10911
|
-
/* @__PURE__ */ (0,
|
|
10988
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
10912
10989
|
"span",
|
|
10913
10990
|
{
|
|
10914
10991
|
className: "gantt-resourceTimeline-resourceAssignments",
|
|
10915
10992
|
"aria-label": `\u041D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F \u0440\u0435\u0441\u0443\u0440\u0441\u0430 ${resource.name}: ${assignmentCount}, ${workedDays} \u0434\u043D.`,
|
|
10916
10993
|
children: [
|
|
10917
|
-
/* @__PURE__ */ (0,
|
|
10918
|
-
/* @__PURE__ */ (0,
|
|
10919
|
-
/* @__PURE__ */ (0,
|
|
10994
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceWorkedDays", children: [
|
|
10995
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceMetricValue", children: workedDays > 0 ? workedDays : "-" }),
|
|
10996
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceMetricLabel", children: workedDays > 0 ? "\u0434\u043D." : "" })
|
|
10920
10997
|
] }),
|
|
10921
|
-
/* @__PURE__ */ (0,
|
|
10922
|
-
/* @__PURE__ */ (0,
|
|
10923
|
-
assignmentCount > 0 && /* @__PURE__ */ (0,
|
|
10924
|
-
/* @__PURE__ */ (0,
|
|
10925
|
-
/* @__PURE__ */ (0,
|
|
10998
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceAssignmentCount", children: [
|
|
10999
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceMetricValue", children: assignmentCount > 0 ? assignmentCount : "" }),
|
|
11000
|
+
assignmentCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("svg", { className: "gantt-resourceTimeline-resourceAssignmentIcon", width: "14", height: "14", viewBox: "0 0 24 24", "aria-hidden": "true", children: [
|
|
11001
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("rect", { width: "15", height: "5", x: "4", y: "5", rx: "2" }),
|
|
11002
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("rect", { width: "10", height: "5", x: "4", y: "14", rx: "2" })
|
|
10926
11003
|
] })
|
|
10927
11004
|
] })
|
|
10928
11005
|
]
|
|
10929
11006
|
}
|
|
10930
11007
|
),
|
|
10931
|
-
/* @__PURE__ */ (0,
|
|
10932
|
-
conflictCount > 0 && /* @__PURE__ */ (0,
|
|
11008
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceActions", children: [
|
|
11009
|
+
conflictCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
10933
11010
|
"button",
|
|
10934
11011
|
{
|
|
10935
11012
|
type: "button",
|
|
@@ -10943,8 +11020,8 @@ var ResourceHeader = ({
|
|
|
10943
11020
|
children: conflictCount
|
|
10944
11021
|
}
|
|
10945
11022
|
),
|
|
10946
|
-
hasMenu && /* @__PURE__ */ (0,
|
|
10947
|
-
/* @__PURE__ */ (0,
|
|
11023
|
+
hasMenu && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(Popover, { open: menuOpen, onOpenChange: setMenuOpen, children: [
|
|
11024
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
10948
11025
|
"button",
|
|
10949
11026
|
{
|
|
10950
11027
|
className: "gantt-resourceTimeline-resourceMenuButton",
|
|
@@ -10954,10 +11031,10 @@ var ResourceHeader = ({
|
|
|
10954
11031
|
event.stopPropagation();
|
|
10955
11032
|
setMenuOpen((open) => !open);
|
|
10956
11033
|
},
|
|
10957
|
-
children: /* @__PURE__ */ (0,
|
|
11034
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { "aria-hidden": "true", children: "\u22EE" })
|
|
10958
11035
|
}
|
|
10959
11036
|
) }),
|
|
10960
|
-
/* @__PURE__ */ (0,
|
|
11037
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(PopoverContent, { className: "gantt-resourceTimeline-resourceMenu", portal: true, align: "end", children: visibleCommands.map((command) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
10961
11038
|
"button",
|
|
10962
11039
|
{
|
|
10963
11040
|
type: "button",
|
|
@@ -11010,7 +11087,7 @@ var NewResourceRow = ({ height, onConfirm, onCancel, columnTemplate }) => {
|
|
|
11010
11087
|
handleConfirm();
|
|
11011
11088
|
}
|
|
11012
11089
|
};
|
|
11013
|
-
return /* @__PURE__ */ (0,
|
|
11090
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
11014
11091
|
"div",
|
|
11015
11092
|
{
|
|
11016
11093
|
className: "gantt-resourceTimeline-resourceHeader gantt-resourceTimeline-resourceHeaderNew",
|
|
@@ -11020,8 +11097,8 @@ var NewResourceRow = ({ height, onConfirm, onCancel, columnTemplate }) => {
|
|
|
11020
11097
|
gridTemplateColumns: columnTemplate
|
|
11021
11098
|
},
|
|
11022
11099
|
children: [
|
|
11023
|
-
/* @__PURE__ */ (0,
|
|
11024
|
-
/* @__PURE__ */ (0,
|
|
11100
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceNumber", children: "+" }),
|
|
11101
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11025
11102
|
Input,
|
|
11026
11103
|
{
|
|
11027
11104
|
ref: inputRef,
|
|
@@ -11200,7 +11277,7 @@ function ResourceTimelineChart({
|
|
|
11200
11277
|
document.body.style.cursor = "col-resize";
|
|
11201
11278
|
document.body.style.userSelect = "none";
|
|
11202
11279
|
}, [resolvedResourceColumnWidths]);
|
|
11203
|
-
const renderResizeHandle = (0, import_react15.useCallback)((columnId) => /* @__PURE__ */ (0,
|
|
11280
|
+
const renderResizeHandle = (0, import_react15.useCallback)((columnId) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11204
11281
|
"button",
|
|
11205
11282
|
{
|
|
11206
11283
|
type: "button",
|
|
@@ -11511,7 +11588,7 @@ function ResourceTimelineChart({
|
|
|
11511
11588
|
}
|
|
11512
11589
|
};
|
|
11513
11590
|
}, []);
|
|
11514
|
-
return /* @__PURE__ */ (0,
|
|
11591
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "gantt-container gantt-resourceTimeline", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11515
11592
|
"div",
|
|
11516
11593
|
{
|
|
11517
11594
|
ref: scrollContainerRef,
|
|
@@ -11522,44 +11599,44 @@ function ResourceTimelineChart({
|
|
|
11522
11599
|
},
|
|
11523
11600
|
"data-allow-vertical-pan": allowVerticalPan ? "true" : "false",
|
|
11524
11601
|
onMouseDown: handlePanStart,
|
|
11525
|
-
children: /* @__PURE__ */ (0,
|
|
11526
|
-
/* @__PURE__ */ (0,
|
|
11602
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-resourceTimeline-scrollContent", children: [
|
|
11603
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
11527
11604
|
"div",
|
|
11528
11605
|
{
|
|
11529
11606
|
className: `gantt-resourceTimeline-resourceColumn${resourceColumnHasRightShadow ? " gantt-resourceTimeline-resourceColumnShadowed" : ""}`,
|
|
11530
11607
|
style: { width: `${effectiveRowHeaderWidth}px`, minWidth: `${effectiveRowHeaderWidth}px` },
|
|
11531
11608
|
children: [
|
|
11532
|
-
/* @__PURE__ */ (0,
|
|
11609
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
11533
11610
|
"div",
|
|
11534
11611
|
{
|
|
11535
11612
|
className: "gantt-resourceTimeline-corner",
|
|
11536
11613
|
style: { height: `${timelineHeaderHeight}px`, gridTemplateColumns: resourceColumnTemplate },
|
|
11537
11614
|
children: [
|
|
11538
|
-
/* @__PURE__ */ (0,
|
|
11615
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceHeaderCell gantt-resourceTimeline-resourceHeaderNumber", children: [
|
|
11539
11616
|
"#",
|
|
11540
11617
|
renderResizeHandle("number")
|
|
11541
11618
|
] }),
|
|
11542
|
-
/* @__PURE__ */ (0,
|
|
11619
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceHeaderCell gantt-resourceTimeline-resourceHeaderName", children: [
|
|
11543
11620
|
"\u041D\u0430\u0437\u0432\u0430\u043D\u0438\u0435",
|
|
11544
11621
|
renderResizeHandle("name")
|
|
11545
11622
|
] }),
|
|
11546
|
-
/* @__PURE__ */ (0,
|
|
11547
|
-
/* @__PURE__ */ (0,
|
|
11623
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceHeaderCell", "aria-label": "\u0414\u043E\u0441\u0442\u0443\u043F\u043D\u043E\u0441\u0442\u044C", children: renderResizeHandle("availability") }),
|
|
11624
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("span", { className: "gantt-resourceTimeline-resourceHeaderCell", children: [
|
|
11548
11625
|
"\u041D\u0430\u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F",
|
|
11549
11626
|
renderResizeHandle("assignments")
|
|
11550
11627
|
] }),
|
|
11551
|
-
/* @__PURE__ */ (0,
|
|
11628
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceHeaderCell gantt-resourceTimeline-resourceHeaderActions", "aria-label": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F", children: renderResizeHandle("actions") })
|
|
11552
11629
|
]
|
|
11553
11630
|
}
|
|
11554
11631
|
),
|
|
11555
|
-
displayLayout.groupHeaders.length > 0 ? displayLayout.groupHeaders.map((group) => /* @__PURE__ */ (0,
|
|
11556
|
-
/* @__PURE__ */ (0,
|
|
11632
|
+
displayLayout.groupHeaders.length > 0 ? displayLayout.groupHeaders.map((group) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_react15.default.Fragment, { children: [
|
|
11633
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
11557
11634
|
"div",
|
|
11558
11635
|
{
|
|
11559
11636
|
className: "gantt-resourceTimeline-resourceGroupHeader",
|
|
11560
11637
|
style: { height: `${group.height}px` },
|
|
11561
11638
|
children: [
|
|
11562
|
-
/* @__PURE__ */ (0,
|
|
11639
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11563
11640
|
"button",
|
|
11564
11641
|
{
|
|
11565
11642
|
type: "button",
|
|
@@ -11570,12 +11647,12 @@ function ResourceTimelineChart({
|
|
|
11570
11647
|
event.stopPropagation();
|
|
11571
11648
|
toggleResourceGroupCollapsed(group.key);
|
|
11572
11649
|
},
|
|
11573
|
-
children: /* @__PURE__ */ (0,
|
|
11650
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(ResourceGroupChevronIcon, {})
|
|
11574
11651
|
}
|
|
11575
11652
|
),
|
|
11576
|
-
/* @__PURE__ */ (0,
|
|
11577
|
-
/* @__PURE__ */ (0,
|
|
11578
|
-
canAddResource && /* @__PURE__ */ (0,
|
|
11653
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceGroupTitle", children: group.label }),
|
|
11654
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resourceGroupCount", children: group.count }),
|
|
11655
|
+
canAddResource && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11579
11656
|
"button",
|
|
11580
11657
|
{
|
|
11581
11658
|
type: "button",
|
|
@@ -11594,7 +11671,7 @@ function ResourceTimelineChart({
|
|
|
11594
11671
|
),
|
|
11595
11672
|
displayLayout.rows.filter((row) => getResourceType(row.resource) === group.key).map((row) => {
|
|
11596
11673
|
const rowIndex = displayLayout.rows.findIndex((candidate) => candidate.resourceId === row.resourceId);
|
|
11597
|
-
return /* @__PURE__ */ (0,
|
|
11674
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11598
11675
|
ResourceHeader,
|
|
11599
11676
|
{
|
|
11600
11677
|
resource: row.resource,
|
|
@@ -11614,7 +11691,7 @@ function ResourceTimelineChart({
|
|
|
11614
11691
|
row.resourceId
|
|
11615
11692
|
);
|
|
11616
11693
|
}),
|
|
11617
|
-
displayLayout.groupAddRows.some((row) => row.key === group.key) && /* @__PURE__ */ (0,
|
|
11694
|
+
displayLayout.groupAddRows.some((row) => row.key === group.key) && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11618
11695
|
NewResourceRow,
|
|
11619
11696
|
{
|
|
11620
11697
|
height: resourceAddRowHeight,
|
|
@@ -11623,7 +11700,7 @@ function ResourceTimelineChart({
|
|
|
11623
11700
|
columnTemplate: resourceColumnTemplate
|
|
11624
11701
|
}
|
|
11625
11702
|
)
|
|
11626
|
-
] }, group.key)) : displayLayout.rows.map((row, rowIndex) => /* @__PURE__ */ (0,
|
|
11703
|
+
] }, group.key)) : displayLayout.rows.map((row, rowIndex) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11627
11704
|
ResourceHeader,
|
|
11628
11705
|
{
|
|
11629
11706
|
resource: row.resource,
|
|
@@ -11642,7 +11719,7 @@ function ResourceTimelineChart({
|
|
|
11642
11719
|
},
|
|
11643
11720
|
row.resourceId
|
|
11644
11721
|
)),
|
|
11645
|
-
canAddResource && (isCreatingResource ? /* @__PURE__ */ (0,
|
|
11722
|
+
canAddResource && (isCreatingResource ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11646
11723
|
NewResourceRow,
|
|
11647
11724
|
{
|
|
11648
11725
|
height: resourceAddRowHeight,
|
|
@@ -11650,7 +11727,7 @@ function ResourceTimelineChart({
|
|
|
11650
11727
|
onCancel: handleCancelNewResource,
|
|
11651
11728
|
columnTemplate: resourceColumnTemplate
|
|
11652
11729
|
}
|
|
11653
|
-
) : /* @__PURE__ */ (0,
|
|
11730
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11654
11731
|
"button",
|
|
11655
11732
|
{
|
|
11656
11733
|
className: "gantt-resourceTimeline-addResourceButton",
|
|
@@ -11666,18 +11743,18 @@ function ResourceTimelineChart({
|
|
|
11666
11743
|
]
|
|
11667
11744
|
}
|
|
11668
11745
|
),
|
|
11669
|
-
/* @__PURE__ */ (0,
|
|
11746
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
11670
11747
|
"div",
|
|
11671
11748
|
{
|
|
11672
11749
|
className: "gantt-resourceTimeline-chartSurface",
|
|
11673
11750
|
style: { minWidth: `${gridWidth}px` },
|
|
11674
11751
|
children: [
|
|
11675
|
-
/* @__PURE__ */ (0,
|
|
11752
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11676
11753
|
"div",
|
|
11677
11754
|
{
|
|
11678
11755
|
className: "gantt-resourceTimeline-stickyHeader",
|
|
11679
11756
|
style: { width: `${gridWidth}px`, height: `${timelineHeaderHeight}px` },
|
|
11680
|
-
children: /* @__PURE__ */ (0,
|
|
11757
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11681
11758
|
TimeScaleHeader_default,
|
|
11682
11759
|
{
|
|
11683
11760
|
days: dateRange,
|
|
@@ -11689,14 +11766,14 @@ function ResourceTimelineChart({
|
|
|
11689
11766
|
)
|
|
11690
11767
|
}
|
|
11691
11768
|
),
|
|
11692
|
-
/* @__PURE__ */ (0,
|
|
11769
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
11693
11770
|
"div",
|
|
11694
11771
|
{
|
|
11695
11772
|
ref: gridRef,
|
|
11696
11773
|
className: "gantt-resourceTimeline-grid",
|
|
11697
11774
|
style: { width: `${gridWidth}px`, height: `${displayTotalHeight}px` },
|
|
11698
11775
|
children: [
|
|
11699
|
-
/* @__PURE__ */ (0,
|
|
11776
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11700
11777
|
GridBackground_default,
|
|
11701
11778
|
{
|
|
11702
11779
|
dateRange,
|
|
@@ -11706,8 +11783,8 @@ function ResourceTimelineChart({
|
|
|
11706
11783
|
isCustomWeekend: weekendPredicate
|
|
11707
11784
|
}
|
|
11708
11785
|
),
|
|
11709
|
-
todayInRange && /* @__PURE__ */ (0,
|
|
11710
|
-
displayLayout.groupHeaders.map((group) => /* @__PURE__ */ (0,
|
|
11786
|
+
todayInRange && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(TodayIndicator_default, { monthStart, dayWidth }),
|
|
11787
|
+
displayLayout.groupHeaders.map((group) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11711
11788
|
"div",
|
|
11712
11789
|
{
|
|
11713
11790
|
className: "gantt-resourceTimeline-row gantt-resourceTimeline-groupRow",
|
|
@@ -11719,7 +11796,7 @@ function ResourceTimelineChart({
|
|
|
11719
11796
|
},
|
|
11720
11797
|
`group-row-${group.key}`
|
|
11721
11798
|
)),
|
|
11722
|
-
displayLayout.rows.map((row) => /* @__PURE__ */ (0,
|
|
11799
|
+
displayLayout.rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11723
11800
|
"div",
|
|
11724
11801
|
{
|
|
11725
11802
|
className: "gantt-resourceTimeline-row",
|
|
@@ -11731,7 +11808,7 @@ function ResourceTimelineChart({
|
|
|
11731
11808
|
},
|
|
11732
11809
|
row.resourceId
|
|
11733
11810
|
)),
|
|
11734
|
-
canAddResource && /* @__PURE__ */ (0,
|
|
11811
|
+
canAddResource && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11735
11812
|
"div",
|
|
11736
11813
|
{
|
|
11737
11814
|
className: "gantt-resourceTimeline-row gantt-resourceTimeline-rowNew",
|
|
@@ -11742,7 +11819,7 @@ function ResourceTimelineChart({
|
|
|
11742
11819
|
}
|
|
11743
11820
|
}
|
|
11744
11821
|
),
|
|
11745
|
-
displayLayout.groupAddRows.map((row) => /* @__PURE__ */ (0,
|
|
11822
|
+
displayLayout.groupAddRows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11746
11823
|
"div",
|
|
11747
11824
|
{
|
|
11748
11825
|
className: "gantt-resourceTimeline-row gantt-resourceTimeline-rowNew",
|
|
@@ -11813,7 +11890,7 @@ function ResourceTimelineChart({
|
|
|
11813
11890
|
const tooltipFirstLine = layoutItem.item.tooltip?.firstLine ?? layoutItem.item.title;
|
|
11814
11891
|
const tooltipSecondLine = resourceItemTooltipLines === 2 ? layoutItem.item.tooltip?.secondLine ?? layoutItem.item.subtitle : void 0;
|
|
11815
11892
|
const tooltipSecondLineIcon = layoutItem.item.tooltip?.secondLineIcon;
|
|
11816
|
-
return /* @__PURE__ */ (0,
|
|
11893
|
+
return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
|
|
11817
11894
|
"div",
|
|
11818
11895
|
{
|
|
11819
11896
|
className,
|
|
@@ -11841,11 +11918,11 @@ function ResourceTimelineChart({
|
|
|
11841
11918
|
backgroundColor: layoutItem.item.color ?? "var(--gantt-task-bar-default-color, #3b82f6)"
|
|
11842
11919
|
},
|
|
11843
11920
|
children: [
|
|
11844
|
-
!readonly && !layoutItem.item.locked && /* @__PURE__ */ (0,
|
|
11845
|
-
/* @__PURE__ */ (0,
|
|
11846
|
-
/* @__PURE__ */ (0,
|
|
11921
|
+
!readonly && !layoutItem.item.locked && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_jsx_runtime18.Fragment, { children: [
|
|
11922
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resizeHandle gantt-resourceTimeline-resizeHandleStart" }),
|
|
11923
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-resizeHandle gantt-resourceTimeline-resizeHandleEnd" })
|
|
11847
11924
|
] }),
|
|
11848
|
-
weekendOverlaySegments.map((segment, index) => /* @__PURE__ */ (0,
|
|
11925
|
+
weekendOverlaySegments.map((segment, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11849
11926
|
"span",
|
|
11850
11927
|
{
|
|
11851
11928
|
className: "gantt-resourceTimeline-weekendOverlay",
|
|
@@ -11857,7 +11934,7 @@ function ResourceTimelineChart({
|
|
|
11857
11934
|
},
|
|
11858
11935
|
`weekend-overlay-${index}`
|
|
11859
11936
|
)),
|
|
11860
|
-
conflictOverlaySegments.map((segment, index) => /* @__PURE__ */ (0,
|
|
11937
|
+
conflictOverlaySegments.map((segment, index) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11861
11938
|
"span",
|
|
11862
11939
|
{
|
|
11863
11940
|
className: "gantt-resourceTimeline-conflictOverlay",
|
|
@@ -11869,7 +11946,7 @@ function ResourceTimelineChart({
|
|
|
11869
11946
|
},
|
|
11870
11947
|
`conflict-overlay-${index}`
|
|
11871
11948
|
)),
|
|
11872
|
-
hasItemMenu && /* @__PURE__ */ (0,
|
|
11949
|
+
hasItemMenu && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11873
11950
|
"button",
|
|
11874
11951
|
{
|
|
11875
11952
|
type: "button",
|
|
@@ -11882,12 +11959,12 @@ function ResourceTimelineChart({
|
|
|
11882
11959
|
event.stopPropagation();
|
|
11883
11960
|
onResourceItemMenuClick?.(layoutItem.item);
|
|
11884
11961
|
},
|
|
11885
|
-
children: /* @__PURE__ */ (0,
|
|
11962
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { "aria-hidden": "true", children: "\u22EE" })
|
|
11886
11963
|
}
|
|
11887
11964
|
),
|
|
11888
|
-
/* @__PURE__ */ (0,
|
|
11889
|
-
/* @__PURE__ */ (0,
|
|
11890
|
-
/* @__PURE__ */ (0,
|
|
11965
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "gantt-resourceTimeline-itemInner", children: renderItem ? renderItem(layoutItem.item, renderContext) : /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-resourceTimeline-defaultItemContent", children: [
|
|
11966
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-resourceTimeline-defaultItemMain", children: [
|
|
11967
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
|
|
11891
11968
|
"span",
|
|
11892
11969
|
{
|
|
11893
11970
|
className: "gantt-resourceTimeline-itemDurationChip",
|
|
@@ -11895,15 +11972,15 @@ function ResourceTimelineChart({
|
|
|
11895
11972
|
children: durationValue
|
|
11896
11973
|
}
|
|
11897
11974
|
),
|
|
11898
|
-
/* @__PURE__ */ (0,
|
|
11975
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-itemTitle", children: layoutItem.item.title })
|
|
11899
11976
|
] }),
|
|
11900
|
-
layoutItem.item.subtitle && /* @__PURE__ */ (0,
|
|
11977
|
+
layoutItem.item.subtitle && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-itemSubtitle", children: layoutItem.item.subtitle })
|
|
11901
11978
|
] }) }),
|
|
11902
|
-
/* @__PURE__ */ (0,
|
|
11903
|
-
/* @__PURE__ */ (0,
|
|
11904
|
-
tooltipSecondLine && /* @__PURE__ */ (0,
|
|
11905
|
-
tooltipSecondLineIcon && /* @__PURE__ */ (0,
|
|
11906
|
-
/* @__PURE__ */ (0,
|
|
11979
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-resourceTimeline-itemTooltip", role: "tooltip", children: [
|
|
11980
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("div", { className: "gantt-resourceTimeline-itemTooltipLine gantt-resourceTimeline-itemTooltipLinePrimary", children: tooltipFirstLine }),
|
|
11981
|
+
tooltipSecondLine && /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "gantt-resourceTimeline-itemTooltipLine gantt-resourceTimeline-itemTooltipLineSecondary", children: [
|
|
11982
|
+
tooltipSecondLineIcon && /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-itemTooltipIcon", "aria-hidden": "true", children: tooltipSecondLineIcon }),
|
|
11983
|
+
/* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: "gantt-resourceTimeline-itemTooltipText", children: tooltipSecondLine })
|
|
11907
11984
|
] })
|
|
11908
11985
|
] })
|
|
11909
11986
|
]
|
|
@@ -11925,7 +12002,7 @@ function ResourceTimelineChart({
|
|
|
11925
12002
|
|
|
11926
12003
|
// src/components/TableMatrix/TableMatrix.tsx
|
|
11927
12004
|
var import_react16 = require("react");
|
|
11928
|
-
var
|
|
12005
|
+
var import_jsx_runtime19 = require("react/jsx-runtime");
|
|
11929
12006
|
var AUTO_COLUMN_MIN_WIDTH = 72;
|
|
11930
12007
|
var AUTO_COLUMN_MAX_WIDTH = 180;
|
|
11931
12008
|
var DAY_MS4 = 24 * 60 * 60 * 1e3;
|
|
@@ -12125,9 +12202,9 @@ function TableMatrix({
|
|
|
12125
12202
|
return task ? { task, index } : null;
|
|
12126
12203
|
}).filter((entry) => entry !== null);
|
|
12127
12204
|
}, [tasks, visibleRowIndices]);
|
|
12128
|
-
return /* @__PURE__ */ (0,
|
|
12129
|
-
hasAutoWidthColumns && /* @__PURE__ */ (0,
|
|
12130
|
-
columns.map((column, columnIndex) => typeof column.width === "number" ? null : /* @__PURE__ */ (0,
|
|
12205
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "gantt-mx-root", style: { width: `${totalWidth}px` }, children: [
|
|
12206
|
+
hasAutoWidthColumns && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { ref: measureRef, className: "gantt-mx-measure", "aria-hidden": "true", children: [
|
|
12207
|
+
columns.map((column, columnIndex) => typeof column.width === "number" ? null : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
12131
12208
|
"div",
|
|
12132
12209
|
{
|
|
12133
12210
|
"data-gantt-mx-measure-column": columnIndex,
|
|
@@ -12136,7 +12213,7 @@ function TableMatrix({
|
|
|
12136
12213
|
},
|
|
12137
12214
|
`header:${column.id}`
|
|
12138
12215
|
)),
|
|
12139
|
-
tasks.map((task) => columns.map((column, columnIndex) => typeof column.width === "number" ? null : /* @__PURE__ */ (0,
|
|
12216
|
+
tasks.map((task) => columns.map((column, columnIndex) => typeof column.width === "number" ? null : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
12140
12217
|
"div",
|
|
12141
12218
|
{
|
|
12142
12219
|
"data-gantt-mx-measure-column": columnIndex,
|
|
@@ -12146,8 +12223,8 @@ function TableMatrix({
|
|
|
12146
12223
|
`${task.id}:${column.id}`
|
|
12147
12224
|
)))
|
|
12148
12225
|
] }),
|
|
12149
|
-
/* @__PURE__ */ (0,
|
|
12150
|
-
hasGroupHeader && /* @__PURE__ */ (0,
|
|
12226
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "gantt-mx-header", style: { height: `${headerHeight}px` }, children: [
|
|
12227
|
+
hasGroupHeader && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
12151
12228
|
"div",
|
|
12152
12229
|
{
|
|
12153
12230
|
className: "gantt-mx-headerRow gantt-mx-headerGroupRow",
|
|
@@ -12155,7 +12232,7 @@ function TableMatrix({
|
|
|
12155
12232
|
gridTemplateColumns: headerSpans.map((span) => `${span.width ?? 0}px`).join(" "),
|
|
12156
12233
|
height: `${topRowHeight}px`
|
|
12157
12234
|
},
|
|
12158
|
-
children: headerSpans.map((span) => /* @__PURE__ */ (0,
|
|
12235
|
+
children: headerSpans.map((span) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
12159
12236
|
"div",
|
|
12160
12237
|
{
|
|
12161
12238
|
className: joinClasses("gantt-mx-groupCell", span.className),
|
|
@@ -12166,7 +12243,7 @@ function TableMatrix({
|
|
|
12166
12243
|
))
|
|
12167
12244
|
}
|
|
12168
12245
|
),
|
|
12169
|
-
/* @__PURE__ */ (0,
|
|
12246
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
12170
12247
|
"div",
|
|
12171
12248
|
{
|
|
12172
12249
|
className: "gantt-mx-headerRow",
|
|
@@ -12174,7 +12251,7 @@ function TableMatrix({
|
|
|
12174
12251
|
children: columns.map((column) => {
|
|
12175
12252
|
const overlayWidthPercent = getOverlayWidthPercent(column, overlayDateMs);
|
|
12176
12253
|
const shouldRenderOverlayEdge = isOverlayDateInColumn(column, overlayDateMs);
|
|
12177
|
-
return /* @__PURE__ */ (0,
|
|
12254
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
12178
12255
|
"div",
|
|
12179
12256
|
{
|
|
12180
12257
|
className: joinClasses(
|
|
@@ -12183,7 +12260,7 @@ function TableMatrix({
|
|
|
12183
12260
|
),
|
|
12184
12261
|
style: column.minWidth !== void 0 ? { minWidth: `${column.minWidth}px` } : void 0,
|
|
12185
12262
|
children: [
|
|
12186
|
-
shouldRenderOverlayEdge && /* @__PURE__ */ (0,
|
|
12263
|
+
shouldRenderOverlayEdge && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
12187
12264
|
"span",
|
|
12188
12265
|
{
|
|
12189
12266
|
className: "gantt-mx-dateOverlayEdge",
|
|
@@ -12193,7 +12270,7 @@ function TableMatrix({
|
|
|
12193
12270
|
}
|
|
12194
12271
|
}
|
|
12195
12272
|
),
|
|
12196
|
-
/* @__PURE__ */ (0,
|
|
12273
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "gantt-mx-headerContent", children: column.header })
|
|
12197
12274
|
]
|
|
12198
12275
|
},
|
|
12199
12276
|
column.id
|
|
@@ -12202,7 +12279,7 @@ function TableMatrix({
|
|
|
12202
12279
|
}
|
|
12203
12280
|
)
|
|
12204
12281
|
] }),
|
|
12205
|
-
/* @__PURE__ */ (0,
|
|
12282
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
12206
12283
|
"div",
|
|
12207
12284
|
{
|
|
12208
12285
|
className: "gantt-mx-body",
|
|
@@ -12216,7 +12293,7 @@ function TableMatrix({
|
|
|
12216
12293
|
const nestingDepth = nestingDepthMap.get(task.id) ?? 0;
|
|
12217
12294
|
const rowFillLevel = Math.min(nestingDepth, 2);
|
|
12218
12295
|
const isTotal = Boolean(task.isTotal);
|
|
12219
|
-
return /* @__PURE__ */ (0,
|
|
12296
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
12220
12297
|
"div",
|
|
12221
12298
|
{
|
|
12222
12299
|
"data-gantt-task-row-id": task.id,
|
|
@@ -12241,7 +12318,7 @@ function TableMatrix({
|
|
|
12241
12318
|
const overlayWidthPercent = getOverlayWidthPercent(column, overlayDateMs);
|
|
12242
12319
|
const shouldRenderOverlay = overlayWidthPercent > 0 && (!dateOverlay || !dateOverlay.shouldRender || dateOverlay.shouldRender({ task, column, rowIndex: index, columnIndex }));
|
|
12243
12320
|
const shouldRenderOverlayEdge = isOverlayDateInColumn(column, overlayDateMs);
|
|
12244
|
-
return /* @__PURE__ */ (0,
|
|
12321
|
+
return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
|
|
12245
12322
|
"div",
|
|
12246
12323
|
{
|
|
12247
12324
|
className: joinClasses(
|
|
@@ -12256,7 +12333,7 @@ function TableMatrix({
|
|
|
12256
12333
|
onCellClick?.({ task, column, rowIndex: index, columnIndex, event });
|
|
12257
12334
|
},
|
|
12258
12335
|
children: [
|
|
12259
|
-
shouldRenderOverlay && /* @__PURE__ */ (0,
|
|
12336
|
+
shouldRenderOverlay && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
12260
12337
|
"span",
|
|
12261
12338
|
{
|
|
12262
12339
|
className: joinClasses("gantt-mx-dateOverlay", dateOverlay && dateOverlay.className),
|
|
@@ -12266,7 +12343,7 @@ function TableMatrix({
|
|
|
12266
12343
|
}
|
|
12267
12344
|
}
|
|
12268
12345
|
),
|
|
12269
|
-
shouldRenderOverlayEdge && /* @__PURE__ */ (0,
|
|
12346
|
+
shouldRenderOverlayEdge && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
|
|
12270
12347
|
"span",
|
|
12271
12348
|
{
|
|
12272
12349
|
className: "gantt-mx-dateOverlayEdge",
|
|
@@ -12276,7 +12353,7 @@ function TableMatrix({
|
|
|
12276
12353
|
}
|
|
12277
12354
|
}
|
|
12278
12355
|
),
|
|
12279
|
-
/* @__PURE__ */ (0,
|
|
12356
|
+
/* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "gantt-mx-cellContent", children: column.renderCell(task) })
|
|
12280
12357
|
]
|
|
12281
12358
|
},
|
|
12282
12359
|
`${task.id}:${column.id}`
|
|
@@ -12293,7 +12370,7 @@ function TableMatrix({
|
|
|
12293
12370
|
|
|
12294
12371
|
// src/components/PlanFactMatrix/PlanFactMatrix.tsx
|
|
12295
12372
|
var import_react17 = __toESM(require("react"));
|
|
12296
|
-
var
|
|
12373
|
+
var import_jsx_runtime20 = require("react/jsx-runtime");
|
|
12297
12374
|
var DAY_MS5 = 24 * 60 * 60 * 1e3;
|
|
12298
12375
|
function joinClasses2(...values) {
|
|
12299
12376
|
return values.filter(Boolean).join(" ");
|
|
@@ -12402,7 +12479,7 @@ function PlanFactCellEditor({
|
|
|
12402
12479
|
}
|
|
12403
12480
|
onCommit(parsed);
|
|
12404
12481
|
}, [draft, onCancel, onCommit]);
|
|
12405
|
-
return /* @__PURE__ */ (0,
|
|
12482
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
12406
12483
|
"input",
|
|
12407
12484
|
{
|
|
12408
12485
|
ref: inputRef,
|
|
@@ -12516,7 +12593,7 @@ function PlanFactRowInner({
|
|
|
12516
12593
|
showOverflowTooltip,
|
|
12517
12594
|
hideOverflowTooltip
|
|
12518
12595
|
}) {
|
|
12519
|
-
return /* @__PURE__ */ (0,
|
|
12596
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
12520
12597
|
"div",
|
|
12521
12598
|
{
|
|
12522
12599
|
"data-gantt-task-row-id": task.id,
|
|
@@ -12554,7 +12631,7 @@ function PlanFactRowInner({
|
|
|
12554
12631
|
const isSelected = !isParent && isInRenderedRange;
|
|
12555
12632
|
const showFillHandle = !isParent && !isEditing && isInRenderedRange && renderedRangeBounds !== null && dateIndex === renderedRangeBounds.toDateIndex && subrowIndex === renderedRangeBounds.toSubrowIndex;
|
|
12556
12633
|
const isRangeAnchor = !showFillHandle && !isParent && selectedRange?.anchor.taskId === task.id && selectedRange.anchor.dateIndex === dateIndex && selectedRange.anchor.kind === kind;
|
|
12557
|
-
return /* @__PURE__ */ (0,
|
|
12634
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
12558
12635
|
"div",
|
|
12559
12636
|
{
|
|
12560
12637
|
"data-plan-fact-task-id": task.id,
|
|
@@ -12651,7 +12728,7 @@ function PlanFactRowInner({
|
|
|
12651
12728
|
}
|
|
12652
12729
|
},
|
|
12653
12730
|
children: [
|
|
12654
|
-
isEditing ? /* @__PURE__ */ (0,
|
|
12731
|
+
isEditing ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
12655
12732
|
PlanFactCellEditor,
|
|
12656
12733
|
{
|
|
12657
12734
|
value,
|
|
@@ -12677,7 +12754,7 @@ function PlanFactRowInner({
|
|
|
12677
12754
|
focusCell(nextActiveCell);
|
|
12678
12755
|
}
|
|
12679
12756
|
}
|
|
12680
|
-
) : /* @__PURE__ */ (0,
|
|
12757
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
12681
12758
|
"span",
|
|
12682
12759
|
{
|
|
12683
12760
|
className: "gantt-pf-cellValue",
|
|
@@ -12691,7 +12768,7 @@ function PlanFactRowInner({
|
|
|
12691
12768
|
children: isParent ? "" : formatValue(value)
|
|
12692
12769
|
}
|
|
12693
12770
|
),
|
|
12694
|
-
showFillHandle && /* @__PURE__ */ (0,
|
|
12771
|
+
showFillHandle && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
12695
12772
|
"span",
|
|
12696
12773
|
{
|
|
12697
12774
|
className: "gantt-pf-fillHandle",
|
|
@@ -13203,7 +13280,7 @@ function PlanFactMatrix({
|
|
|
13203
13280
|
document.removeEventListener("mousedown", handleMouseDown);
|
|
13204
13281
|
};
|
|
13205
13282
|
}, [clearSelection]);
|
|
13206
|
-
return /* @__PURE__ */ (0,
|
|
13283
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
13207
13284
|
"div",
|
|
13208
13285
|
{
|
|
13209
13286
|
ref: rootRef,
|
|
@@ -13213,8 +13290,8 @@ function PlanFactMatrix({
|
|
|
13213
13290
|
["--gantt-pf-day-width"]: `${dayWidth}px`
|
|
13214
13291
|
},
|
|
13215
13292
|
children: [
|
|
13216
|
-
/* @__PURE__ */ (0,
|
|
13217
|
-
/* @__PURE__ */ (0,
|
|
13293
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "gantt-pf-header", style: { width: `${totalWidth}px`, height: `${headerHeight}px` }, children: [
|
|
13294
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
13218
13295
|
"div",
|
|
13219
13296
|
{
|
|
13220
13297
|
className: "gantt-pf-dateWindow",
|
|
@@ -13222,7 +13299,7 @@ function PlanFactMatrix({
|
|
|
13222
13299
|
left: `${renderedDateWindow.startIndex * dayWidth}px`,
|
|
13223
13300
|
width: `${renderedDateWindow.days.length * dayWidth}px`
|
|
13224
13301
|
},
|
|
13225
|
-
children: /* @__PURE__ */ (0,
|
|
13302
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
13226
13303
|
TimeScaleHeader_default,
|
|
13227
13304
|
{
|
|
13228
13305
|
days: renderedDateWindow.days,
|
|
@@ -13234,7 +13311,7 @@ function PlanFactMatrix({
|
|
|
13234
13311
|
)
|
|
13235
13312
|
}
|
|
13236
13313
|
),
|
|
13237
|
-
todayDateIndex !== void 0 && todayDateIndex >= renderedDateWindow.startIndex && todayDateIndex < renderedDateWindow.startIndex + renderedDateWindow.days.length && /* @__PURE__ */ (0,
|
|
13314
|
+
todayDateIndex !== void 0 && todayDateIndex >= renderedDateWindow.startIndex && todayDateIndex < renderedDateWindow.startIndex + renderedDateWindow.days.length && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
13238
13315
|
"span",
|
|
13239
13316
|
{
|
|
13240
13317
|
className: "gantt-pf-headerTodayLine",
|
|
@@ -13246,7 +13323,7 @@ function PlanFactMatrix({
|
|
|
13246
13323
|
}
|
|
13247
13324
|
)
|
|
13248
13325
|
] }),
|
|
13249
|
-
/* @__PURE__ */ (0,
|
|
13326
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "gantt-pf-monthSeparatorLayer", "aria-hidden": "true", children: monthSeparatorIndices.map((dateIndex) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
13250
13327
|
"span",
|
|
13251
13328
|
{
|
|
13252
13329
|
className: "gantt-pf-monthSeparator",
|
|
@@ -13257,7 +13334,7 @@ function PlanFactMatrix({
|
|
|
13257
13334
|
},
|
|
13258
13335
|
`month-separator-${dateIndex}`
|
|
13259
13336
|
)) }),
|
|
13260
|
-
/* @__PURE__ */ (0,
|
|
13337
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
|
|
13261
13338
|
"div",
|
|
13262
13339
|
{
|
|
13263
13340
|
ref: bodyRef,
|
|
@@ -13268,7 +13345,7 @@ function PlanFactMatrix({
|
|
|
13268
13345
|
width: `${totalWidth}px`
|
|
13269
13346
|
},
|
|
13270
13347
|
children: [
|
|
13271
|
-
/* @__PURE__ */ (0,
|
|
13348
|
+
/* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
13272
13349
|
"div",
|
|
13273
13350
|
{
|
|
13274
13351
|
className: "gantt-pf-dateWindow gantt-pf-dateWindow-body",
|
|
@@ -13276,7 +13353,7 @@ function PlanFactMatrix({
|
|
|
13276
13353
|
left: `${renderedDateWindow.startIndex * dayWidth}px`,
|
|
13277
13354
|
width: `${renderedDateWindow.days.length * dayWidth}px`
|
|
13278
13355
|
},
|
|
13279
|
-
children: /* @__PURE__ */ (0,
|
|
13356
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
13280
13357
|
GridBackground_default,
|
|
13281
13358
|
{
|
|
13282
13359
|
dateRange: renderedDateWindow.days,
|
|
@@ -13294,7 +13371,7 @@ function PlanFactMatrix({
|
|
|
13294
13371
|
if (!task) return null;
|
|
13295
13372
|
const isParent = parentTaskIds.has(task.id);
|
|
13296
13373
|
const isHighlighted = filterMode === "highlight" && !!highlightedTaskIds?.has(task.id);
|
|
13297
|
-
return /* @__PURE__ */ (0,
|
|
13374
|
+
return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
13298
13375
|
PlanFactRow,
|
|
13299
13376
|
{
|
|
13300
13377
|
task,
|
|
@@ -13339,7 +13416,7 @@ function PlanFactMatrix({
|
|
|
13339
13416
|
]
|
|
13340
13417
|
}
|
|
13341
13418
|
),
|
|
13342
|
-
overflowTooltip && /* @__PURE__ */ (0,
|
|
13419
|
+
overflowTooltip && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
|
|
13343
13420
|
"div",
|
|
13344
13421
|
{
|
|
13345
13422
|
className: "gantt-pf-overflowTooltip",
|
|
@@ -13765,7 +13842,7 @@ function createTaskPreviewPositionStore() {
|
|
|
13765
13842
|
}
|
|
13766
13843
|
|
|
13767
13844
|
// src/components/GanttChart/GanttChart.tsx
|
|
13768
|
-
var
|
|
13845
|
+
var import_jsx_runtime21 = require("react/jsx-runtime");
|
|
13769
13846
|
var SCROLL_TO_ROW_CONTEXT_ROWS = 2;
|
|
13770
13847
|
var TASK_ROW_OVERSCAN = 8;
|
|
13771
13848
|
var PLAN_FACT_COLUMN_OVERSCAN = 24;
|
|
@@ -13892,9 +13969,9 @@ function arePreviewTaskMapsEqual(left, right) {
|
|
|
13892
13969
|
}
|
|
13893
13970
|
function GanttChartInner(props, ref) {
|
|
13894
13971
|
if (props.mode === "resource-planner") {
|
|
13895
|
-
return /* @__PURE__ */ (0,
|
|
13972
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(ResourceTimelineChart, { ...props });
|
|
13896
13973
|
}
|
|
13897
|
-
return /* @__PURE__ */ (0,
|
|
13974
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
13898
13975
|
TaskGanttChart,
|
|
13899
13976
|
{
|
|
13900
13977
|
...props,
|
|
@@ -13944,6 +14021,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
13944
14021
|
onSelectedTaskIdsChange,
|
|
13945
14022
|
disableTaskDrag = false,
|
|
13946
14023
|
showChart = true,
|
|
14024
|
+
skeletonRowCount = 0,
|
|
13947
14025
|
timelineMarkers,
|
|
13948
14026
|
additionalColumns,
|
|
13949
14027
|
hiddenTaskListColumns,
|
|
@@ -14203,6 +14281,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14203
14281
|
() => Math.round(dateRange.length * dayWidth),
|
|
14204
14282
|
[dateRange.length, dayWidth]
|
|
14205
14283
|
);
|
|
14284
|
+
const renderGridWidth = Math.max(gridWidth, skeletonRowCount > 0 ? 720 : 0);
|
|
14206
14285
|
const matrixWidth = (0, import_react18.useMemo)(
|
|
14207
14286
|
() => matrixColumns.reduce((sum, column) => {
|
|
14208
14287
|
if (typeof column.width !== "number") return void 0;
|
|
@@ -14250,8 +14329,8 @@ function TaskGanttChartInner(props, ref) {
|
|
|
14250
14329
|
return mergedHighlightedTaskIds;
|
|
14251
14330
|
}, [filterMode, highlightedTaskIds, matchedTaskIds, criticalPathMode, criticalTaskIds]);
|
|
14252
14331
|
const totalGridHeight = (0, import_react18.useMemo)(
|
|
14253
|
-
() => visibleTasks.length * effectiveRowHeight,
|
|
14254
|
-
[effectiveRowHeight, visibleTasks.length]
|
|
14332
|
+
() => (visibleTasks.length + Math.max(0, Math.floor(skeletonRowCount))) * effectiveRowHeight,
|
|
14333
|
+
[effectiveRowHeight, skeletonRowCount, visibleTasks.length]
|
|
14255
14334
|
);
|
|
14256
14335
|
const timelineHeaderHeight = headerHeight + 1;
|
|
14257
14336
|
const tableBodyMinHeight = (0, import_react18.useMemo)(() => {
|
|
@@ -15034,19 +15113,19 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15034
15113
|
window.removeEventListener("mouseup", handlePanEnd);
|
|
15035
15114
|
};
|
|
15036
15115
|
}, []);
|
|
15037
|
-
return /* @__PURE__ */ (0,
|
|
15116
|
+
return /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15038
15117
|
"div",
|
|
15039
15118
|
{
|
|
15040
15119
|
ref: containerRef,
|
|
15041
15120
|
className: isTableMatrixMode ? "gantt-container gantt-container-tableMatrix" : isPlanFactMode ? "gantt-container gantt-container-planFact" : "gantt-container",
|
|
15042
|
-
children: /* @__PURE__ */ (0,
|
|
15121
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15043
15122
|
"div",
|
|
15044
15123
|
{
|
|
15045
15124
|
ref: scrollContainerRef,
|
|
15046
15125
|
className: "gantt-scrollContainer",
|
|
15047
15126
|
style: { height: containerHeight ?? "auto", cursor: "grab" },
|
|
15048
15127
|
onMouseDown: handlePanStart,
|
|
15049
|
-
children: /* @__PURE__ */ (0,
|
|
15128
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
15050
15129
|
"div",
|
|
15051
15130
|
{
|
|
15052
15131
|
ref: scrollContentRef,
|
|
@@ -15054,7 +15133,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15054
15133
|
onMouseOver: handleSharedRowHover,
|
|
15055
15134
|
onMouseLeave: clearHoveredRows,
|
|
15056
15135
|
children: [
|
|
15057
|
-
/* @__PURE__ */ (0,
|
|
15136
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15058
15137
|
TaskList,
|
|
15059
15138
|
{
|
|
15060
15139
|
tasks: normalizedTasks,
|
|
@@ -15113,20 +15192,21 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15113
15192
|
bodyMinHeight: tableBodyMinHeight,
|
|
15114
15193
|
taskDateChangeMode,
|
|
15115
15194
|
onTaskDateChangeModeChange: handleTaskDateChangeMode,
|
|
15116
|
-
visibleRowIndices: visibleTaskWindowIndices
|
|
15195
|
+
visibleRowIndices: visibleTaskWindowIndices,
|
|
15196
|
+
skeletonRowCount
|
|
15117
15197
|
}
|
|
15118
15198
|
),
|
|
15119
|
-
/* @__PURE__ */ (0,
|
|
15199
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15120
15200
|
"div",
|
|
15121
15201
|
{
|
|
15122
15202
|
className: isTableMatrixMode || isPlanFactMode || showChart ? "gantt-chartSurface" : "gantt-chartSurface gantt-chart-hidden",
|
|
15123
15203
|
style: {
|
|
15124
|
-
minWidth: isTableMatrixMode ? matrixWidth !== void 0 ? `${matrixWidth}px` : void 0 : isPlanFactMode ? `${
|
|
15125
|
-
width: isTableMatrixMode ? matrixWidth !== void 0 ? `${matrixWidth}px` : "max-content" : isPlanFactMode ? `${
|
|
15204
|
+
minWidth: isTableMatrixMode ? matrixWidth !== void 0 ? `${matrixWidth}px` : void 0 : isPlanFactMode ? `${renderGridWidth}px` : `${renderGridWidth}px`,
|
|
15205
|
+
width: isTableMatrixMode ? matrixWidth !== void 0 ? `${matrixWidth}px` : "max-content" : isPlanFactMode ? `${renderGridWidth}px` : void 0,
|
|
15126
15206
|
flex: isTableMatrixMode || isPlanFactMode ? "0 0 auto" : 1,
|
|
15127
15207
|
display: isTableMatrixMode || isPlanFactMode || showChart ? void 0 : "none"
|
|
15128
15208
|
},
|
|
15129
|
-
children: isTableMatrixMode ? /* @__PURE__ */ (0,
|
|
15209
|
+
children: isTableMatrixMode ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15130
15210
|
TableMatrix,
|
|
15131
15211
|
{
|
|
15132
15212
|
tasks: visibleTasks,
|
|
@@ -15144,7 +15224,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15144
15224
|
filterMode,
|
|
15145
15225
|
visibleRowIndices: visibleTaskWindowIndices
|
|
15146
15226
|
}
|
|
15147
|
-
) : isPlanFactMode ? /* @__PURE__ */ (0,
|
|
15227
|
+
) : isPlanFactMode ? /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15148
15228
|
PlanFactMatrix,
|
|
15149
15229
|
{
|
|
15150
15230
|
tasks: visibleTasks,
|
|
@@ -15165,14 +15245,14 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15165
15245
|
todayDateIndex: todayInRange ? todayIndex : void 0,
|
|
15166
15246
|
isCustomWeekend
|
|
15167
15247
|
}
|
|
15168
|
-
) : /* @__PURE__ */ (0,
|
|
15169
|
-
/* @__PURE__ */ (0,
|
|
15248
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(import_jsx_runtime21.Fragment, { children: [
|
|
15249
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
15170
15250
|
"div",
|
|
15171
15251
|
{
|
|
15172
15252
|
className: "gantt-stickyHeader",
|
|
15173
|
-
style: { width: `${
|
|
15253
|
+
style: { width: `${renderGridWidth}px`, height: `${timelineHeaderHeight}px` },
|
|
15174
15254
|
children: [
|
|
15175
|
-
/* @__PURE__ */ (0,
|
|
15255
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15176
15256
|
TimeScaleHeader_default,
|
|
15177
15257
|
{
|
|
15178
15258
|
days: dateRange,
|
|
@@ -15185,7 +15265,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15185
15265
|
onTimelineHoverEnd: () => setActiveTimelineTooltip(null)
|
|
15186
15266
|
}
|
|
15187
15267
|
),
|
|
15188
|
-
activeTimelineTooltip && /* @__PURE__ */ (0,
|
|
15268
|
+
activeTimelineTooltip && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "gantt-timelineTooltipLayer", "aria-hidden": "true", children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15189
15269
|
"div",
|
|
15190
15270
|
{
|
|
15191
15271
|
className: "gantt-timelineTooltip",
|
|
@@ -15199,17 +15279,17 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15199
15279
|
]
|
|
15200
15280
|
}
|
|
15201
15281
|
),
|
|
15202
|
-
/* @__PURE__ */ (0,
|
|
15282
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
15203
15283
|
"div",
|
|
15204
15284
|
{
|
|
15205
15285
|
className: "gantt-taskArea",
|
|
15206
15286
|
style: {
|
|
15207
15287
|
position: "relative",
|
|
15208
|
-
width: `${
|
|
15288
|
+
width: `${renderGridWidth}px`,
|
|
15209
15289
|
height: `${totalGridHeight}px`
|
|
15210
15290
|
},
|
|
15211
15291
|
children: [
|
|
15212
|
-
/* @__PURE__ */ (0,
|
|
15292
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15213
15293
|
GridBackground_default,
|
|
15214
15294
|
{
|
|
15215
15295
|
dateRange,
|
|
@@ -15219,7 +15299,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15219
15299
|
isCustomWeekend
|
|
15220
15300
|
}
|
|
15221
15301
|
),
|
|
15222
|
-
todayInRange && /* @__PURE__ */ (0,
|
|
15302
|
+
todayInRange && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15223
15303
|
TodayIndicator_default,
|
|
15224
15304
|
{
|
|
15225
15305
|
monthStart,
|
|
@@ -15228,7 +15308,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15228
15308
|
onHoverEnd: () => setActiveTimelineTooltip(null)
|
|
15229
15309
|
}
|
|
15230
15310
|
),
|
|
15231
|
-
visibleTimelineMarkers.length > 0 && /* @__PURE__ */ (0,
|
|
15311
|
+
visibleTimelineMarkers.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15232
15312
|
TimelineMarkers_default,
|
|
15233
15313
|
{
|
|
15234
15314
|
rangeStart: monthStart,
|
|
@@ -15239,7 +15319,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15239
15319
|
onHoverEnd: () => setActiveTimelineTooltip(null)
|
|
15240
15320
|
}
|
|
15241
15321
|
),
|
|
15242
|
-
/* @__PURE__ */ (0,
|
|
15322
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15243
15323
|
DependencyLines_default,
|
|
15244
15324
|
{
|
|
15245
15325
|
tasks: renderedDependencyTasks,
|
|
@@ -15248,7 +15328,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15248
15328
|
monthStart,
|
|
15249
15329
|
dayWidth,
|
|
15250
15330
|
rowHeight: effectiveRowHeight,
|
|
15251
|
-
gridWidth,
|
|
15331
|
+
gridWidth: renderGridWidth,
|
|
15252
15332
|
totalHeight: totalGridHeight,
|
|
15253
15333
|
rowIndexByTaskId: visibleTaskIndexMap,
|
|
15254
15334
|
dragOverrides: dependencyOverrides,
|
|
@@ -15259,7 +15339,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15259
15339
|
criticalTaskIds: criticalPathMode ? criticalTaskIds : void 0
|
|
15260
15340
|
}
|
|
15261
15341
|
),
|
|
15262
|
-
dependencyLineMenu && /* @__PURE__ */ (0,
|
|
15342
|
+
dependencyLineMenu && /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
15263
15343
|
"div",
|
|
15264
15344
|
{
|
|
15265
15345
|
className: "gantt-dependencyLineMenu",
|
|
@@ -15267,8 +15347,8 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15267
15347
|
role: "dialog",
|
|
15268
15348
|
"aria-label": "\u0414\u0435\u0439\u0441\u0442\u0432\u0438\u044F \u0441\u043E \u0441\u0432\u044F\u0437\u044C\u044E",
|
|
15269
15349
|
children: [
|
|
15270
|
-
/* @__PURE__ */ (0,
|
|
15271
|
-
!disableDependencyEditing && /* @__PURE__ */ (0,
|
|
15350
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("span", { className: "gantt-dependencyLineMenuType", children: dependencyLineMenu.linkType === "FS" ? "\u041E\u041D" : dependencyLineMenu.linkType === "SS" ? "\u041D\u041D" : dependencyLineMenu.linkType === "FF" ? "\u041E\u041E" : "\u041D\u041E" }),
|
|
15351
|
+
!disableDependencyEditing && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15272
15352
|
"button",
|
|
15273
15353
|
{
|
|
15274
15354
|
type: "button",
|
|
@@ -15276,7 +15356,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15276
15356
|
"aria-label": "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0432\u044F\u0437\u044C",
|
|
15277
15357
|
title: "\u0423\u0434\u0430\u043B\u0438\u0442\u044C \u0441\u0432\u044F\u0437\u044C",
|
|
15278
15358
|
onClick: handleDependencyLineDelete,
|
|
15279
|
-
children: /* @__PURE__ */ (0,
|
|
15359
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsxs)(
|
|
15280
15360
|
"svg",
|
|
15281
15361
|
{
|
|
15282
15362
|
xmlns: "http://www.w3.org/2000/svg",
|
|
@@ -15290,15 +15370,15 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15290
15370
|
strokeLinejoin: "round",
|
|
15291
15371
|
"aria-hidden": "true",
|
|
15292
15372
|
children: [
|
|
15293
|
-
/* @__PURE__ */ (0,
|
|
15294
|
-
/* @__PURE__ */ (0,
|
|
15295
|
-
/* @__PURE__ */ (0,
|
|
15373
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("path", { d: "M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6" }),
|
|
15374
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("path", { d: "M3 6h18" }),
|
|
15375
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)("path", { d: "M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2" })
|
|
15296
15376
|
]
|
|
15297
15377
|
}
|
|
15298
15378
|
)
|
|
15299
15379
|
}
|
|
15300
15380
|
),
|
|
15301
|
-
/* @__PURE__ */ (0,
|
|
15381
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15302
15382
|
"button",
|
|
15303
15383
|
{
|
|
15304
15384
|
type: "button",
|
|
@@ -15312,16 +15392,16 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15312
15392
|
]
|
|
15313
15393
|
}
|
|
15314
15394
|
),
|
|
15315
|
-
/* @__PURE__ */ (0,
|
|
15395
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15316
15396
|
DependencyCreationOverlay,
|
|
15317
15397
|
{
|
|
15318
15398
|
drag: dependencyCreationDrag,
|
|
15319
|
-
width:
|
|
15399
|
+
width: renderGridWidth,
|
|
15320
15400
|
height: totalGridHeight
|
|
15321
15401
|
}
|
|
15322
15402
|
),
|
|
15323
|
-
dependencyCreationError && /* @__PURE__ */ (0,
|
|
15324
|
-
dragGuideLines && /* @__PURE__ */ (0,
|
|
15403
|
+
dependencyCreationError && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)("div", { className: "gantt-dependencyCreation-error", role: "status", children: dependencyCreationError }),
|
|
15404
|
+
dragGuideLines && /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15325
15405
|
DragGuideLines_default,
|
|
15326
15406
|
{
|
|
15327
15407
|
isDragging: dragGuideLines.isDragging,
|
|
@@ -15331,7 +15411,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15331
15411
|
totalHeight: totalGridHeight
|
|
15332
15412
|
}
|
|
15333
15413
|
),
|
|
15334
|
-
renderedChartTasks.map(({ task, index }) => /* @__PURE__ */ (0,
|
|
15414
|
+
renderedChartTasks.map(({ task, index }) => /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15335
15415
|
"div",
|
|
15336
15416
|
{
|
|
15337
15417
|
style: {
|
|
@@ -15341,7 +15421,7 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15341
15421
|
right: 0,
|
|
15342
15422
|
height: `${effectiveRowHeight}px`
|
|
15343
15423
|
},
|
|
15344
|
-
children: /* @__PURE__ */ (0,
|
|
15424
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15345
15425
|
TaskRow_default,
|
|
15346
15426
|
{
|
|
15347
15427
|
task,
|
|
@@ -15385,7 +15465,17 @@ function TaskGanttChartInner(props, ref) {
|
|
|
15385
15465
|
)
|
|
15386
15466
|
},
|
|
15387
15467
|
task.id
|
|
15388
|
-
))
|
|
15468
|
+
)),
|
|
15469
|
+
/* @__PURE__ */ (0, import_jsx_runtime21.jsx)(
|
|
15470
|
+
GenerationSkeleton_default,
|
|
15471
|
+
{
|
|
15472
|
+
count: skeletonRowCount,
|
|
15473
|
+
rowHeight: effectiveRowHeight,
|
|
15474
|
+
variant: "chart",
|
|
15475
|
+
startIndex: visibleTasks.length,
|
|
15476
|
+
chartDayWidth: dayWidth
|
|
15477
|
+
}
|
|
15478
|
+
)
|
|
15389
15479
|
]
|
|
15390
15480
|
}
|
|
15391
15481
|
)
|
|
@@ -15406,7 +15496,7 @@ GanttChart.displayName = "GanttChart";
|
|
|
15406
15496
|
|
|
15407
15497
|
// src/components/ui/Button.tsx
|
|
15408
15498
|
var import_react19 = __toESM(require("react"));
|
|
15409
|
-
var
|
|
15499
|
+
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
15410
15500
|
var Button = import_react19.default.forwardRef(
|
|
15411
15501
|
({ className, variant = "default", size = "default", children, ...props }, ref) => {
|
|
15412
15502
|
const classes = [
|
|
@@ -15415,7 +15505,7 @@ var Button = import_react19.default.forwardRef(
|
|
|
15415
15505
|
size !== "default" ? `gantt-btn-${size}` : "",
|
|
15416
15506
|
className || ""
|
|
15417
15507
|
].filter(Boolean).join(" ");
|
|
15418
|
-
return /* @__PURE__ */ (0,
|
|
15508
|
+
return /* @__PURE__ */ (0, import_jsx_runtime22.jsx)("button", { ref, className: classes, ...props, children });
|
|
15419
15509
|
}
|
|
15420
15510
|
);
|
|
15421
15511
|
Button.displayName = "Button";
|
|
@@ -15461,6 +15551,7 @@ var nameContains = (substring, caseSensitive = false) => (task) => {
|
|
|
15461
15551
|
DatePicker,
|
|
15462
15552
|
DragGuideLines,
|
|
15463
15553
|
GanttChart,
|
|
15554
|
+
GenerationSkeletonRows,
|
|
15464
15555
|
GridBackground,
|
|
15465
15556
|
Input,
|
|
15466
15557
|
PlanFactMatrix,
|