mirror of
https://github.com/mathuo/dockview
synced 2025-02-13 11:55:45 +00:00
bug: fix title renderer
This commit is contained in:
parent
36dd190ddb
commit
6a620d4088
@ -22,6 +22,27 @@ describe('defaultTab', () => {
|
|||||||
expect(element.querySelector('.dv-react-tab-close-btn')).toBeTruthy();
|
expect(element.querySelector('.dv-react-tab-close-btn')).toBeTruthy();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('that title is displayed', async () => {
|
||||||
|
const api = fromPartial<DockviewPanelApi>({
|
||||||
|
title: 'test_title',
|
||||||
|
});
|
||||||
|
const containerApi = fromPartial<DockviewApi>({});
|
||||||
|
const params = {};
|
||||||
|
|
||||||
|
render(
|
||||||
|
<DockviewDefaultTab
|
||||||
|
api={api}
|
||||||
|
containerApi={containerApi}
|
||||||
|
params={params}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
|
||||||
|
const element = await screen.getByTestId('dockview-default-tab');
|
||||||
|
expect(
|
||||||
|
element.querySelector('.dockview-react-tab-title')?.textContent
|
||||||
|
).toBe('test_title');
|
||||||
|
});
|
||||||
|
|
||||||
test('has no close button when hideClose=true', async () => {
|
test('has no close button when hideClose=true', async () => {
|
||||||
const api = fromPartial<DockviewPanelApi>({});
|
const api = fromPartial<DockviewPanelApi>({});
|
||||||
const containerApi = fromPartial<DockviewApi>({});
|
const containerApi = fromPartial<DockviewApi>({});
|
||||||
|
@ -57,7 +57,7 @@ export const DockviewDefaultTab: React.FunctionComponent<
|
|||||||
onClick={onClick}
|
onClick={onClick}
|
||||||
className="dockview-react-tab"
|
className="dockview-react-tab"
|
||||||
>
|
>
|
||||||
<span className="dockview-react-tab-title">{api.renderer}</span>
|
<span className="dockview-react-tab-title">{api.title}</span>
|
||||||
{!hideClose && (
|
{!hideClose && (
|
||||||
<div
|
<div
|
||||||
className="dv-react-tab-close-btn"
|
className="dv-react-tab-close-btn"
|
||||||
|
@ -5,69 +5,17 @@ import {
|
|||||||
IDockviewPanelHeaderProps,
|
IDockviewPanelHeaderProps,
|
||||||
IDockviewPanelProps,
|
IDockviewPanelProps,
|
||||||
IDockviewHeaderActionsProps,
|
IDockviewHeaderActionsProps,
|
||||||
DockviewPanelApi,
|
|
||||||
DockviewPanelRenderer,
|
|
||||||
} from 'dockview';
|
} from 'dockview';
|
||||||
import * as React from 'react';
|
import * as React from 'react';
|
||||||
import * as ReactDOM from 'react-dom';
|
import * as ReactDOM from 'react-dom';
|
||||||
import { v4 } from 'uuid';
|
import { v4 } from 'uuid';
|
||||||
import './app.scss';
|
import './app.scss';
|
||||||
|
|
||||||
const useRenderer = (
|
|
||||||
api: DockviewPanelApi
|
|
||||||
): [DockviewPanelRenderer, (value: DockviewPanelRenderer) => void] => {
|
|
||||||
const [mode, setMode] = React.useState<DockviewPanelRenderer>(api.renderer);
|
|
||||||
|
|
||||||
React.useEffect(() => {
|
|
||||||
const disposable = api.onDidRendererChange((event) => {
|
|
||||||
setMode(event.renderer);
|
|
||||||
});
|
|
||||||
|
|
||||||
return () => {
|
|
||||||
disposable.dispose();
|
|
||||||
};
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
const _setMode = React.useCallback(
|
|
||||||
(mode: DockviewPanelRenderer) => {
|
|
||||||
api.setRenderer(mode);
|
|
||||||
},
|
|
||||||
[api]
|
|
||||||
);
|
|
||||||
|
|
||||||
return [mode, _setMode];
|
|
||||||
};
|
|
||||||
|
|
||||||
const components = {
|
const components = {
|
||||||
default: (props: IDockviewPanelProps<{ title: string }>) => {
|
default: (props: IDockviewPanelProps<{ title: string }>) => {
|
||||||
const [mode, setMode] = useRenderer(props.api);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div style={{ height: '100%', overflow: 'auto', color: 'white' }}>
|
<div style={{ height: '100%', overflow: 'auto', color: 'white' }}>
|
||||||
<div
|
{''}
|
||||||
style={{
|
|
||||||
height: '1000px',
|
|
||||||
padding: '20px',
|
|
||||||
overflow: 'auto',
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
<div>{props.api.title}</div>
|
|
||||||
<input />
|
|
||||||
<div>
|
|
||||||
{mode}
|
|
||||||
<button
|
|
||||||
onClick={() => {
|
|
||||||
setMode(
|
|
||||||
mode === 'onlyWhenVisibile'
|
|
||||||
? 'always'
|
|
||||||
: 'onlyWhenVisibile'
|
|
||||||
);
|
|
||||||
}}
|
|
||||||
>
|
|
||||||
Toggle render mode
|
|
||||||
</button>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
@ -289,18 +237,18 @@ const DockviewDemo = (props: { theme?: string }) => {
|
|||||||
title: 'Panel 4',
|
title: 'Panel 4',
|
||||||
position: { referencePanel: 'panel_3', direction: 'right' },
|
position: { referencePanel: 'panel_3', direction: 'right' },
|
||||||
});
|
});
|
||||||
// event.api.addPanel({
|
event.api.addPanel({
|
||||||
// id: 'panel_5',
|
id: 'panel_5',
|
||||||
// component: 'default',
|
component: 'default',
|
||||||
// title: 'Panel 5',
|
title: 'Panel 5',
|
||||||
// position: { referencePanel: 'panel_3', direction: 'below' },
|
position: { referencePanel: 'panel_3', direction: 'below' },
|
||||||
// });
|
});
|
||||||
// event.api.addPanel({
|
event.api.addPanel({
|
||||||
// id: 'panel_6',
|
id: 'panel_6',
|
||||||
// component: 'default',
|
component: 'default',
|
||||||
// title: 'Panel 6',
|
title: 'Panel 6',
|
||||||
// position: { referencePanel: 'panel_3', direction: 'right' },
|
position: { referencePanel: 'panel_3', direction: 'right' },
|
||||||
// });
|
});
|
||||||
|
|
||||||
event.api.getPanel('panel_1')!.api.setActive();
|
event.api.getPanel('panel_1')!.api.setActive();
|
||||||
|
|
||||||
@ -316,7 +264,6 @@ const DockviewDemo = (props: { theme?: string }) => {
|
|||||||
prefixHeaderActionsComponent={PrefixHeaderControls}
|
prefixHeaderActionsComponent={PrefixHeaderControls}
|
||||||
onReady={onReady}
|
onReady={onReady}
|
||||||
className={props.theme || 'dockview-theme-abyss'}
|
className={props.theme || 'dockview-theme-abyss'}
|
||||||
// debug={true}
|
|
||||||
/>
|
/>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user