From 2b72d42956df801a910f7dba4b90887899f2de39 Mon Sep 17 00:00:00 2001 From: Ruslan Bakiev <572431+veikab@users.noreply.github.com> Date: Mon, 23 Feb 2026 11:22:05 +0700 Subject: [PATCH] refactor(frontend): split documents and review into workspace components --- .../components/workspace/CrmWorkspaceApp.vue | 227 ++++-------------- .../workspace/documents/CrmDocumentsPanel.vue | 133 ++++++++++ .../review/CrmChangeReviewOverlay.vue | 137 +++++++++++ 3 files changed, 315 insertions(+), 182 deletions(-) create mode 100644 frontend/app/components/workspace/documents/CrmDocumentsPanel.vue create mode 100644 frontend/app/components/workspace/review/CrmChangeReviewOverlay.vue diff --git a/frontend/app/components/workspace/CrmWorkspaceApp.vue b/frontend/app/components/workspace/CrmWorkspaceApp.vue index 7ffdaf9..3c38d5b 100644 --- a/frontend/app/components/workspace/CrmWorkspaceApp.vue +++ b/frontend/app/components/workspace/CrmWorkspaceApp.vue @@ -2,7 +2,9 @@ import { nextTick, onBeforeUnmount, onMounted } from "vue"; import CrmAuthLoading from "~~/app/components/workspace/auth/CrmAuthLoading.vue"; import CrmAuthLoginForm from "~~/app/components/workspace/auth/CrmAuthLoginForm.vue"; +import CrmDocumentsPanel from "~~/app/components/workspace/documents/CrmDocumentsPanel.vue"; import CrmWorkspaceTopbar from "~~/app/components/workspace/header/CrmWorkspaceTopbar.vue"; +import CrmChangeReviewOverlay from "~~/app/components/workspace/review/CrmChangeReviewOverlay.vue"; import meQuery from "~~/graphql/operations/me.graphql?raw"; import chatMessagesQuery from "~~/graphql/operations/chat-messages.graphql?raw"; import dashboardQuery from "~~/graphql/operations/dashboard.graphql?raw"; @@ -3318,6 +3320,11 @@ watchEffect(() => { const selectedDocument = computed(() => documents.value.find((item) => item.id === selectedDocumentId.value)); +function updateSelectedDocumentBody(value: string) { + if (!selectedDocument.value) return; + selectedDocument.value.body = value; +} + function openDocumentsTab(push = false) { selectedTab.value = "documents"; focusedCalendarEventId.value = ""; @@ -6323,189 +6330,45 @@ async function decideFeedCard(card: FeedCard, decision: "accepted" | "rejected") -
-
- - -
-
-
-

{{ selectedDocument.title }}

-

- {{ formatDocumentScope(selectedDocument.scope) }} · {{ selectedDocument.owner }} -

-

{{ selectedDocument.summary }}

-
- -
- -
-
- -
- No document selected. -
-
-
-
- -
-
-
-
-

- Review {{ activeChangeStepNumber }}/{{ activeChangeItems.length }} -

-

- {{ activeChangeItem?.title || "Change step" }} -

-
- -
- -
-

- {{ describeChangeEntity(activeChangeItem.entity) }} {{ describeChangeAction(activeChangeItem.action) }} -

- -
- -
-
- - -
-
- -
-
- - -
-

- Rollback marked: {{ selectedRollbackCount }} -

-
- -
- - - - -
-
-
+ diff --git a/frontend/app/components/workspace/documents/CrmDocumentsPanel.vue b/frontend/app/components/workspace/documents/CrmDocumentsPanel.vue new file mode 100644 index 0000000..c609511 --- /dev/null +++ b/frontend/app/components/workspace/documents/CrmDocumentsPanel.vue @@ -0,0 +1,133 @@ + + + diff --git a/frontend/app/components/workspace/review/CrmChangeReviewOverlay.vue b/frontend/app/components/workspace/review/CrmChangeReviewOverlay.vue new file mode 100644 index 0000000..3b65497 --- /dev/null +++ b/frontend/app/components/workspace/review/CrmChangeReviewOverlay.vue @@ -0,0 +1,137 @@ + + +