diff --git a/webapp/packages/core-blocks/src/Expand/Expandable.tsx b/webapp/packages/core-blocks/src/Expand/Expandable.tsx index 90f86f3268..d4ec6489b0 100644 --- a/webapp/packages/core-blocks/src/Expand/Expandable.tsx +++ b/webapp/packages/core-blocks/src/Expand/Expandable.tsx @@ -9,27 +9,28 @@ import { observer } from 'mobx-react-lite'; import { type ReactNode } from 'react'; import { IconOrImage } from '../IconOrImage.js'; -import { DisclosureProvider, Disclosure, DisclosureContent } from '@dbeaver/ui-kit'; +import { DisclosureProvider, Disclosure, DisclosureContent, clsx } from '@dbeaver/ui-kit'; import './Expandable.css'; interface Props { - label: string; + label: string | ReactNode; children: ReactNode; defaultExpanded?: boolean; disabled?: boolean; + className?: string; } -export const Expandable = observer(function Expandable({ label, defaultExpanded, disabled, children }: Props) { +export const Expandable = observer(function Expandable({ label, defaultExpanded, disabled, children, className }: Props) { return (
-

{label}

+ {typeof label === 'string' ?

{label}

: label}
-
{children}
+
{children}
diff --git a/webapp/packages/core-connections/src/ConnectionFolderEventHandler.ts b/webapp/packages/core-connections/src/ConnectionFolderEventHandler.ts index 8b01f34d54..3418dbd6f6 100644 --- a/webapp/packages/core-connections/src/ConnectionFolderEventHandler.ts +++ b/webapp/packages/core-connections/src/ConnectionFolderEventHandler.ts @@ -12,7 +12,7 @@ import type { CbDatasourceFolderEvent as IConnectionFolderEvent } from '@cloudbe export type { IConnectionFolderEvent }; @injectable(() => [SessionEventSource]) -export class ConnectionFolderEventHandler extends TopicEventHandler { +export class ConnectionFolderEventHandler extends TopicEventHandler { constructor(sessionEventSource: SessionEventSource) { super(SessionEventTopic.CbDatasourceFolder, sessionEventSource); } diff --git a/webapp/packages/core-connections/src/ConnectionInfoEventHandler.ts b/webapp/packages/core-connections/src/ConnectionInfoEventHandler.ts index 37ff2fe6fc..da105d8ec9 100644 --- a/webapp/packages/core-connections/src/ConnectionInfoEventHandler.ts +++ b/webapp/packages/core-connections/src/ConnectionInfoEventHandler.ts @@ -12,7 +12,7 @@ import type { CbDatasourceEvent as IConnectionInfoEvent } from '@cloudbeaver/cor export type { IConnectionInfoEvent }; @injectable(() => [SessionEventSource]) -export class ConnectionInfoEventHandler extends TopicEventHandler { +export class ConnectionInfoEventHandler extends TopicEventHandler { constructor(sessionEventSource: SessionEventSource) { super(SessionEventTopic.CbDatasource, sessionEventSource); } diff --git a/webapp/packages/core-connections/src/ConnectionStateEventHandler.ts b/webapp/packages/core-connections/src/ConnectionStateEventHandler.ts index 7afdf3070f..103c5ef602 100644 --- a/webapp/packages/core-connections/src/ConnectionStateEventHandler.ts +++ b/webapp/packages/core-connections/src/ConnectionStateEventHandler.ts @@ -15,7 +15,7 @@ export type IWsDataSourceConnectEvent = WsDataSourceConnectEvent; type ConnectionStateEvent = IWsDataSourceConnectEvent | IWsDataSourceDisconnectEvent; @injectable(() => [SessionEventSource]) -export class ConnectionStateEventHandler extends TopicEventHandler { +export class ConnectionStateEventHandler extends TopicEventHandler { constructor(sessionEventSource: SessionEventSource) { super(SessionEventTopic.CbDatasourceConnection, sessionEventSource); } diff --git a/webapp/packages/core-projects/src/ProjectInfoEventHandler.ts b/webapp/packages/core-projects/src/ProjectInfoEventHandler.ts index 58bdd1d030..6aa14135e7 100644 --- a/webapp/packages/core-projects/src/ProjectInfoEventHandler.ts +++ b/webapp/packages/core-projects/src/ProjectInfoEventHandler.ts @@ -20,7 +20,7 @@ import { isArraysEqual } from '@cloudbeaver/core-utils'; export type { IProjectInfoEvent }; @injectable(() => [SessionEventSource]) -export class ProjectInfoEventHandler extends TopicEventHandler { +export class ProjectInfoEventHandler extends TopicEventHandler { private lastActiveProjects: string[]; constructor(sessionEventSource: SessionEventSource) { diff --git a/webapp/packages/core-resource-manager/src/ResourceManagerEventHandler.ts b/webapp/packages/core-resource-manager/src/ResourceManagerEventHandler.ts index 54fb2dabf3..11fb293a51 100644 --- a/webapp/packages/core-resource-manager/src/ResourceManagerEventHandler.ts +++ b/webapp/packages/core-resource-manager/src/ResourceManagerEventHandler.ts @@ -10,7 +10,7 @@ import { type ISessionEvent, type SessionEventId, SessionEventSource, SessionEve import type { CbrmEvent as IResourceManagerEvent } from '@cloudbeaver/core-sdk'; @injectable(() => [SessionEventSource]) -export class ResourceManagerEventHandler extends TopicEventHandler { +export class ResourceManagerEventHandler extends TopicEventHandler { constructor(sessionEventSource: SessionEventSource) { super(SessionEventTopic.CbScripts, sessionEventSource); } diff --git a/webapp/packages/core-root/src/AsyncTask/AsyncTaskInfoEventHandler.ts b/webapp/packages/core-root/src/AsyncTask/AsyncTaskInfoEventHandler.ts index a7a9dc1720..7c1ce6b223 100644 --- a/webapp/packages/core-root/src/AsyncTask/AsyncTaskInfoEventHandler.ts +++ b/webapp/packages/core-root/src/AsyncTask/AsyncTaskInfoEventHandler.ts @@ -12,7 +12,7 @@ import { TopicEventHandler } from '../ServerEventEmitter/TopicEventHandler.js'; import { type ISessionEvent, type SessionEventId, SessionEventSource, SessionEventTopic } from '../SessionEventSource.js'; @injectable(() => [SessionEventSource]) -export class AsyncTaskInfoEventHandler extends TopicEventHandler { +export class AsyncTaskInfoEventHandler extends TopicEventHandler { constructor(sessionEventSource: SessionEventSource) { super(SessionEventTopic.CbSessionTask, sessionEventSource); } diff --git a/webapp/packages/core-root/src/SessionEventSource.ts b/webapp/packages/core-root/src/SessionEventSource.ts index 439e6a9a7c..b1b50f6a9d 100644 --- a/webapp/packages/core-root/src/SessionEventSource.ts +++ b/webapp/packages/core-root/src/SessionEventSource.ts @@ -47,22 +47,22 @@ export { ServerEventId, SessionEventTopic, ClientEventId }; export type SessionEventId = ServerEventId | ClientEventId | string; -export interface ISessionEvent extends IBaseServerEvent { +export interface ISessionEvent extends IBaseServerEvent { id: SessionEventId; - topicId?: SessionEventTopic; + topicId?: string; [key: string]: any; } export interface ITopicSubEvent extends ISessionEvent { id: ClientEventId.CbClientTopicSubscribe | ClientEventId.CbClientTopicUnsubscribe; - topicId: SessionEventTopic; + topicId: string; } const RETRY_INTERVALS = [1000, 5000, 30000, 60000]; // 1s, 5s, 30s, 1m const MAX_RETRY_ATTEMPTS = 4; @injectable(() => [SessionExpireService, EnvironmentService]) -export class SessionEventSource implements IServerEventEmitter { +export class SessionEventSource implements IServerEventEmitter { readonly eventsSubject: Observable; readonly onActivate: IExecutor; readonly onInit: ISyncExecutor; diff --git a/webapp/packages/core-root/src/SessionInfoEventHandler.ts b/webapp/packages/core-root/src/SessionInfoEventHandler.ts index f1c3e0454a..620397d030 100644 --- a/webapp/packages/core-root/src/SessionInfoEventHandler.ts +++ b/webapp/packages/core-root/src/SessionInfoEventHandler.ts @@ -14,7 +14,7 @@ import { ClientEventId, type ISessionEvent, type SessionEventId, SessionEventSou export { type ISessionStateEvent }; @injectable(() => [SessionEventSource]) -export class SessionInfoEventHandler extends TopicEventHandler { +export class SessionInfoEventHandler extends TopicEventHandler { constructor(sessionEventSource: SessionEventSource) { super(SessionEventTopic.CbSession, sessionEventSource); } diff --git a/webapp/packages/core-root/src/SessionPermissionEventHandler.ts b/webapp/packages/core-root/src/SessionPermissionEventHandler.ts index 40e07ce2e7..61ff5487fe 100644 --- a/webapp/packages/core-root/src/SessionPermissionEventHandler.ts +++ b/webapp/packages/core-root/src/SessionPermissionEventHandler.ts @@ -14,7 +14,7 @@ import { type ISessionEvent, type SessionEventId, SessionEventSource, SessionEve export type { ISessionPermissionEvent }; @injectable(() => [SessionEventSource]) -export class SessionPermissionEventHandler extends TopicEventHandler { +export class SessionPermissionEventHandler extends TopicEventHandler { constructor(sessionEventSource: SessionEventSource) { super(SessionEventTopic.CbSubjectPermissions, sessionEventSource); } diff --git a/webapp/packages/core-server-notifications/src/ServerNotificationsEventHandler.ts b/webapp/packages/core-server-notifications/src/ServerNotificationsEventHandler.ts index 8c8b97e705..2a36c6b2b7 100644 --- a/webapp/packages/core-server-notifications/src/ServerNotificationsEventHandler.ts +++ b/webapp/packages/core-server-notifications/src/ServerNotificationsEventHandler.ts @@ -30,12 +30,7 @@ interface ServerNotificationEventMapped extends IBaseServerEvent [SessionEventSource]) -export class ServerNotificationsEventHandler extends TopicEventHandler< - ServerNotificationEventMapped, - ISessionEvent, - SessionEventId, - SessionEventTopic -> { +export class ServerNotificationsEventHandler extends TopicEventHandler { constructor(sessionEventSource: SessionEventSource) { super(CbEventTopic.CbNotification, sessionEventSource); } diff --git a/webapp/packages/core-session-actions/src/SessionActionsEventHandler.ts b/webapp/packages/core-session-actions/src/SessionActionsEventHandler.ts index 0d897305d8..6fa90dec7a 100644 --- a/webapp/packages/core-session-actions/src/SessionActionsEventHandler.ts +++ b/webapp/packages/core-session-actions/src/SessionActionsEventHandler.ts @@ -6,11 +6,11 @@ * you may not use this file except in compliance with the License. */ import { injectable } from '@cloudbeaver/core-di'; -import { type ISessionEvent, type SessionEventId, SessionEventSource, SessionEventTopic, TopicEventHandler } from '@cloudbeaver/core-root'; +import { type ISessionEvent, type SessionEventId, SessionEventSource, TopicEventHandler } from '@cloudbeaver/core-root'; import { CbEventTopic, type WsOpenUrlEvent } from '@cloudbeaver/core-sdk'; @injectable(() => [SessionEventSource]) -export class SessionActionsEventHandler extends TopicEventHandler { +export class SessionActionsEventHandler extends TopicEventHandler { constructor(sessionEventSource: SessionEventSource) { super(CbEventTopic.CbSessionAction, sessionEventSource); } diff --git a/webapp/packages/plugin-datasource-transaction-manager/src/TransactionLog/TransactionLogCountEventHandler.ts b/webapp/packages/plugin-datasource-transaction-manager/src/TransactionLog/TransactionLogCountEventHandler.ts index 790a7aef83..844830b578 100644 --- a/webapp/packages/plugin-datasource-transaction-manager/src/TransactionLog/TransactionLogCountEventHandler.ts +++ b/webapp/packages/plugin-datasource-transaction-manager/src/TransactionLog/TransactionLogCountEventHandler.ts @@ -14,7 +14,7 @@ export type IWsTransactionCountEvent = WsTransactionalCountEvent; type TransactionCountEvent = IWsTransactionCountEvent; @injectable(() => [SessionEventSource]) -export class TransactionLogCountEventHandler extends TopicEventHandler { +export class TransactionLogCountEventHandler extends TopicEventHandler { constructor(sessionEventSource: SessionEventSource) { super(SessionEventTopic.CbTransaction, sessionEventSource); }