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);
}