Merge remote-tracking branch 'origin/devel' into devel

This commit is contained in:
Nikita Makarov
2021-12-13 12:59:10 +03:00
3 changed files with 12 additions and 4 deletions
@@ -10,6 +10,7 @@ import { PropsWithChildren, ReactNode, forwardRef } from 'react';
import styled from 'reshadow';
import { useStyles, ComponentStyle } from '@cloudbeaver/core-theming';
import type { MetadataMap } from '@cloudbeaver/core-utils';
import { TabsState } from '../TabsState';
@@ -17,6 +18,7 @@ type TabsBoxProps = PropsWithChildren<{
currentTabId: string;
tabs?: ReactNode;
tabIndex?: number;
localState?: MetadataMap<string, any>;
className?: string;
style?: ComponentStyle;
}>;
@@ -25,12 +27,13 @@ export const TabsBox = forwardRef<HTMLDivElement, TabsBoxProps>(function TabsBox
currentTabId,
tabs,
tabIndex,
localState,
children,
className,
style,
}, ref) {
return styled(useStyles(style))(
<TabsState currentTabId={currentTabId}>
<TabsState currentTabId={currentTabId} localState={localState}>
<tabs-box ref={ref} as="div" className={className} tabIndex={tabIndex}>
{tabs && <tabs>{tabs}</tabs>}
<tab-panels>
@@ -11,10 +11,11 @@ import { useEffect } from 'react';
import styled, { css } from 'reshadow';
import { ITab, NavNodeManagerService, NavNodeViewService, NavTreeResource } from '@cloudbeaver/core-app';
import { ITabData, Loader, TabList, TabPanel, TabsState, TextPlaceholder, useMapResource, verticalTabStyles } from '@cloudbeaver/core-blocks';
import { ITabData, Loader, TabList, TabPanel, TabsState, TextPlaceholder, useMapResource, useTabLocalState, verticalTabStyles } from '@cloudbeaver/core-blocks';
import { useService } from '@cloudbeaver/core-di';
import { useTranslate } from '@cloudbeaver/core-localization';
import { useStyles, composes } from '@cloudbeaver/core-theming';
import { MetadataMap } from '@cloudbeaver/core-utils';
import type { IObjectViewerTabState } from '../IObjectViewerTabState';
import { FolderPanelRenderer } from './FolderPanelRenderer';
@@ -73,6 +74,7 @@ export const ObjectFolders = observer<IProps>(function ObjectFolders({ tab }) {
const navNodeManagerService = useService(NavNodeManagerService);
const navNodeViewService = useService(NavNodeViewService);
const style = useStyles(verticalTabStyles, styles);
const innerTabState = useTabLocalState(() => new MetadataMap<string, any>());
const nodeId = tab.handlerState.objectId;
const parentId = tab.handlerState.parentId;
@@ -111,7 +113,7 @@ export const ObjectFolders = observer<IProps>(function ObjectFolders({ tab }) {
<Loader state={children} style={style}>{() => styled(style)(
<>
{folders.length > 0 ? (
<TabsState currentTabId={folderId} orientation='vertical' lazy onChange={openFolder}>
<TabsState currentTabId={folderId} orientation='vertical' localState={innerTabState} lazy onChange={openFolder}>
<vertical-tabs>
<TabList aria-label="Object folders">
{folders.map(folderId => (
@@ -12,11 +12,12 @@ import { useCallback } from 'react';
import styled, { css } from 'reshadow';
import { TabHandlerPanelComponent, NavTreeResource, NavNodeInfoResource } from '@cloudbeaver/core-app';
import { Loader, TabsBox, TabPanel, TextPlaceholder, Button, useMapResource, useObservableRef } from '@cloudbeaver/core-blocks';
import { Loader, TabsBox, TabPanel, TextPlaceholder, Button, useMapResource, useObservableRef, useTabLocalState } from '@cloudbeaver/core-blocks';
import { ConnectionInfoResource, ConnectionsManagerService } from '@cloudbeaver/core-connections';
import { useService } from '@cloudbeaver/core-di';
import { useTranslate } from '@cloudbeaver/core-localization';
import { useStyles, composes } from '@cloudbeaver/core-theming';
import { MetadataMap } from '@cloudbeaver/core-utils';
import type { IObjectViewerTabState } from './IObjectViewerTabState';
import { DBObjectPagePanel } from './ObjectPage/DBObjectPagePanel';
@@ -50,6 +51,7 @@ export const ObjectViewerPanel: TabHandlerPanelComponent<IObjectViewerTabState>
const dbObjectPagesService = useService(DBObjectPageService);
const connectionsManagerService = useService(ConnectionsManagerService);
const navNodeInfoResource = useService(NavNodeInfoResource);
const innerTabState = useTabLocalState(() => new MetadataMap<string, any>());
const objectId = tab.handlerState.objectId;
const connectionId = tab.handlerState.connectionId || null;
@@ -139,6 +141,7 @@ export const ObjectViewerPanel: TabHandlerPanelComponent<IObjectViewerTabState>
onSelect={dbObjectPagesService.selectPage}
/>
))}
localState={innerTabState}
style={styles}
>
{pages.map(page => (