feat: adjust watermark component props

This commit is contained in:
mathuo 2023-03-15 21:26:34 +03:00
parent 015cef7fb0
commit 454542b729
No known key found for this signature in database
GPG Key ID: C6EEDEFD6CA07281
5 changed files with 26 additions and 26 deletions

View File

@ -1,4 +1,8 @@
import { GroupPanelPartInitParameters, IWatermarkRenderer } from '../../types'; import {
GroupPanelPartInitParameters,
IWatermarkRenderer,
WatermarkRendererInitParameters,
} from '../../types';
import { addDisposableListener } from '../../../events'; import { addDisposableListener } from '../../../events';
import { toggleClass } from '../../../dom'; import { toggleClass } from '../../../dom';
import { CompositeDisposable } from '../../../lifecycle'; import { CompositeDisposable } from '../../../lifecycle';
@ -69,15 +73,7 @@ export class Watermark
// noop // noop
} }
init(params: GroupPanelPartInitParameters) { init(_params: WatermarkRendererInitParameters) {
this.params = params;
this.addDisposables(
this.params.containerApi.onDidLayoutChange(() => {
this.render();
})
);
this.render(); this.render();
} }

View File

@ -632,9 +632,6 @@ export class DockviewComponent
this.watermark.init({ this.watermark.init({
containerApi: new DockviewApi(this), containerApi: new DockviewApi(this),
params: {},
title: '',
api: null as any,
}); });
const watermarkContainer = document.createElement('div'); const watermarkContainer = document.createElement('div');

View File

@ -670,9 +670,7 @@ export class DockviewGroupPanelModel
const watermark = this.accessor.createWatermarkComponent(); const watermark = this.accessor.createWatermarkComponent();
watermark.init({ watermark.init({
containerApi: new DockviewApi(this.accessor), containerApi: new DockviewApi(this.accessor),
params: {}, group: this.groupPanel,
title: '',
api: null as any,
}); });
this.watermark = watermark; this.watermark = watermark;

View File

@ -9,7 +9,7 @@ import {
import { DockviewApi } from '../api/component.api'; import { DockviewApi } from '../api/component.api';
import { Event } from '../events'; import { Event } from '../events';
import { Optional } from '../types'; import { Optional } from '../types';
import { DockviewGroupPanel } from './dockviewGroupPanel'; import { DockviewGroupPanel, IDockviewGroupPanel } from './dockviewGroupPanel';
export enum DockviewDropTargets { export enum DockviewDropTargets {
Tab, Tab,
@ -34,13 +34,18 @@ export interface GroupPanelContentPartInitParameters
tab: ITabRenderer; tab: ITabRenderer;
} }
export interface WatermarkRendererInitParameters {
containerApi: DockviewApi;
group?: IDockviewGroupPanel;
}
export interface IWatermarkRenderer export interface IWatermarkRenderer
extends Optional< extends Optional<
Omit<IPanel, 'id'>, Omit<IPanel, 'id' | 'init'>,
'dispose' | 'update' | 'layout' | 'toJSON' 'dispose' | 'update' | 'layout' | 'toJSON'
> { > {
readonly element: HTMLElement; readonly element: HTMLElement;
init: (params: GroupPanelPartInitParameters) => void; init: (params: WatermarkRendererInitParameters) => void;
updateParentGroup(group: DockviewGroupPanel, visible: boolean): void; updateParentGroup(group: DockviewGroupPanel, visible: boolean): void;
} }

View File

@ -6,9 +6,14 @@ import {
DockviewGroupPanel, DockviewGroupPanel,
GroupPanelPartInitParameters, GroupPanelPartInitParameters,
IWatermarkRenderer, IWatermarkRenderer,
WatermarkRendererInitParameters,
DockviewApi,
IDockviewGroupPanel,
} from 'dockview-core'; } from 'dockview-core';
export interface IWatermarkPanelProps extends IGroupPanelBaseProps { export interface IWatermarkPanelProps {
containerApi: DockviewApi;
group?: IDockviewGroupPanel;
close: () => void; close: () => void;
} }
@ -30,19 +35,18 @@ export class ReactWatermarkPart implements IWatermarkRenderer {
this._element.className = 'dockview-react-part'; this._element.className = 'dockview-react-part';
} }
init(parameters: GroupPanelPartInitParameters): void { init(parameters: WatermarkRendererInitParameters): void {
this.parameters = parameters;
this.part = new ReactPart( this.part = new ReactPart(
this.element, this.element,
this.reactPortalStore, this.reactPortalStore,
this.component, this.component,
{ {
params: parameters.params, group: parameters.group,
api: parameters.api,
containerApi: parameters.containerApi, containerApi: parameters.containerApi,
close: () => { close: () => {
parameters.containerApi.removeGroup(parameters.api.group); if (parameters.group) {
parameters.containerApi.removeGroup(parameters.group);
}
}, },
} }
); );