From bff473f3709f3ee210844bc4ad60915baa32c56b Mon Sep 17 00:00:00 2001 From: "s.teleshev" Date: Wed, 29 Nov 2023 19:48:38 +0100 Subject: [PATCH] CB-4266 DataSynchronizationNotification fixed size --- .../DataSynchronizationNotification.m.css | 14 ++++++ .../DataSynchronizationNotification.tsx | 45 +++++-------------- ...aSynchronizationNotificationMessages.m.css | 8 ++++ ...ataSynchronizationNotificationMessages.tsx | 17 +++++++ 4 files changed, 49 insertions(+), 35 deletions(-) create mode 100644 webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotification.m.css create mode 100644 webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotificationMessages.m.css create mode 100644 webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotificationMessages.tsx diff --git a/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotification.m.css b/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotification.m.css new file mode 100644 index 0000000000..4b4908173d --- /dev/null +++ b/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotification.m.css @@ -0,0 +1,14 @@ +.wrapper { + height: 176px; +} + +.message { + composes: theme-typography--caption from global; + opacity: 0.8; + overflow: auto; + max-height: 100px; + margin-top: 8px; + display: flex; + flex-direction: column; + gap: 8px; +} \ No newline at end of file diff --git a/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotification.tsx b/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotification.tsx index e0af00d675..681964f709 100644 --- a/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotification.tsx +++ b/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotification.tsx @@ -6,41 +6,20 @@ * you may not use this file except in compliance with the License. */ import { observer } from 'mobx-react-lite'; -import styled, { css } from 'reshadow'; -import { Button, SnackbarBody, SnackbarContent, SnackbarFooter, SnackbarStatus, SnackbarWrapper, useTranslate } from '@cloudbeaver/core-blocks'; +import { Button, SnackbarBody, SnackbarContent, SnackbarFooter, SnackbarStatus, SnackbarWrapper, s, useS, useTranslate } from '@cloudbeaver/core-blocks'; import { useService } from '@cloudbeaver/core-di'; import { ENotificationType, NotificationComponentProps } from '@cloudbeaver/core-events'; import { DataSynchronizationService } from '@cloudbeaver/core-root'; -import { groupBy, objectValues, uniq } from '@cloudbeaver/core-utils'; - -const styles = css` - message { - composes: theme-typography--caption from global; - opacity: 0.8; - overflow: auto; - max-height: 100px; - margin-top: 8px; - - display: flex; - flex-direction: column; - gap: 8px; - - & > div { - word-break: break-word; - white-space: pre-line; - } - - &:empty { - display: none; - } - } -`; +import { groupBy, objectValues } from '@cloudbeaver/core-utils'; +import { DataSynchronizationNotificationMessages } from './DataSynchronizationNotificationMessages'; +import styles from './DataSynchronizationNotification.m.css'; export const DataSynchronizationNotification = observer(function DataSynchronizationNotification({ notification }) { const dataSynchronizationService = useService(DataSynchronizationService); const translate = useTranslate(); const groups = objectValues(groupBy(Array.from(dataSynchronizationService.queue.values()), message => message.label)); + const style = useS(styles); function applyChanges() { dataSynchronizationService.resolveAll(true); @@ -51,18 +30,14 @@ export const DataSynchronizationNotification = observer + return ( + {notification.message && translate(notification.message)} - - {groups.map(messages => { - const message = uniq(messages.map(m => translate(m.message))).join('\n'); - - return
{message}
; - })} + + {groups.map((messages, index) => )}
@@ -74,6 +49,6 @@ export const DataSynchronizationNotification = observer
-
, + ); }); diff --git a/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotificationMessages.m.css b/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotificationMessages.m.css new file mode 100644 index 0000000000..3256e05b7a --- /dev/null +++ b/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotificationMessages.m.css @@ -0,0 +1,8 @@ +.messageContent { + word-break: break-word; + white-space: pre-line; +} + +.messageContent:empty { + display: none; +} \ No newline at end of file diff --git a/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotificationMessages.tsx b/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotificationMessages.tsx new file mode 100644 index 0000000000..2cb3375514 --- /dev/null +++ b/webapp/packages/plugin-root/src/DataSynchronization/DataSynchronizationNotificationMessages.tsx @@ -0,0 +1,17 @@ +import { s, useS, useTranslate } from '@cloudbeaver/core-blocks'; +import type { ISynchronizationMessage } from '@cloudbeaver/core-root'; +import { uniq } from '@cloudbeaver/core-utils'; +import { observer } from 'mobx-react-lite'; +import styles from './DataSynchronizationNotificationMessages.m.css'; + +type DataSynchronizationNotificationMessagesProps = { + messages: ISynchronizationMessage[]; +}; + +export const DataSynchronizationNotificationMessages = observer(function DataSynchronizationNotificationMessages({ messages }) { + const translate = useTranslate(); + const message = uniq(messages.map(m => translate(m.message))).join('\n'); + const style = useS(styles); + + return
{message}
; +}); \ No newline at end of file