From d3a7759ef70db2ab54751e35cbb7edd4d9c0a6a9 Mon Sep 17 00:00:00 2001 From: Kristina Date: Thu, 3 Oct 2024 19:30:32 +0400 Subject: [PATCH] Sidebar attachments preview (#6797) Signed-off-by: Kristina Fefelova --- models/attachment/package.json | 3 +- models/attachment/src/index.ts | 20 ++++++ models/attachment/src/plugin.ts | 4 +- .../src/components/DownloadFileButton.svelte | 43 ++++++++++++ .../src/components/FilePreviewPopup.svelte | 64 +++++------------ .../src/components/FileTypeIcon.svelte | 42 ++++++++++++ packages/presentation/src/index.ts | 2 + packages/presentation/src/plugin.ts | 3 +- packages/ui/src/components/Breadcrumb.svelte | 8 ++- packages/ui/src/types.ts | 1 + plugins/attachment-assets/lang/en.json | 3 +- plugins/attachment-assets/lang/es.json | 3 +- plugins/attachment-assets/lang/fr.json | 3 +- plugins/attachment-assets/lang/pt.json | 3 +- plugins/attachment-assets/lang/ru.json | 3 +- plugins/attachment-assets/lang/zh.json | 3 +- plugins/attachment-resources/package.json | 3 +- .../src/components/AttachmentActions.svelte | 9 +++ .../src/components/AttachmentPresenter.svelte | 31 +++++---- .../src/components/AttachmentPreview.svelte | 4 +- .../src/components/PreviewPopupActions.svelte | 41 +++++++++++ .../src/components/PreviewWidget.svelte | 68 +++++++++++++++++++ plugins/attachment-resources/src/index.ts | 6 +- plugins/attachment-resources/src/utils.ts | 43 +++++++++++- plugins/attachment/package.json | 1 + plugins/attachment/src/index.ts | 7 +- plugins/view-assets/assets/icons.svg | 19 ++++++ plugins/view-assets/src/index.ts | 5 +- plugins/view/src/index.ts | 5 +- plugins/workbench-resources/src/index.ts | 5 +- plugins/workbench/src/index.ts | 4 ++ 31 files changed, 376 insertions(+), 83 deletions(-) create mode 100644 packages/presentation/src/components/DownloadFileButton.svelte create mode 100644 packages/presentation/src/components/FileTypeIcon.svelte create mode 100644 plugins/attachment-resources/src/components/PreviewPopupActions.svelte create mode 100644 plugins/attachment-resources/src/components/PreviewWidget.svelte diff --git a/models/attachment/package.json b/models/attachment/package.json index 7d94445a8d..ec30d84bfa 100644 --- a/models/attachment/package.json +++ b/models/attachment/package.json @@ -40,6 +40,7 @@ "@hcengineering/ui": "^0.6.15", "@hcengineering/view": "^0.6.13", "@hcengineering/model-presentation": "^0.6.0", - "@hcengineering/model-uploader": "^0.6.0" + "@hcengineering/model-uploader": "^0.6.0", + "@hcengineering/workbench": "^0.6.16" } } diff --git a/models/attachment/src/index.ts b/models/attachment/src/index.ts index fa062aeb06..f7bf8cf1a4 100644 --- a/models/attachment/src/index.ts +++ b/models/attachment/src/index.ts @@ -31,6 +31,8 @@ import { import core, { TAttachedDoc } from '@hcengineering/model-core' import preference, { TPreference } from '@hcengineering/model-preference' import view, { createAction } from '@hcengineering/model-view' +import workbench, { WidgetType } from '@hcengineering/workbench' +import presentation from '@hcengineering/model-presentation' import attachment from './plugin' @@ -97,6 +99,24 @@ export function createModel (builder: Builder): void { editor: attachment.component.Photos }) + builder.createDoc( + workbench.class.Widget, + core.space.Model, + { + label: attachment.string.Files, + type: WidgetType.Flexible, + icon: attachment.icon.Attachment, + component: attachment.component.PreviewWidget, + closeIfNoTabs: true + }, + attachment.ids.PreviewWidget + ) + + builder.createDoc(presentation.class.ComponentPointExtension, core.space.Model, { + extension: presentation.extension.FilePreviewPopupActions, + component: attachment.component.PreviewPopupActions + }) + builder.createDoc( activity.class.DocUpdateMessageViewlet, core.space.Model, diff --git a/models/attachment/src/plugin.ts b/models/attachment/src/plugin.ts index f62c50a8ab..d8bcdad4f9 100644 --- a/models/attachment/src/plugin.ts +++ b/models/attachment/src/plugin.ts @@ -24,7 +24,9 @@ import type { ActionCategory } from '@hcengineering/view' export default mergeIds(attachmentId, attachment, { component: { - AttachmentPresenter: '' as AnyComponent + AttachmentPresenter: '' as AnyComponent, + PreviewWidget: '' as AnyComponent, + PreviewPopupActions: '' as AnyComponent }, string: { AddAttachment: '' as IntlString, diff --git a/packages/presentation/src/components/DownloadFileButton.svelte b/packages/presentation/src/components/DownloadFileButton.svelte new file mode 100644 index 0000000000..9275126a08 --- /dev/null +++ b/packages/presentation/src/components/DownloadFileButton.svelte @@ -0,0 +1,43 @@ + + + +{#await srcRef then src} + {#if src !== ''} + +