diff --git a/plugins/controlled-documents-resources/src/components/document/popups/AddCommentPopup.svelte b/plugins/controlled-documents-resources/src/components/document/popups/AddCommentPopup.svelte index 034f56241d..f8321ce8a6 100644 --- a/plugins/controlled-documents-resources/src/components/document/popups/AddCommentPopup.svelte +++ b/plugins/controlled-documents-resources/src/components/document/popups/AddCommentPopup.svelte @@ -4,10 +4,12 @@ import chunter, { type ChatMessage } from '@hcengineering/chunter' import { Ref, generateId } from '@hcengineering/core' import { ReferenceInput } from '@hcengineering/text-editor-resources' + import { popupstore as popups } from '@hcengineering/ui' import { addDocumentCommentFx } from '../../../stores/editors/document' export let nodeId: string | undefined + export let popupId: string | undefined const dispatch = createEventDispatcher() @@ -22,7 +24,8 @@ function handleClick (event: MouseEvent): void { if (event.target instanceof Node) { - if (popup !== undefined && !popup.contains(event.target)) { + const top = $popups.length > 0 && $popups[$popups.length - 1].id === popupId + if (top && popup !== undefined && !popup.contains(event.target)) { event.preventDefault() event.stopPropagation() dispatch('close', undefined) diff --git a/plugins/controlled-documents-resources/src/plugin.ts b/plugins/controlled-documents-resources/src/plugin.ts index 548550e46f..aa483141f0 100644 --- a/plugins/controlled-documents-resources/src/plugin.ts +++ b/plugins/controlled-documents-resources/src/plugin.ts @@ -44,6 +44,9 @@ export default mergeIds(documentsId, documents, { CreateDocumentsSpace: '' as AnyComponent, CreateDocumentSpaceType: '' as AnyComponent }, + ids: { + AddCommentPopup: '' as Resource + }, string: { ID: '' as IntlString, ValidationWorkflow: '' as IntlString, diff --git a/plugins/controlled-documents-resources/src/stores/editors/document/documentComments.ts b/plugins/controlled-documents-resources/src/stores/editors/document/documentComments.ts index bef590700b..65e761ee8f 100644 --- a/plugins/controlled-documents-resources/src/stores/editors/document/documentComments.ts +++ b/plugins/controlled-documents-resources/src/stores/editors/document/documentComments.ts @@ -16,7 +16,7 @@ import { type Attachment } from '@hcengineering/attachment' import { type Ref, generateId } from '@hcengineering/core' import { getClient } from '@hcengineering/presentation' import { type CompAndProps, type PopupAlignment, popupstore, showPopup } from '@hcengineering/ui' -import documents, { type Document, type DocumentComment } from '@hcengineering/controlled-documents' +import { type Document, type DocumentComment } from '@hcengineering/controlled-documents' import { isDocumentCommentAttachedTo } from '../../../utils' import { type DocumentCommentsFilter, @@ -36,6 +36,8 @@ import { controlledDocumentOpened } from './actions' +import documents from '../../../plugin' + export const $areDocumentCommentPopupsOpened = createStore(false).on( documentCommentPopupsOpened, (_, isOpened) => isOpened @@ -118,7 +120,10 @@ export const showDocumentCommentsPopupFx = createEffect( export const showAddCommentPopupFx = createEffect((payload: { element?: PopupAlignment, nodeId?: string | null }) => { showPopup( documents.component.AddCommentPopup, - payload, + { + ...payload, + popupId: documents.ids.AddCommentPopup + }, payload.element, (result) => { if (result === null || result === undefined) { @@ -129,7 +134,11 @@ export const showAddCommentPopupFx = createEffect((payload: { element?: PopupAli } }, undefined, - { category: DocumentCommentPopupCategory, overlay: true } + { + id: documents.ids.AddCommentPopup, + category: DocumentCommentPopupCategory, + overlay: true + } ) })