@burdenoff/microfe-planmagnet 2026.927.4 → 2026.927.6
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/global-types.d.ts +9 -1
- package/dist/generated/global-types.d.ts.map +1 -1
- package/dist/generated/wspace-operations.d.ts +0 -12
- package/dist/generated/wspace-operations.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.d.ts.map +1 -1
- package/dist/planmagnet/PlanMagnetRoutes.js +14 -10
- package/dist/planmagnet/PlanMagnetRoutes.js.map +1 -1
- package/dist/planmagnet/admin/PlanMagnetAdminRoot.d.ts.map +1 -1
- package/dist/planmagnet/admin/PlanMagnetAdminRoot.js +149 -127
- package/dist/planmagnet/admin/PlanMagnetAdminRoot.js.map +1 -1
- package/dist/planmagnet/board/ProjectBoard.d.ts +2 -0
- package/dist/planmagnet/board/ProjectBoard.d.ts.map +1 -1
- package/dist/planmagnet/board/ProjectBoard.js +492 -225
- package/dist/planmagnet/board/ProjectBoard.js.map +1 -1
- package/dist/planmagnet/controls/FeatureControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/FeatureControls.js +142 -139
- package/dist/planmagnet/controls/FeatureControls.js.map +1 -1
- package/dist/planmagnet/controls/FeatureTriage.d.ts +21 -0
- package/dist/planmagnet/controls/FeatureTriage.d.ts.map +1 -0
- package/dist/planmagnet/controls/FeatureTriage.js +398 -0
- package/dist/planmagnet/controls/FeatureTriage.js.map +1 -0
- package/dist/planmagnet/controls/MilestoneControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/MilestoneControls.js +76 -73
- package/dist/planmagnet/controls/MilestoneControls.js.map +1 -1
- package/dist/planmagnet/controls/ProjectControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/ProjectControls.js +47 -44
- package/dist/planmagnet/controls/ProjectControls.js.map +1 -1
- package/dist/planmagnet/controls/ReleaseControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/ReleaseControls.js +47 -44
- package/dist/planmagnet/controls/ReleaseControls.js.map +1 -1
- package/dist/planmagnet/controls/WorkItemControls.d.ts.map +1 -1
- package/dist/planmagnet/controls/WorkItemControls.js +68 -65
- package/dist/planmagnet/controls/WorkItemControls.js.map +1 -1
- package/dist/planmagnet/hooks/useCounts.d.ts +39 -0
- package/dist/planmagnet/hooks/useCounts.d.ts.map +1 -0
- package/dist/planmagnet/hooks/useCounts.js +209 -0
- package/dist/planmagnet/hooks/useCounts.js.map +1 -0
- package/dist/planmagnet/import/exportColumns.d.ts +52 -0
- package/dist/planmagnet/import/exportColumns.d.ts.map +1 -0
- package/dist/planmagnet/import/exportColumns.js +81 -0
- package/dist/planmagnet/import/exportColumns.js.map +1 -0
- package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js +255 -242
- package/dist/planmagnet/pages/AnalyticsAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/DashboardDashboardPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/DashboardDashboardPagePage.js +199 -160
- package/dist/planmagnet/pages/DashboardDashboardPagePage.js.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js +147 -144
- package/dist/planmagnet/pages/DocsDocDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/GoalsGoalsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/GoalsGoalsPagePage.js +2 -7
- package/dist/planmagnet/pages/GoalsGoalsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js +173 -173
- package/dist/planmagnet/pages/GoalsObjectiveDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js +120 -117
- package/dist/planmagnet/pages/ProductsEditProductPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js +97 -117
- package/dist/planmagnet/pages/ProductsFeatureAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js +168 -103
- package/dist/planmagnet/pages/ProductsFeatureDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.js +117 -103
- package/dist/planmagnet/pages/ProductsFeaturesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsProductDetailPagePage.js +4 -8
- 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 +85 -90
- package/dist/planmagnet/pages/ProductsProductsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js +12 -2
- package/dist/planmagnet/pages/ProductsReleaseDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsReleasesPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsReleasesPagePage.js +2 -2
- package/dist/planmagnet/pages/ProductsReleasesPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js +48 -71
- package/dist/planmagnet/pages/ProductsRoadmapAnalyticsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js +17 -13
- package/dist/planmagnet/pages/ProductsRoadmapsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js +1 -1
- package/dist/planmagnet/pages/ProjectsActiveProjectsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsEditProjectPagePage.js +6 -6
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js +11 -8
- package/dist/planmagnet/pages/ProjectsPlanningDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningEditPagePage.js +4 -4
- package/dist/planmagnet/pages/ProjectsPlanningPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningPagePage.js +1 -1
- package/dist/planmagnet/pages/ProjectsPlanningPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js +152 -139
- package/dist/planmagnet/pages/ProjectsProjectDetailPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ProjectsProjectsPagePage.js +75 -74
- package/dist/planmagnet/pages/ProjectsProjectsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts +7 -0
- package/dist/planmagnet/pages/ReportsReportsPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/ReportsReportsPagePage.js +39 -201
- package/dist/planmagnet/pages/ReportsReportsPagePage.js.map +1 -1
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js +118 -99
- package/dist/planmagnet/pages/SprintsStartSprintPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TasksImportPagePage.d.ts +2 -0
- package/dist/planmagnet/pages/TasksImportPagePage.d.ts.map +1 -0
- package/dist/planmagnet/pages/TasksImportPagePage.js +309 -0
- package/dist/planmagnet/pages/TasksImportPagePage.js.map +1 -0
- package/dist/planmagnet/pages/TasksTasksPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TasksTasksPagePage.js +110 -104
- package/dist/planmagnet/pages/TasksTasksPagePage.js.map +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.d.ts.map +1 -1
- package/dist/planmagnet/pages/TeamTeamPagePage.js +99 -177
- package/dist/planmagnet/pages/TeamTeamPagePage.js.map +1 -1
- package/dist/planmagnet/pages/analytics/DeliveryHealthCards.d.ts.map +1 -1
- package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js +8 -4
- package/dist/planmagnet/pages/analytics/DeliveryHealthCards.js.map +1 -1
- package/dist/planmagnet/releases/ReleaseWorkItemsCard.d.ts.map +1 -1
- package/dist/planmagnet/releases/ReleaseWorkItemsCard.js +10 -4
- package/dist/planmagnet/releases/ReleaseWorkItemsCard.js.map +1 -1
- package/dist/planmagnet/roadmaps/RoadmapControls.d.ts.map +1 -1
- package/dist/planmagnet/roadmaps/RoadmapControls.js +151 -138
- package/dist/planmagnet/roadmaps/RoadmapControls.js.map +1 -1
- package/dist/planmagnet/sprints/SprintControls.d.ts.map +1 -1
- package/dist/planmagnet/sprints/SprintControls.js +32 -30
- package/dist/planmagnet/sprints/SprintControls.js.map +1 -1
- package/dist/planmagnet/utils/mutationResult.d.ts +10 -0
- package/dist/planmagnet/utils/mutationResult.d.ts.map +1 -1
- package/dist/planmagnet/utils/mutationResult.js +2 -1
- package/dist/planmagnet/utils/mutationResult.js.map +1 -1
- package/dist/planmagnet/utils/rowNavigation.d.ts +2 -0
- package/dist/planmagnet/utils/rowNavigation.d.ts.map +1 -1
- package/dist/planmagnet/utils/rowNavigation.js +9 -8
- package/dist/planmagnet/utils/rowNavigation.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
import { usePlanMagnetNavigate as e } from "../providers/PlanMagnetProvider.js";
|
|
2
2
|
import { PersonName as t } from "../people/People.js";
|
|
3
|
-
import {
|
|
4
|
-
import { WorkItemSearchSelect as
|
|
5
|
-
import { MarkdownEditor as
|
|
6
|
-
import { DOC_STATUSES as
|
|
7
|
-
import { useState as
|
|
8
|
-
import { ArrowLeft as
|
|
9
|
-
import { useSearchParams as
|
|
10
|
-
import { gql as
|
|
11
|
-
import { useApolloClient as
|
|
12
|
-
import { jsx as
|
|
13
|
-
import { AlertDialog as
|
|
14
|
-
import { Markdown as
|
|
15
|
-
import { clearGraphqlFetchResponseCache as
|
|
3
|
+
import { LEAVES_PAGE_CONTEXT as n, throwOnError as ee } from "../utils/mutationResult.js";
|
|
4
|
+
import { WorkItemSearchSelect as te } from "../controls/Pickers.js";
|
|
5
|
+
import { MarkdownEditor as ne } from "../../components/MarkdownEditor.js";
|
|
6
|
+
import { DOC_STATUSES as re, DocStatusBadge as ie } from "../docs/DocStatusBadge.js";
|
|
7
|
+
import { useState as r } from "react";
|
|
8
|
+
import { ArrowLeft as ae, History as oe, Link2 as i, X as se } from "lucide-react";
|
|
9
|
+
import { useSearchParams as ce } from "react-router";
|
|
10
|
+
import { gql as a } from "@apollo/client";
|
|
11
|
+
import { useApolloClient as le, useMutation as o, useQuery as ue } from "@apollo/client/react";
|
|
12
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
13
|
+
import { AlertDialog as l, AlertDialogAction as u, AlertDialogCancel as d, AlertDialogContent as f, AlertDialogDescription as p, AlertDialogFooter as m, AlertDialogHeader as h, AlertDialogTitle as g, AlertDialogTrigger as _, Button as v, Card as y, CardContent as b, CardHeader as x, CardTitle as S, Input as C } from "@burdenoff/fe-libs/ui";
|
|
14
|
+
import { Markdown as w } from "@burdenoff/fe-libs/shared/components";
|
|
15
|
+
import { clearGraphqlFetchResponseCache as de } from "@burdenoff/fe-libs/shared/graphql";
|
|
16
16
|
//#region src/planmagnet/pages/DocsDocDetailPagePage.tsx
|
|
17
|
-
var
|
|
17
|
+
var T = a`
|
|
18
18
|
query DocDetail($id: ID!) {
|
|
19
19
|
planmagnetDoc(id: $id) {
|
|
20
20
|
id
|
|
@@ -42,7 +42,7 @@ var E = o`
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
}
|
|
45
|
-
`,
|
|
45
|
+
`, fe = a`
|
|
46
46
|
mutation DocUpdate($id: ID!, $input: PlanmagnetUpdateDocInput!) {
|
|
47
47
|
planmagnetUpdateDoc(id: $id, input: $input) {
|
|
48
48
|
id
|
|
@@ -50,128 +50,131 @@ var E = o`
|
|
|
50
50
|
status
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
-
`,
|
|
53
|
+
`, pe = a`
|
|
54
54
|
mutation DocRevert($id: ID!, $toVersion: Int!, $expectedVersion: Int) {
|
|
55
55
|
planmagnetRevertDoc(id: $id, toVersion: $toVersion, expectedVersion: $expectedVersion) {
|
|
56
56
|
id
|
|
57
57
|
version
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
-
`,
|
|
60
|
+
`, me = a`
|
|
61
61
|
mutation DocDelete($id: ID!) {
|
|
62
62
|
planmagnetDeleteDoc(id: $id)
|
|
63
63
|
}
|
|
64
|
-
`,
|
|
64
|
+
`, he = a`
|
|
65
65
|
mutation DocLinkWorkItem($docId: ID!, $workItemId: ID!) {
|
|
66
66
|
planmagnetLinkDocToWorkItem(docId: $docId, workItemId: $workItemId) {
|
|
67
67
|
id
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
-
`,
|
|
70
|
+
`, ge = a`
|
|
71
71
|
mutation DocUnlinkWorkItem($docId: ID!, $workItemId: ID!) {
|
|
72
72
|
planmagnetUnlinkDocFromWorkItem(docId: $docId, workItemId: $workItemId)
|
|
73
73
|
}
|
|
74
|
-
`,
|
|
75
|
-
function
|
|
76
|
-
let [
|
|
77
|
-
variables: { id:
|
|
78
|
-
skip: !
|
|
74
|
+
`, _e = (e, t) => e instanceof Error ? e.message : t, E = (e) => new Date(e).toLocaleString();
|
|
75
|
+
function D() {
|
|
76
|
+
let [a] = ce(), D = a.get("docId") ?? "", O = e(), [k, A] = r(!1), [j, M] = r(""), [N, P] = r(""), [F, I] = r(""), [L, R] = r(null), [z, ve] = r(null), [B, ye] = r(null), { data: V, loading: be, error: H } = ue(T, {
|
|
77
|
+
variables: { id: D },
|
|
78
|
+
skip: !D,
|
|
79
79
|
fetchPolicy: "cache-and-network"
|
|
80
|
-
}),
|
|
80
|
+
}), xe = le(), U = {
|
|
81
81
|
refetchQueries: ["DocDetail"],
|
|
82
82
|
awaitRefetchQueries: !0
|
|
83
|
-
}, [
|
|
84
|
-
|
|
83
|
+
}, [W, G] = o(fe, U), [Se, Ce] = o(pe, U), [we, Te] = o(me, {
|
|
84
|
+
refetchQueries: ["DocsList"],
|
|
85
|
+
context: n
|
|
86
|
+
}), [Ee, De] = o(ge, U), [K, Oe] = o(he, {
|
|
87
|
+
...U,
|
|
85
88
|
refetchQueries: ["DocDetail", "GetWorkItemDocs"]
|
|
86
|
-
}), [q, J] =
|
|
87
|
-
|
|
89
|
+
}), [q, J] = r(""), Y = V?.planmagnetDoc, X = G.loading || Ce.loading || Te.loading, Z = async (e, t) => {
|
|
90
|
+
R(null);
|
|
88
91
|
try {
|
|
89
|
-
return await
|
|
92
|
+
return await ee(e()), !0;
|
|
90
93
|
} catch (e) {
|
|
91
|
-
return
|
|
92
|
-
query:
|
|
93
|
-
variables: { id:
|
|
94
|
+
return R(_e(e, t)), de(), await xe.query({
|
|
95
|
+
query: T,
|
|
96
|
+
variables: { id: D },
|
|
94
97
|
fetchPolicy: "network-only"
|
|
95
98
|
}).catch(() => void 0), !1;
|
|
96
99
|
}
|
|
97
100
|
};
|
|
98
|
-
if (!
|
|
101
|
+
if (!D) return /* @__PURE__ */ s("div", {
|
|
99
102
|
className: "p-6 text-sm text-muted-foreground",
|
|
100
103
|
children: "No doc selected."
|
|
101
104
|
});
|
|
102
|
-
if (
|
|
105
|
+
if (be && !V) return /* @__PURE__ */ s("div", {
|
|
103
106
|
className: "p-6 text-sm text-muted-foreground",
|
|
104
107
|
children: "Loading doc…"
|
|
105
108
|
});
|
|
106
|
-
if (
|
|
109
|
+
if (H && !Y) return /* @__PURE__ */ c("p", {
|
|
107
110
|
role: "alert",
|
|
108
111
|
className: "p-6 text-sm text-destructive",
|
|
109
|
-
children: ["The doc could not be loaded: ",
|
|
112
|
+
children: ["The doc could not be loaded: ", H.message]
|
|
110
113
|
});
|
|
111
|
-
if (!Y) return /* @__PURE__ */
|
|
114
|
+
if (!Y) return /* @__PURE__ */ c("div", {
|
|
112
115
|
className: "space-y-3 p-6",
|
|
113
|
-
children: [/* @__PURE__ */
|
|
116
|
+
children: [/* @__PURE__ */ s("p", {
|
|
114
117
|
className: "text-sm text-muted-foreground",
|
|
115
118
|
children: "This doc does not exist in this workspace, or it was deleted."
|
|
116
|
-
}), /* @__PURE__ */
|
|
119
|
+
}), /* @__PURE__ */ s(v, {
|
|
117
120
|
size: "sm",
|
|
118
121
|
variant: "outline",
|
|
119
|
-
onClick: () =>
|
|
122
|
+
onClick: () => O("/docs/docs-page"),
|
|
120
123
|
children: "Back to docs"
|
|
121
124
|
})]
|
|
122
125
|
});
|
|
123
|
-
let
|
|
124
|
-
|
|
125
|
-
},
|
|
126
|
-
await Z(() =>
|
|
126
|
+
let ke = () => {
|
|
127
|
+
M(Y.title), P(Y.content), I(""), R(null), ye(Y.version), A(!0);
|
|
128
|
+
}, Ae = async () => {
|
|
129
|
+
await Z(() => W({ variables: {
|
|
127
130
|
id: Y.id,
|
|
128
131
|
input: {
|
|
129
|
-
title:
|
|
130
|
-
content:
|
|
131
|
-
...
|
|
132
|
-
expectedVersion:
|
|
132
|
+
title: j.trim(),
|
|
133
|
+
content: N,
|
|
134
|
+
...F.trim() ? { changeNote: F.trim() } : {},
|
|
135
|
+
expectedVersion: B
|
|
133
136
|
}
|
|
134
|
-
} }), "The doc could not be saved.") &&
|
|
135
|
-
}, Q = [...Y.revisions].sort((e, t) => t.version - e.version), $ =
|
|
136
|
-
return /* @__PURE__ */
|
|
137
|
+
} }), "The doc could not be saved.") && A(!1);
|
|
138
|
+
}, Q = [...Y.revisions].sort((e, t) => t.version - e.version), $ = z === null ? null : Q.find((e) => e.version === z);
|
|
139
|
+
return /* @__PURE__ */ c("div", {
|
|
137
140
|
className: "space-y-6 p-6",
|
|
138
141
|
"data-testid": "doc-detail",
|
|
139
142
|
children: [
|
|
140
|
-
/* @__PURE__ */
|
|
143
|
+
/* @__PURE__ */ c(v, {
|
|
141
144
|
size: "sm",
|
|
142
145
|
variant: "ghost",
|
|
143
|
-
onClick: () =>
|
|
144
|
-
children: [/* @__PURE__ */
|
|
146
|
+
onClick: () => O("/docs/docs-page"),
|
|
147
|
+
children: [/* @__PURE__ */ s(ae, { className: "mr-1 h-4 w-4" }), "All docs"]
|
|
145
148
|
}),
|
|
146
|
-
/* @__PURE__ */
|
|
149
|
+
/* @__PURE__ */ c("div", {
|
|
147
150
|
className: "flex flex-wrap items-start justify-between gap-3",
|
|
148
|
-
children: [/* @__PURE__ */
|
|
151
|
+
children: [/* @__PURE__ */ c("div", {
|
|
149
152
|
className: "min-w-0 space-y-1",
|
|
150
|
-
children: [/* @__PURE__ */
|
|
153
|
+
children: [/* @__PURE__ */ s("h1", {
|
|
151
154
|
className: "text-2xl font-semibold break-words",
|
|
152
155
|
"data-testid": "doc-title",
|
|
153
156
|
children: Y.title
|
|
154
|
-
}), /* @__PURE__ */
|
|
157
|
+
}), /* @__PURE__ */ c("p", {
|
|
155
158
|
className: "text-xs text-muted-foreground",
|
|
156
159
|
children: [
|
|
157
|
-
/* @__PURE__ */
|
|
160
|
+
/* @__PURE__ */ s(ie, { status: Y.status }),
|
|
158
161
|
" · version ",
|
|
159
162
|
Y.version,
|
|
160
163
|
" · updated",
|
|
161
164
|
" ",
|
|
162
|
-
|
|
165
|
+
E(Y.updatedAt),
|
|
163
166
|
" by ",
|
|
164
|
-
/* @__PURE__ */
|
|
167
|
+
/* @__PURE__ */ s(t, { id: Y.updatedBy ?? Y.createdBy })
|
|
165
168
|
]
|
|
166
169
|
})]
|
|
167
|
-
}), !
|
|
170
|
+
}), !k && /* @__PURE__ */ c("div", {
|
|
168
171
|
className: "flex flex-wrap gap-2",
|
|
169
172
|
children: [
|
|
170
|
-
|
|
173
|
+
re.filter((e) => e !== Y.status).map((e) => /* @__PURE__ */ s(v, {
|
|
171
174
|
size: "sm",
|
|
172
175
|
variant: "outline",
|
|
173
176
|
disabled: X,
|
|
174
|
-
onClick: () => Z(() =>
|
|
177
|
+
onClick: () => Z(() => W({ variables: {
|
|
175
178
|
id: Y.id,
|
|
176
179
|
input: {
|
|
177
180
|
status: e,
|
|
@@ -180,144 +183,144 @@ function O() {
|
|
|
180
183
|
} }), "The status could not be changed."),
|
|
181
184
|
children: e === "PUBLISHED" ? "Publish" : e === "ARCHIVED" ? "Archive" : "Back to draft"
|
|
182
185
|
}, e)),
|
|
183
|
-
/* @__PURE__ */
|
|
186
|
+
/* @__PURE__ */ s(v, {
|
|
184
187
|
size: "sm",
|
|
185
|
-
onClick:
|
|
188
|
+
onClick: ke,
|
|
186
189
|
"data-testid": "doc-edit",
|
|
187
190
|
children: "Edit"
|
|
188
191
|
}),
|
|
189
|
-
/* @__PURE__ */ l
|
|
192
|
+
/* @__PURE__ */ c(l, { children: [/* @__PURE__ */ s(_, {
|
|
190
193
|
asChild: !0,
|
|
191
|
-
children: /* @__PURE__ */
|
|
194
|
+
children: /* @__PURE__ */ s(v, {
|
|
192
195
|
size: "sm",
|
|
193
196
|
variant: "outline",
|
|
194
197
|
disabled: X,
|
|
195
198
|
children: "Delete"
|
|
196
199
|
})
|
|
197
|
-
}), /* @__PURE__ */
|
|
200
|
+
}), /* @__PURE__ */ c(f, { children: [/* @__PURE__ */ c(h, { children: [/* @__PURE__ */ c(g, { children: [
|
|
198
201
|
"Delete “",
|
|
199
202
|
Y.title,
|
|
200
203
|
"”?"
|
|
201
|
-
] }), /* @__PURE__ */
|
|
204
|
+
] }), /* @__PURE__ */ c(p, { children: [
|
|
202
205
|
"The doc and its history are removed for everyone, and it is unlinked from",
|
|
203
206
|
" ",
|
|
204
207
|
Y.linkedWorkItems.length,
|
|
205
208
|
" work item",
|
|
206
209
|
Y.linkedWorkItems.length === 1 ? "" : "s",
|
|
207
210
|
"."
|
|
208
|
-
] })] }), /* @__PURE__ */
|
|
211
|
+
] })] }), /* @__PURE__ */ c(m, { children: [/* @__PURE__ */ s(d, { children: "Keep it" }), /* @__PURE__ */ s(u, {
|
|
209
212
|
className: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
210
213
|
onClick: async () => {
|
|
211
|
-
await Z(() =>
|
|
214
|
+
await Z(() => we({ variables: { id: Y.id } }), "The doc could not be deleted.") && O("/docs/docs-page");
|
|
212
215
|
},
|
|
213
216
|
children: "Delete"
|
|
214
217
|
})] })] })] })
|
|
215
218
|
]
|
|
216
219
|
})]
|
|
217
220
|
}),
|
|
218
|
-
|
|
221
|
+
L && /* @__PURE__ */ s("p", {
|
|
219
222
|
role: "alert",
|
|
220
223
|
className: "text-sm text-destructive",
|
|
221
224
|
"data-testid": "doc-error",
|
|
222
|
-
children:
|
|
225
|
+
children: L
|
|
223
226
|
}),
|
|
224
|
-
|
|
227
|
+
k && B !== Y.version && /* @__PURE__ */ c("p", {
|
|
225
228
|
className: "text-sm text-status-warning-text",
|
|
226
229
|
"data-testid": "doc-moved-on",
|
|
227
230
|
children: [
|
|
228
231
|
"Someone saved version ",
|
|
229
232
|
Y.version,
|
|
230
233
|
" after you started editing version ",
|
|
231
|
-
|
|
234
|
+
B,
|
|
232
235
|
". Your text is kept below; copy what you need, then discard and edit the latest."
|
|
233
236
|
]
|
|
234
237
|
}),
|
|
235
|
-
|
|
238
|
+
k ? /* @__PURE__ */ s(y, { children: /* @__PURE__ */ c(b, {
|
|
236
239
|
className: "space-y-3 pt-6",
|
|
237
240
|
children: [
|
|
238
|
-
/* @__PURE__ */
|
|
241
|
+
/* @__PURE__ */ s(C, {
|
|
239
242
|
"aria-label": "Doc title",
|
|
240
|
-
value:
|
|
241
|
-
onChange: (e) =>
|
|
243
|
+
value: j,
|
|
244
|
+
onChange: (e) => M(e.target.value)
|
|
242
245
|
}),
|
|
243
|
-
/* @__PURE__ */
|
|
244
|
-
value:
|
|
245
|
-
onChange:
|
|
246
|
+
/* @__PURE__ */ s(ne, {
|
|
247
|
+
value: N,
|
|
248
|
+
onChange: P,
|
|
246
249
|
minHeight: 240
|
|
247
250
|
}),
|
|
248
|
-
/* @__PURE__ */
|
|
251
|
+
/* @__PURE__ */ s(C, {
|
|
249
252
|
"aria-label": "Change note",
|
|
250
253
|
placeholder: "What changed? (optional, shown in the history)",
|
|
251
|
-
value:
|
|
252
|
-
onChange: (e) =>
|
|
254
|
+
value: F,
|
|
255
|
+
onChange: (e) => I(e.target.value)
|
|
253
256
|
}),
|
|
254
|
-
/* @__PURE__ */
|
|
257
|
+
/* @__PURE__ */ c("div", {
|
|
255
258
|
className: "flex justify-end gap-2",
|
|
256
|
-
children: [/* @__PURE__ */
|
|
259
|
+
children: [/* @__PURE__ */ s(v, {
|
|
257
260
|
size: "sm",
|
|
258
261
|
variant: "ghost",
|
|
259
262
|
onClick: () => {
|
|
260
|
-
|
|
263
|
+
A(!1), R(null);
|
|
261
264
|
},
|
|
262
|
-
children:
|
|
263
|
-
}), /* @__PURE__ */
|
|
265
|
+
children: B === Y.version ? "Cancel" : "Discard my edits"
|
|
266
|
+
}), /* @__PURE__ */ s(v, {
|
|
264
267
|
size: "sm",
|
|
265
|
-
onClick:
|
|
266
|
-
disabled:
|
|
268
|
+
onClick: Ae,
|
|
269
|
+
disabled: G.loading || B !== Y.version,
|
|
267
270
|
"data-testid": "doc-save",
|
|
268
|
-
children:
|
|
271
|
+
children: G.loading ? "Saving…" : "Save new version"
|
|
269
272
|
})]
|
|
270
273
|
})
|
|
271
274
|
]
|
|
272
|
-
}) }) : /* @__PURE__ */
|
|
275
|
+
}) }) : /* @__PURE__ */ s(y, { children: /* @__PURE__ */ s(b, {
|
|
273
276
|
className: "prose prose-sm max-w-none pt-6 dark:prose-invert",
|
|
274
|
-
children: Y.content.trim() ? /* @__PURE__ */
|
|
277
|
+
children: Y.content.trim() ? /* @__PURE__ */ s(w, { children: Y.content }) : /* @__PURE__ */ s("p", {
|
|
275
278
|
className: "text-sm text-muted-foreground",
|
|
276
279
|
children: "This doc is empty."
|
|
277
280
|
})
|
|
278
281
|
}) }),
|
|
279
|
-
/* @__PURE__ */
|
|
282
|
+
/* @__PURE__ */ c("div", {
|
|
280
283
|
className: "grid grid-cols-1 gap-6 lg:grid-cols-2",
|
|
281
|
-
children: [/* @__PURE__ */
|
|
284
|
+
children: [/* @__PURE__ */ c(y, {
|
|
282
285
|
"data-testid": "doc-history",
|
|
283
|
-
children: [/* @__PURE__ */
|
|
286
|
+
children: [/* @__PURE__ */ s(x, { children: /* @__PURE__ */ c(S, {
|
|
284
287
|
className: "flex items-center gap-2",
|
|
285
288
|
children: [
|
|
286
|
-
/* @__PURE__ */
|
|
289
|
+
/* @__PURE__ */ s(oe, { className: "h-4 w-4" }),
|
|
287
290
|
" History (",
|
|
288
291
|
Q.length,
|
|
289
292
|
")"
|
|
290
293
|
]
|
|
291
|
-
}) }), /* @__PURE__ */
|
|
294
|
+
}) }), /* @__PURE__ */ c(b, {
|
|
292
295
|
className: "space-y-2",
|
|
293
|
-
children: [/* @__PURE__ */
|
|
296
|
+
children: [/* @__PURE__ */ s("ol", {
|
|
294
297
|
className: "space-y-2",
|
|
295
298
|
children: Q.map((e) => {
|
|
296
299
|
let n = e.version === Y.version;
|
|
297
|
-
return /* @__PURE__ */
|
|
300
|
+
return /* @__PURE__ */ c("li", {
|
|
298
301
|
className: "space-y-1 rounded-md border p-2",
|
|
299
302
|
"data-testid": "doc-revision",
|
|
300
|
-
children: [/* @__PURE__ */
|
|
303
|
+
children: [/* @__PURE__ */ c("div", {
|
|
301
304
|
className: "flex flex-wrap items-center justify-between gap-2",
|
|
302
|
-
children: [/* @__PURE__ */
|
|
305
|
+
children: [/* @__PURE__ */ c("span", {
|
|
303
306
|
className: "text-sm font-medium",
|
|
304
307
|
children: [
|
|
305
308
|
"Version ",
|
|
306
309
|
e.version,
|
|
307
310
|
n ? " (current)" : ""
|
|
308
311
|
]
|
|
309
|
-
}), /* @__PURE__ */
|
|
312
|
+
}), /* @__PURE__ */ c("span", {
|
|
310
313
|
className: "flex gap-1",
|
|
311
|
-
children: [/* @__PURE__ */
|
|
314
|
+
children: [/* @__PURE__ */ s(v, {
|
|
312
315
|
size: "sm",
|
|
313
316
|
variant: "ghost",
|
|
314
317
|
className: "h-7 text-xs",
|
|
315
|
-
"aria-expanded":
|
|
316
|
-
onClick: () =>
|
|
317
|
-
children:
|
|
318
|
-
}), !n && !
|
|
318
|
+
"aria-expanded": z === e.version,
|
|
319
|
+
onClick: () => ve(z === e.version ? null : e.version),
|
|
320
|
+
children: z === e.version ? "Hide" : "View"
|
|
321
|
+
}), !n && !k && /* @__PURE__ */ c(l, { children: [/* @__PURE__ */ s(_, {
|
|
319
322
|
asChild: !0,
|
|
320
|
-
children: /* @__PURE__ */
|
|
323
|
+
children: /* @__PURE__ */ s(v, {
|
|
321
324
|
size: "sm",
|
|
322
325
|
variant: "outline",
|
|
323
326
|
className: "h-7 text-xs",
|
|
@@ -325,18 +328,18 @@ function O() {
|
|
|
325
328
|
"data-testid": "doc-restore",
|
|
326
329
|
children: "Restore"
|
|
327
330
|
})
|
|
328
|
-
}), /* @__PURE__ */
|
|
331
|
+
}), /* @__PURE__ */ c(f, { children: [/* @__PURE__ */ c(h, { children: [/* @__PURE__ */ c(g, { children: [
|
|
329
332
|
"Restore version ",
|
|
330
333
|
e.version,
|
|
331
334
|
"?"
|
|
332
|
-
] }), /* @__PURE__ */
|
|
335
|
+
] }), /* @__PURE__ */ c(p, { children: [
|
|
333
336
|
"Its title and text become version ",
|
|
334
337
|
Y.version + 1,
|
|
335
338
|
". Nothing is deleted: version ",
|
|
336
339
|
Y.version,
|
|
337
340
|
" stays in the history."
|
|
338
|
-
] })] }), /* @__PURE__ */
|
|
339
|
-
onClick: () => Z(() =>
|
|
341
|
+
] })] }), /* @__PURE__ */ c(m, { children: [/* @__PURE__ */ s(d, { children: "Cancel" }), /* @__PURE__ */ s(u, {
|
|
342
|
+
onClick: () => Z(() => Se({ variables: {
|
|
340
343
|
id: Y.id,
|
|
341
344
|
toVersion: e.version,
|
|
342
345
|
expectedVersion: Y.version
|
|
@@ -344,21 +347,21 @@ function O() {
|
|
|
344
347
|
children: "Restore"
|
|
345
348
|
})] })] })] })]
|
|
346
349
|
})]
|
|
347
|
-
}), /* @__PURE__ */
|
|
350
|
+
}), /* @__PURE__ */ c("p", {
|
|
348
351
|
className: "text-xs text-muted-foreground",
|
|
349
352
|
children: [
|
|
350
|
-
|
|
353
|
+
E(e.createdAt),
|
|
351
354
|
" · ",
|
|
352
|
-
/* @__PURE__ */
|
|
355
|
+
/* @__PURE__ */ s(t, { id: e.createdBy }),
|
|
353
356
|
e.changeNote ? ` · ${e.changeNote}` : ""
|
|
354
357
|
]
|
|
355
358
|
})]
|
|
356
359
|
}, e.id);
|
|
357
360
|
})
|
|
358
|
-
}), $ && /* @__PURE__ */
|
|
361
|
+
}), $ && /* @__PURE__ */ c("div", {
|
|
359
362
|
className: "space-y-1 rounded-md border bg-muted/40 p-3",
|
|
360
363
|
"data-testid": "doc-revision-view",
|
|
361
|
-
children: [/* @__PURE__ */
|
|
364
|
+
children: [/* @__PURE__ */ c("p", {
|
|
362
365
|
className: "text-sm font-medium",
|
|
363
366
|
children: [
|
|
364
367
|
"Version ",
|
|
@@ -366,74 +369,74 @@ function O() {
|
|
|
366
369
|
": ",
|
|
367
370
|
$.title
|
|
368
371
|
]
|
|
369
|
-
}), /* @__PURE__ */
|
|
372
|
+
}), /* @__PURE__ */ s("div", {
|
|
370
373
|
className: "prose prose-sm max-w-none dark:prose-invert",
|
|
371
|
-
children: /* @__PURE__ */
|
|
374
|
+
children: /* @__PURE__ */ s(w, { children: $.content })
|
|
372
375
|
})]
|
|
373
376
|
})]
|
|
374
377
|
})]
|
|
375
|
-
}), /* @__PURE__ */
|
|
378
|
+
}), /* @__PURE__ */ c(y, {
|
|
376
379
|
"data-testid": "doc-linked-items",
|
|
377
|
-
children: [/* @__PURE__ */
|
|
380
|
+
children: [/* @__PURE__ */ s(x, { children: /* @__PURE__ */ c(S, {
|
|
378
381
|
className: "flex items-center gap-2",
|
|
379
382
|
children: [
|
|
380
|
-
/* @__PURE__ */
|
|
383
|
+
/* @__PURE__ */ s(i, { className: "h-4 w-4" }),
|
|
381
384
|
" Linked work items (",
|
|
382
385
|
Y.linkedWorkItems.length,
|
|
383
386
|
")"
|
|
384
387
|
]
|
|
385
|
-
}) }), /* @__PURE__ */
|
|
388
|
+
}) }), /* @__PURE__ */ c(b, {
|
|
386
389
|
className: "space-y-2",
|
|
387
390
|
children: [
|
|
388
|
-
Y.linkedWorkItems.length === 0 && /* @__PURE__ */
|
|
391
|
+
Y.linkedWorkItems.length === 0 && /* @__PURE__ */ s("p", {
|
|
389
392
|
className: "text-sm text-muted-foreground",
|
|
390
393
|
children: "Not linked to any work item yet. Pick one below, or use “Link existing doc” on the task."
|
|
391
394
|
}),
|
|
392
|
-
Y.linkedWorkItems.map((e) => /* @__PURE__ */
|
|
395
|
+
Y.linkedWorkItems.map((e) => /* @__PURE__ */ c("div", {
|
|
393
396
|
className: "flex items-center justify-between gap-2 rounded-md border p-2",
|
|
394
|
-
children: [/* @__PURE__ */
|
|
397
|
+
children: [/* @__PURE__ */ c("button", {
|
|
395
398
|
type: "button",
|
|
396
399
|
className: "min-w-0 truncate text-left text-sm hover:underline",
|
|
397
|
-
onClick: () =>
|
|
400
|
+
onClick: () => O(`/tasks/task-detail-page?taskId=${encodeURIComponent(e.id)}`),
|
|
398
401
|
children: [
|
|
399
|
-
/* @__PURE__ */
|
|
402
|
+
/* @__PURE__ */ s("span", {
|
|
400
403
|
className: "text-muted-foreground",
|
|
401
404
|
children: e.key
|
|
402
405
|
}),
|
|
403
406
|
" ",
|
|
404
407
|
e.title
|
|
405
408
|
]
|
|
406
|
-
}), /* @__PURE__ */
|
|
409
|
+
}), /* @__PURE__ */ s(v, {
|
|
407
410
|
size: "icon",
|
|
408
411
|
variant: "ghost",
|
|
409
|
-
disabled:
|
|
412
|
+
disabled: De.loading,
|
|
410
413
|
"aria-label": `Unlink ${e.title}`,
|
|
411
|
-
onClick: () => Z(() =>
|
|
414
|
+
onClick: () => Z(() => Ee({ variables: {
|
|
412
415
|
docId: Y.id,
|
|
413
416
|
workItemId: e.id
|
|
414
417
|
} }), "The work item could not be unlinked."),
|
|
415
|
-
children: /* @__PURE__ */
|
|
418
|
+
children: /* @__PURE__ */ s(se, { className: "h-4 w-4" })
|
|
416
419
|
})]
|
|
417
420
|
}, e.id)),
|
|
418
|
-
/* @__PURE__ */
|
|
421
|
+
/* @__PURE__ */ c("div", {
|
|
419
422
|
className: "space-y-2 pt-2",
|
|
420
423
|
"data-testid": "doc-link-work-item",
|
|
421
|
-
children: [/* @__PURE__ */
|
|
424
|
+
children: [/* @__PURE__ */ s(te, {
|
|
422
425
|
id: "doc-link-work-item-select",
|
|
423
426
|
value: q,
|
|
424
427
|
onChange: J,
|
|
425
428
|
exclude: Y.linkedWorkItems.map((e) => e.id)
|
|
426
|
-
}), /* @__PURE__ */
|
|
429
|
+
}), /* @__PURE__ */ c(v, {
|
|
427
430
|
size: "sm",
|
|
428
431
|
variant: "outline",
|
|
429
|
-
disabled: !q ||
|
|
432
|
+
disabled: !q || Oe.loading,
|
|
430
433
|
onClick: async () => {
|
|
431
|
-
await Z(() =>
|
|
434
|
+
await Z(() => K({ variables: {
|
|
432
435
|
docId: Y.id,
|
|
433
436
|
workItemId: q
|
|
434
437
|
} }), "The work item could not be linked.") && J("");
|
|
435
438
|
},
|
|
436
|
-
children: [/* @__PURE__ */
|
|
439
|
+
children: [/* @__PURE__ */ s(i, { className: "mr-1 h-4 w-4" }), "Link work item"]
|
|
437
440
|
})]
|
|
438
441
|
})
|
|
439
442
|
]
|
|
@@ -444,6 +447,6 @@ function O() {
|
|
|
444
447
|
});
|
|
445
448
|
}
|
|
446
449
|
//#endregion
|
|
447
|
-
export {
|
|
450
|
+
export { D as DocsDocDetailPagePage };
|
|
448
451
|
|
|
449
452
|
//# sourceMappingURL=DocsDocDetailPagePage.js.map
|