@burdenoff/microfe-planmagnet 2026.925.18 → 2026.926.2
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/dist/generated/wspace-types.d.ts +61 -2
- package/dist/generated/wspace-types.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoot.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoot.js +90 -79
- package/dist/planmagnet/PlanMagnetRoot.js.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.js +124 -127
- package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
- package/dist/planmagnet/create/CreateDialogs.d.ts.map +1 -1
- package/dist/planmagnet/create/CreateDialogs.js +149 -124
- package/dist/planmagnet/create/CreateDialogs.js.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/NotFoundPage.d.ts +6 -0
- package/dist/planmagnet/pages/NotFoundPage.d.ts.map +1 -0
- package/dist/planmagnet/pages/NotFoundPage.js +18 -0
- package/dist/planmagnet/pages/NotFoundPage.js.map +1 -0
- package/dist/planmagnet/pages/ProductsCreateProductPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsCreateProductPagePage.js +93 -98
- package/dist/planmagnet/pages/ProductsCreateProductPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js +72 -79
- package/dist/planmagnet/pages/ProductsCreateRoadmapPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js +112 -123
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js +103 -87
- package/dist/planmagnet/pages/ProductsNewFeaturePagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +92 -98
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsProductsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsProductsPagePage.js +88 -96
- package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js +116 -114
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js +82 -88
- package/dist/planmagnet/pages/ProductsRoadmapDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +79 -79
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js +111 -91
- package/dist/planmagnet/pages/ProjectsCreateProjectPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +117 -97
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +150 -154
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +154 -117
- package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js.map +1 -1
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +75 -31
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksCreateTaskPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksCreateTaskPagePage.js +161 -115
- package/dist/planmagnet/pages/TasksCreateTaskPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksEditTaskPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksEditTaskPagePage.js +117 -102
- package/dist/planmagnet/pages/TasksEditTaskPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TeamInviteMemberPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TeamInviteMemberPagePage.js +147 -147
- package/dist/planmagnet/pages/TeamInviteMemberPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.js +77 -67
- package/dist/planmagnet/pages/TeamTeamPagePage.js.map +1 -1
- package/dist/planmagnet/roadmaps/planningFocus.d.ts +23 -0
- package/dist/planmagnet/roadmaps/planningFocus.d.ts.map +1 -0
- package/dist/planmagnet/roadmaps/planningFocus.js +76 -0
- package/dist/planmagnet/roadmaps/planningFocus.js.map +1 -0
- package/dist/planmagnet/sprints/SprintControls.d.ts.map +1 -1
- package/dist/planmagnet/sprints/SprintControls.js +48 -29
- package/dist/planmagnet/sprints/SprintControls.js.map +1 -1
- package/dist/planmagnet/sprints/SprintDates.d.ts +37 -0
- package/dist/planmagnet/sprints/SprintDates.d.ts.map +1 -0
- package/dist/planmagnet/sprints/SprintDates.js +114 -0
- package/dist/planmagnet/sprints/SprintDates.js.map +1 -0
- package/dist/planmagnet/utils/email.d.ts +9 -0
- package/dist/planmagnet/utils/email.d.ts.map +1 -0
- package/dist/planmagnet/utils/email.js +15 -0
- package/dist/planmagnet/utils/email.js.map +1 -0
- package/dist/planmagnet/utils/formValidation.d.ts +18 -0
- package/dist/planmagnet/utils/formValidation.d.ts.map +1 -0
- package/dist/planmagnet/utils/formValidation.js +17 -0
- package/dist/planmagnet/utils/formValidation.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,12 +1,14 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { throwOnError as e } from "../utils/mutationResult.js";
|
|
2
|
+
import { endBeforeStart as t } from "../utils/formValidation.js";
|
|
3
|
+
import { useEntityId as n } from "../hooks/useEntityId.js";
|
|
4
|
+
import { useMemo as r, useState as i } from "react";
|
|
5
|
+
import { ArrowLeft as a, Save as o } from "lucide-react";
|
|
6
|
+
import { gql as s } from "@apollo/client";
|
|
7
|
+
import { useMutation as c, useQuery as l } from "@apollo/client/react";
|
|
8
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
9
|
+
import { Button as f, Card as p, CardContent as m, CardHeader as h, CardTitle as g, Input as _ } from "@burdenoff/fe-libs/ui";
|
|
8
10
|
//#region src/planmagnet/pages/ProjectsEditProjectPagePage.tsx
|
|
9
|
-
var
|
|
11
|
+
var v = s`
|
|
10
12
|
query GetProjectsForEdit($id: ID!) {
|
|
11
13
|
planmagnetProject(id: $id) {
|
|
12
14
|
id
|
|
@@ -21,7 +23,7 @@ var g = a`
|
|
|
21
23
|
tags
|
|
22
24
|
}
|
|
23
25
|
}
|
|
24
|
-
`,
|
|
26
|
+
`, y = s`
|
|
25
27
|
mutation UpdateProject($id: ID!, $input: PlanmagnetUpdateProjectInput!) {
|
|
26
28
|
planmagnetUpdateProject(id: $id, input: $input) {
|
|
27
29
|
id
|
|
@@ -37,113 +39,119 @@ var g = a`
|
|
|
37
39
|
}
|
|
38
40
|
}
|
|
39
41
|
`;
|
|
40
|
-
function
|
|
41
|
-
let
|
|
42
|
-
variables: { id:
|
|
43
|
-
skip: !
|
|
44
|
-
}), [
|
|
45
|
-
name:
|
|
46
|
-
description:
|
|
47
|
-
methodology:
|
|
48
|
-
startDate:
|
|
49
|
-
endDate:
|
|
50
|
-
}), [
|
|
51
|
-
...
|
|
52
|
-
...
|
|
53
|
-
},
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
onCompleted: () => {
|
|
61
|
-
S("Project updated successfully.");
|
|
62
|
-
}
|
|
63
|
-
});
|
|
64
|
-
return a ? y && !v ? /* @__PURE__ */ c("div", {
|
|
42
|
+
function b() {
|
|
43
|
+
let s = n("projectId"), { data: b, loading: x, error: S } = l(v, {
|
|
44
|
+
variables: { id: s },
|
|
45
|
+
skip: !s
|
|
46
|
+
}), [C, w] = i(null), T = b?.planmagnetProject, E = r(() => ({
|
|
47
|
+
name: T?.name ?? "",
|
|
48
|
+
description: T?.description ?? "",
|
|
49
|
+
methodology: T?.methodology ?? "SCRUM",
|
|
50
|
+
startDate: T?.startDate ? T.startDate.split("T")[0] : "",
|
|
51
|
+
endDate: T?.endDate ? T.endDate.split("T")[0] : ""
|
|
52
|
+
}), [T]), [D, O] = i({}), k = {
|
|
53
|
+
...E,
|
|
54
|
+
...D
|
|
55
|
+
}, A = (e) => O(e), [j, { loading: M }] = c(y, { refetchQueries: [
|
|
56
|
+
"GetProjects",
|
|
57
|
+
"GetActiveProjects",
|
|
58
|
+
"GetDashboardData",
|
|
59
|
+
"GetProjectsForEdit"
|
|
60
|
+
] }), [N, P] = i(null), F = t(k.startDate, k.endDate);
|
|
61
|
+
return s ? x && !b ? /* @__PURE__ */ u("div", {
|
|
65
62
|
className: "flex items-center justify-center p-12",
|
|
66
|
-
children: /* @__PURE__ */
|
|
67
|
-
}) :
|
|
68
|
-
className: "p-6 text-
|
|
69
|
-
children: ["Error loading project: ",
|
|
70
|
-
}) :
|
|
63
|
+
children: /* @__PURE__ */ u("div", { className: "animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full" })
|
|
64
|
+
}) : S ? /* @__PURE__ */ d("div", {
|
|
65
|
+
className: "p-6 text-destructive",
|
|
66
|
+
children: ["Error loading project: ", S.message]
|
|
67
|
+
}) : T ? /* @__PURE__ */ d("div", {
|
|
71
68
|
className: "space-y-6 p-6 max-w-4xl",
|
|
72
69
|
children: [
|
|
73
|
-
/* @__PURE__ */
|
|
70
|
+
/* @__PURE__ */ d("div", {
|
|
74
71
|
className: "flex items-center justify-between",
|
|
75
|
-
children: [/* @__PURE__ */
|
|
72
|
+
children: [/* @__PURE__ */ d("div", {
|
|
76
73
|
className: "flex items-center gap-3",
|
|
77
|
-
children: [/* @__PURE__ */
|
|
74
|
+
children: [/* @__PURE__ */ u(f, {
|
|
78
75
|
variant: "ghost",
|
|
79
76
|
size: "sm",
|
|
80
|
-
children: /* @__PURE__ */
|
|
81
|
-
}), /* @__PURE__ */
|
|
77
|
+
children: /* @__PURE__ */ u(a, { className: "h-4 w-4" })
|
|
78
|
+
}), /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("h1", {
|
|
82
79
|
className: "text-2xl font-semibold",
|
|
83
80
|
children: "Edit Project"
|
|
84
|
-
}), /* @__PURE__ */
|
|
81
|
+
}), /* @__PURE__ */ d("p", {
|
|
85
82
|
className: "text-sm text-muted-foreground",
|
|
86
|
-
children: ["Editing ",
|
|
83
|
+
children: ["Editing ", T.name]
|
|
87
84
|
})] })]
|
|
88
|
-
}), /* @__PURE__ */
|
|
85
|
+
}), /* @__PURE__ */ d(f, {
|
|
89
86
|
size: "sm",
|
|
90
|
-
onClick: () => {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
87
|
+
onClick: async () => {
|
|
88
|
+
if (!T || F) return;
|
|
89
|
+
P(null), w(null);
|
|
90
|
+
let t = {
|
|
91
|
+
...k.startDate !== E.startDate && { startDate: k.startDate || void 0 },
|
|
92
|
+
...k.endDate !== E.endDate && { endDate: k.endDate || void 0 }
|
|
93
|
+
};
|
|
94
|
+
try {
|
|
95
|
+
await e(j({ variables: {
|
|
96
|
+
id: T.id,
|
|
97
|
+
input: {
|
|
98
|
+
name: k.name || void 0,
|
|
99
|
+
description: k.description || void 0,
|
|
100
|
+
methodology: k.methodology || void 0,
|
|
101
|
+
...t
|
|
102
|
+
}
|
|
103
|
+
} })), w("Project updated successfully.");
|
|
104
|
+
} catch (e) {
|
|
105
|
+
P(e instanceof Error ? e.message : "The project could not be saved.");
|
|
106
|
+
}
|
|
101
107
|
},
|
|
102
|
-
disabled:
|
|
103
|
-
children: [/* @__PURE__ */
|
|
108
|
+
disabled: M || F,
|
|
109
|
+
children: [/* @__PURE__ */ u(o, { className: "mr-1 h-4 w-4" }), M ? "Saving..." : "Save Changes"]
|
|
104
110
|
})]
|
|
105
111
|
}),
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
112
|
+
C && /* @__PURE__ */ u("div", {
|
|
113
|
+
role: "status",
|
|
114
|
+
className: "p-3 bg-muted text-status-success-text rounded-md text-sm",
|
|
115
|
+
children: C
|
|
109
116
|
}),
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
117
|
+
N && /* @__PURE__ */ u("div", {
|
|
118
|
+
role: "alert",
|
|
119
|
+
className: "p-3 bg-destructive/10 text-destructive rounded-md text-sm",
|
|
120
|
+
children: N
|
|
113
121
|
}),
|
|
114
|
-
/* @__PURE__ */
|
|
122
|
+
/* @__PURE__ */ d(p, { children: [/* @__PURE__ */ u(h, { children: /* @__PURE__ */ u(g, { children: "Project Details" }) }), /* @__PURE__ */ d(m, {
|
|
115
123
|
className: "space-y-4",
|
|
116
124
|
children: [
|
|
117
|
-
/* @__PURE__ */
|
|
125
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("label", {
|
|
118
126
|
className: "text-sm font-medium",
|
|
119
127
|
children: "Project Name"
|
|
120
|
-
}), /* @__PURE__ */
|
|
121
|
-
value:
|
|
122
|
-
onChange: (e) =>
|
|
123
|
-
...
|
|
128
|
+
}), /* @__PURE__ */ u(_, {
|
|
129
|
+
value: k.name,
|
|
130
|
+
onChange: (e) => A({
|
|
131
|
+
...k,
|
|
124
132
|
name: e.target.value
|
|
125
133
|
}),
|
|
126
134
|
className: "mt-1"
|
|
127
135
|
})] }),
|
|
128
|
-
/* @__PURE__ */
|
|
136
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("label", {
|
|
129
137
|
className: "text-sm font-medium",
|
|
130
138
|
children: "Description"
|
|
131
|
-
}), /* @__PURE__ */
|
|
139
|
+
}), /* @__PURE__ */ u("textarea", {
|
|
132
140
|
className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[80px]",
|
|
133
|
-
value:
|
|
134
|
-
onChange: (e) =>
|
|
135
|
-
...
|
|
141
|
+
value: k.description,
|
|
142
|
+
onChange: (e) => A({
|
|
143
|
+
...k,
|
|
136
144
|
description: e.target.value
|
|
137
145
|
})
|
|
138
146
|
})] }),
|
|
139
|
-
/* @__PURE__ */
|
|
147
|
+
/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("label", {
|
|
140
148
|
className: "text-sm font-medium",
|
|
141
149
|
children: "Methodology"
|
|
142
|
-
}), /* @__PURE__ */
|
|
150
|
+
}), /* @__PURE__ */ u("select", {
|
|
143
151
|
className: "mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm capitalize",
|
|
144
|
-
value:
|
|
145
|
-
onChange: (e) =>
|
|
146
|
-
...
|
|
152
|
+
value: k.methodology,
|
|
153
|
+
onChange: (e) => A({
|
|
154
|
+
...k,
|
|
147
155
|
methodology: e.target.value
|
|
148
156
|
}),
|
|
149
157
|
children: [
|
|
@@ -153,49 +161,61 @@ function v() {
|
|
|
153
161
|
"HYBRID",
|
|
154
162
|
"AGILE",
|
|
155
163
|
"CUSTOM"
|
|
156
|
-
].map((e) => /* @__PURE__ */
|
|
164
|
+
].map((e) => /* @__PURE__ */ u("option", {
|
|
157
165
|
value: e,
|
|
158
166
|
children: e.toLowerCase()
|
|
159
167
|
}, e))
|
|
160
168
|
})] }),
|
|
161
|
-
/* @__PURE__ */
|
|
169
|
+
/* @__PURE__ */ d("div", {
|
|
162
170
|
className: "grid grid-cols-2 gap-4",
|
|
163
|
-
children: [/* @__PURE__ */
|
|
171
|
+
children: [/* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("label", {
|
|
172
|
+
htmlFor: "project-start",
|
|
164
173
|
className: "text-sm font-medium",
|
|
165
174
|
children: "Start Date"
|
|
166
|
-
}), /* @__PURE__ */
|
|
175
|
+
}), /* @__PURE__ */ u(_, {
|
|
176
|
+
id: "project-start",
|
|
167
177
|
type: "date",
|
|
168
|
-
value:
|
|
169
|
-
|
|
170
|
-
|
|
178
|
+
value: k.startDate,
|
|
179
|
+
max: k.endDate || void 0,
|
|
180
|
+
onChange: (e) => A({
|
|
181
|
+
...k,
|
|
171
182
|
startDate: e.target.value
|
|
172
183
|
}),
|
|
173
184
|
className: "mt-1"
|
|
174
|
-
})] }), /* @__PURE__ */
|
|
185
|
+
})] }), /* @__PURE__ */ d("div", { children: [/* @__PURE__ */ u("label", {
|
|
186
|
+
htmlFor: "project-end",
|
|
175
187
|
className: "text-sm font-medium",
|
|
176
188
|
children: "End Date"
|
|
177
|
-
}), /* @__PURE__ */
|
|
189
|
+
}), /* @__PURE__ */ u(_, {
|
|
190
|
+
id: "project-end",
|
|
178
191
|
type: "date",
|
|
179
|
-
value:
|
|
180
|
-
|
|
181
|
-
|
|
192
|
+
value: k.endDate,
|
|
193
|
+
min: k.startDate || void 0,
|
|
194
|
+
onChange: (e) => A({
|
|
195
|
+
...k,
|
|
182
196
|
endDate: e.target.value
|
|
183
197
|
}),
|
|
198
|
+
"aria-invalid": F,
|
|
184
199
|
className: "mt-1"
|
|
185
200
|
})] })]
|
|
201
|
+
}),
|
|
202
|
+
F && /* @__PURE__ */ u("p", {
|
|
203
|
+
role: "alert",
|
|
204
|
+
className: "text-sm text-destructive",
|
|
205
|
+
children: "The end date is before the start date."
|
|
186
206
|
})
|
|
187
207
|
]
|
|
188
208
|
})] })
|
|
189
209
|
]
|
|
190
|
-
}) : /* @__PURE__ */
|
|
210
|
+
}) : /* @__PURE__ */ u("div", {
|
|
191
211
|
className: "p-6 text-muted-foreground",
|
|
192
212
|
children: "Project not found."
|
|
193
|
-
}) : /* @__PURE__ */
|
|
213
|
+
}) : /* @__PURE__ */ u("div", {
|
|
194
214
|
className: "p-6 text-muted-foreground",
|
|
195
215
|
children: "No project selected. Open one from the list."
|
|
196
216
|
});
|
|
197
217
|
}
|
|
198
218
|
//#endregion
|
|
199
|
-
export {
|
|
219
|
+
export { b as ProjectsEditProjectPagePage };
|
|
200
220
|
|
|
201
221
|
//# sourceMappingURL=ProjectsEditProjectPagePage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectsEditProjectPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProjectsEditProjectPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState, useMemo } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery, useMutation } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Save, ArrowLeft } from 'lucide-react';\nimport { useEntityId } from '../hooks/useEntityId';\n\nconst GET_PROJECTS = gql`\n query GetProjectsForEdit($id: ID!) {\n planmagnetProject(id: $id) {\n id\n name\n key\n description\n status\n methodology\n ownerId\n startDate\n endDate\n tags\n }\n }\n`;\n\nconst UPDATE_PROJECT = gql`\n mutation UpdateProject($id: ID!, $input: PlanmagnetUpdateProjectInput!) {\n planmagnetUpdateProject(id: $id, input: $input) {\n id\n name\n key\n description\n status\n methodology\n ownerId\n startDate\n endDate\n tags\n }\n }\n`;\n\nexport function ProjectsEditProjectPagePage() {\n const projectId = useEntityId('projectId');\n\n const {\n data,\n loading,\n error,\n } = // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery<Record<string, any>>(GET_PROJECTS, {\n variables: { id: projectId },\n skip: !projectId,\n });\n\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n\n const project = data?.planmagnetProject;\n\n const defaultForm = useMemo(\n () => ({\n name: project?.name ?? '',\n description: project?.description ?? '',\n methodology: project?.methodology ?? 'SCRUM',\n startDate: project?.startDate ? project.startDate.split('T')[0] : '',\n endDate: project?.endDate ? project.endDate.split('T')[0] : '',\n }),\n [project]\n );\n\n const [formOverrides, setFormOverrides] = useState<Record<string, string>>({});\n const form = { ...defaultForm, ...formOverrides };\n const setForm = (updates: Record<string, string>) => setFormOverrides(updates);\n\n const [updateProject, { loading: saving, error: saveError }] = useMutation(UPDATE_PROJECT, {\n refetchQueries: ['GetProjects', 'GetActiveProjects', 'GetDashboardData', 'GetProjectsForEdit'],\n onCompleted: () => {\n setSuccessMessage('Project updated successfully.');\n },\n });\n\n const methodologies = ['SCRUM', 'KANBAN', 'WATERFALL', 'HYBRID', 'AGILE', 'CUSTOM'] as const;\n\n const handleSave = () => {\n if (!project) return;\n updateProject({\n variables: {\n id: project.id,\n input: {\n name: form.name || undefined,\n description: form.description || undefined,\n methodology: form.methodology || undefined,\n startDate: form.startDate || undefined,\n endDate: form.endDate || undefined,\n },\n },\n });\n };\n\n if (!projectId)\n return (\n <div className=\"p-6 text-muted-foreground\">No project selected. Open one from the list.</div>\n );\n // Only before the first load: a refetch must not blank the page (it\n // unmounts every component on it and loses their state).\n if (loading && !data)\n return (\n <div className=\"flex items-center justify-center p-12\">\n <div className=\"animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full\" />\n </div>\n );\n if (error) return <div className=\"p-6 text-red-500\">Error loading project: {error.message}</div>;\n if (!project) return <div className=\"p-6 text-muted-foreground\">Project not found.</div>;\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Button variant=\"ghost\" size=\"sm\">\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <h1 className=\"text-2xl font-semibold\">Edit Project</h1>\n <p className=\"text-sm text-muted-foreground\">Editing {project.name}</p>\n </div>\n </div>\n <Button size=\"sm\" onClick={handleSave} disabled={saving}>\n <Save className=\"mr-1 h-4 w-4\" />\n {saving ? 'Saving...' : 'Save Changes'}\n </Button>\n </div>\n\n {successMessage && (\n <div className=\"p-3 bg-green-50 text-green-800 rounded-md text-sm\">{successMessage}</div>\n )}\n {saveError && (\n <div className=\"p-3 bg-red-50 text-red-800 rounded-md text-sm\">\n Error: {saveError.message}\n </div>\n )}\n\n <Card>\n <CardHeader>\n <CardTitle>Project Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label className=\"text-sm font-medium\">Project Name</label>\n <Input\n value={form.name}\n onChange={(e) => setForm({ ...form, name: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Description</label>\n <textarea\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[80px]\"\n value={form.description}\n onChange={(e) => setForm({ ...form, description: e.target.value })}\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Methodology</label>\n <select\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm capitalize\"\n value={form.methodology}\n onChange={(e) => setForm({ ...form, methodology: e.target.value })}\n >\n {methodologies.map((m) => (\n <option key={m} value={m}>\n {m.toLowerCase()}\n </option>\n ))}\n </select>\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label className=\"text-sm font-medium\">Start Date</label>\n <Input\n type=\"date\"\n value={form.startDate}\n onChange={(e) => setForm({ ...form, startDate: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">End Date</label>\n <Input\n type=\"date\"\n value={form.endDate}\n onChange={(e) => setForm({ ...form, endDate: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n </div>\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ProjectsEditProjectPagePage.js","names":[],"sources":["../../../src/planmagnet/pages/ProjectsEditProjectPagePage.tsx"],"sourcesContent":["// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { useState, useMemo } from 'react';\nimport { gql } from '@apollo/client';\nimport { useQuery, useMutation } from '@apollo/client/react';\nimport { Card, CardContent, CardHeader, CardTitle, Button, Input } from '@burdenoff/fe-libs/ui';\nimport { Save, ArrowLeft } from 'lucide-react';\nimport { useEntityId } from '../hooks/useEntityId';\nimport { throwOnError } from '../utils/mutationResult';\nimport { endBeforeStart } from '../utils/formValidation';\n\nconst GET_PROJECTS = gql`\n query GetProjectsForEdit($id: ID!) {\n planmagnetProject(id: $id) {\n id\n name\n key\n description\n status\n methodology\n ownerId\n startDate\n endDate\n tags\n }\n }\n`;\n\nconst UPDATE_PROJECT = gql`\n mutation UpdateProject($id: ID!, $input: PlanmagnetUpdateProjectInput!) {\n planmagnetUpdateProject(id: $id, input: $input) {\n id\n name\n key\n description\n status\n methodology\n ownerId\n startDate\n endDate\n tags\n }\n }\n`;\n\nexport function ProjectsEditProjectPagePage() {\n const projectId = useEntityId('projectId');\n\n const {\n data,\n loading,\n error,\n } = // eslint-disable-next-line @typescript-eslint/no-explicit-any\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n useQuery<Record<string, any>>(GET_PROJECTS, {\n variables: { id: projectId },\n skip: !projectId,\n });\n\n const [successMessage, setSuccessMessage] = useState<string | null>(null);\n\n const project = data?.planmagnetProject;\n\n const defaultForm = useMemo(\n () => ({\n name: project?.name ?? '',\n description: project?.description ?? '',\n methodology: project?.methodology ?? 'SCRUM',\n startDate: project?.startDate ? project.startDate.split('T')[0] : '',\n endDate: project?.endDate ? project.endDate.split('T')[0] : '',\n }),\n [project]\n );\n\n const [formOverrides, setFormOverrides] = useState<Record<string, string>>({});\n const form = { ...defaultForm, ...formOverrides };\n const setForm = (updates: Record<string, string>) => setFormOverrides(updates);\n\n // Success only after the service accepted the change (errorPolicy 'all' resolves refused mutations).\n const [updateProject, { loading: saving }] = useMutation(UPDATE_PROJECT, {\n refetchQueries: ['GetProjects', 'GetActiveProjects', 'GetDashboardData', 'GetProjectsForEdit'],\n });\n const [saveError, setSaveError] = useState<string | null>(null);\n const invalidDates = endBeforeStart(form.startDate, form.endDate);\n\n const methodologies = ['SCRUM', 'KANBAN', 'WATERFALL', 'HYBRID', 'AGILE', 'CUSTOM'] as const;\n\n const handleSave = async () => {\n if (!project || invalidDates) return;\n setSaveError(null);\n setSuccessMessage(null);\n // Dates are sent only when they were changed: the service checks the pair the project would end up\n // with, so re-sending untouched dates of an older project stored with inverted dates would refuse a\n // plain rename (BOFF-7833).\n const dateChanges = {\n ...(form.startDate !== defaultForm.startDate && { startDate: form.startDate || undefined }),\n ...(form.endDate !== defaultForm.endDate && { endDate: form.endDate || undefined }),\n };\n try {\n await throwOnError(\n updateProject({\n variables: {\n id: project.id,\n input: {\n name: form.name || undefined,\n description: form.description || undefined,\n methodology: form.methodology || undefined,\n ...dateChanges,\n },\n },\n })\n );\n setSuccessMessage('Project updated successfully.');\n } catch (e) {\n setSaveError(e instanceof Error ? e.message : 'The project could not be saved.');\n }\n };\n\n if (!projectId)\n return (\n <div className=\"p-6 text-muted-foreground\">No project selected. Open one from the list.</div>\n );\n // Only before the first load: a refetch must not blank the page (it\n // unmounts every component on it and loses their state).\n if (loading && !data)\n return (\n <div className=\"flex items-center justify-center p-12\">\n <div className=\"animate-spin h-8 w-8 border-2 border-primary border-t-transparent rounded-full\" />\n </div>\n );\n if (error)\n return <div className=\"p-6 text-destructive\">Error loading project: {error.message}</div>;\n if (!project) return <div className=\"p-6 text-muted-foreground\">Project not found.</div>;\n\n return (\n <div className=\"space-y-6 p-6 max-w-4xl\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Button variant=\"ghost\" size=\"sm\">\n <ArrowLeft className=\"h-4 w-4\" />\n </Button>\n <div>\n <h1 className=\"text-2xl font-semibold\">Edit Project</h1>\n <p className=\"text-sm text-muted-foreground\">Editing {project.name}</p>\n </div>\n </div>\n <Button size=\"sm\" onClick={handleSave} disabled={saving || invalidDates}>\n <Save className=\"mr-1 h-4 w-4\" />\n {saving ? 'Saving...' : 'Save Changes'}\n </Button>\n </div>\n\n {successMessage && (\n <div role=\"status\" className=\"p-3 bg-muted text-status-success-text rounded-md text-sm\">\n {successMessage}\n </div>\n )}\n {saveError && (\n <div role=\"alert\" className=\"p-3 bg-destructive/10 text-destructive rounded-md text-sm\">\n {saveError}\n </div>\n )}\n\n <Card>\n <CardHeader>\n <CardTitle>Project Details</CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div>\n <label className=\"text-sm font-medium\">Project Name</label>\n <Input\n value={form.name}\n onChange={(e) => setForm({ ...form, name: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Description</label>\n <textarea\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm min-h-[80px]\"\n value={form.description}\n onChange={(e) => setForm({ ...form, description: e.target.value })}\n />\n </div>\n <div>\n <label className=\"text-sm font-medium\">Methodology</label>\n <select\n className=\"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm capitalize\"\n value={form.methodology}\n onChange={(e) => setForm({ ...form, methodology: e.target.value })}\n >\n {methodologies.map((m) => (\n <option key={m} value={m}>\n {m.toLowerCase()}\n </option>\n ))}\n </select>\n </div>\n <div className=\"grid grid-cols-2 gap-4\">\n <div>\n <label htmlFor=\"project-start\" className=\"text-sm font-medium\">\n Start Date\n </label>\n <Input\n id=\"project-start\"\n type=\"date\"\n value={form.startDate}\n max={form.endDate || undefined}\n onChange={(e) => setForm({ ...form, startDate: e.target.value })}\n className=\"mt-1\"\n />\n </div>\n <div>\n <label htmlFor=\"project-end\" className=\"text-sm font-medium\">\n End Date\n </label>\n <Input\n id=\"project-end\"\n type=\"date\"\n value={form.endDate}\n min={form.startDate || undefined}\n onChange={(e) => setForm({ ...form, endDate: e.target.value })}\n aria-invalid={invalidDates}\n className=\"mt-1\"\n />\n </div>\n </div>\n {invalidDates && (\n <p role=\"alert\" className=\"text-sm text-destructive\">\n The end date is before the start date.\n </p>\n )}\n </CardContent>\n </Card>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProjectsPlanningDetailPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProjectsPlanningDetailPagePage.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProjectsPlanningDetailPagePage.d.ts","sourceRoot":"","sources":["../../../src/planmagnet/pages/ProjectsPlanningDetailPagePage.tsx"],"names":[],"mappings":"AA8EA,wBAAgB,8BAA8B,4CAmQ7C"}
|