From 529bd742842e76d1df464b13346fae4f22f8f3c9 Mon Sep 17 00:00:00 2001 From: Nathan-SR <144961007+Nathan-SR@users.noreply.github.com> Date: Sat, 10 May 2025 18:49:47 -0400 Subject: docpreviews resize (mostly) appropriately --- .../DocCreatorMenu/Menu/TemplateEditingWindow.tsx | 38 +++++++--- .../DocCreatorMenu/Menu/TemplatePreviewBox.tsx | 84 ++++++++++++---------- .../Menu/TemplatesSidescrollDisplay.tsx | 7 -- 3 files changed, 75 insertions(+), 54 deletions(-) (limited to 'src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu') diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplateEditingWindow.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplateEditingWindow.tsx index c5c5f5cfd..08a48ccb9 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplateEditingWindow.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplateEditingWindow.tsx @@ -1,7 +1,7 @@ import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; -import { action, observable, runInAction } from "mobx"; +import { action, observable, reaction, runInAction } from "mobx"; import React from "react"; -import { returnFalse, returnEmptyFilter } from "../../../../../../ClientUtils"; +import { returnFalse, returnEmptyFilter, returnTrue } from "../../../../../../ClientUtils"; import { emptyFunction } from "../../../../../../Utils"; import { Doc, returnEmptyDoclist } from "../../../../../../fields/Doc"; import { DefaultStyleProvider } from "../../../../StyleProvider"; @@ -13,6 +13,7 @@ import { Transform } from "../../../../../util/Transform"; import { Template } from "../Template"; import { TemplateMenuAIUtils } from "../Backend/TemplateMenuAIUtils"; import { ObservableReactComponent } from "../../../../ObservableReactComponent"; +import { IDisposer } from "mobx-utils"; interface TemplateEditingWindowProps { menu: DocCreatorMenu; @@ -25,12 +26,26 @@ export class TemplateEditingWindow extends ObservableReactComponent + this._props.menu._resizing, + () => { this.forceUpdate() }, + { fireImmediately: true } + ); + } + + componentWillUnmount() { + Object.values(this._disposers).forEach(disposer => disposer?.()); + } + setContainerRef: React.LegacyRef = (node) => { this.previewWindow = node; + this.forceUpdate(); } @action setVariationTab = (open: boolean) => { @@ -78,15 +93,15 @@ export class TemplateEditingWindow extends ObservableReactComponent - this.previewWindow?.clientWidth ?? 1000 - 10} - PanelHeight={() => this.previewWindow?.clientHeight ?? 1000 - 60} - ScreenToLocalTransform={() => new Transform(-this._props.menu._pageX - 5, -this._props.menu._pageY - 35, 1)} + PanelWidth={() => this.previewWindow?.clientWidth ?? 500} + PanelHeight={() => this.previewWindow?.clientHeight ?? 500} + ScreenToLocalTransform={() => new Transform(/*-this._props.menu._pageX - 5, -this._props.menu._pageY - 35*/0, 0, 1)} renderDepth={5} whenChildContentsActiveChanged={emptyFunction} focus={emptyFunction} @@ -98,18 +113,19 @@ export class TemplateEditingWindow extends ObservableReactComponent + /> : null} ) } render() { return ( -
+
-
+
{this.renderedDocPreview} - {this.fireflyVariationsTab} +
+ {this._variationsTabOpen ? this.fireflyVariationsTab : null}
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatePreviewBox.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatePreviewBox.tsx index 4759a4158..e63be8f9c 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatePreviewBox.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatePreviewBox.tsx @@ -1,7 +1,7 @@ import { Colors } from "@dash/components/src"; import { FontAwesomeIcon, FontAwesomeIconProps } from "@fortawesome/react-fontawesome"; import { Template } from "../Template"; -import { runInAction } from "mobx"; +import { reaction, runInAction } from "mobx"; import React from "react"; import { ObservableReactComponent } from "../../../../ObservableReactComponent"; import { DocCreatorMenu } from "../DocCreatorMenu"; @@ -12,6 +12,7 @@ import { returnEmptyFilter, returnFalse } from "../../../../../../ClientUtils"; import { Transform } from "../../../../../util/Transform"; import { DefaultStyleProvider } from "../../../../StyleProvider"; import { returnEmptyDoclist } from "../../../../../../fields/Doc"; +import { IDisposer } from "mobx-utils"; export interface TemplatePreviewBoxProps { template: Template; @@ -22,6 +23,13 @@ export interface TemplatePreviewBoxProps { export class TemplatePreviewBox extends ObservableReactComponent { + private previewWindow: HTMLDivElement | null = null; + + setContainerRef: React.LegacyRef = (node) => { + this.previewWindow = node; + this.forceUpdate(); + } + render() { const template = this.props.template; @@ -29,46 +37,48 @@ export class TemplatePreviewBox extends ObservableReactComponent this.props.menu.setUpButtonClick(e, () => runInAction(() => {console.log('setting'); this.props.menu._selectedTemplate = template}))}> - { this.props.leftButtonOpts ? - : null - } - { this.props.rightButtonOpts ? - : null } - this.props.menu._menuDimensions.height * .3} - PanelHeight={() => this.props.menu._menuDimensions.height * .3} - ScreenToLocalTransform={() => new Transform(-this.props.menu._pageX - 5, -this.props.menu._pageY - 35, 1)} - renderDepth={1} - whenChildContentsActiveChanged={emptyFunction} - focus={emptyFunction} - styleProvider={DefaultStyleProvider} - addDocTab={this.props.menu._props.addDocTab} - pinToPres={() => undefined} - childFilters={returnEmptyFilter} - childFiltersByRanges={returnEmptyFilter} - searchFilterDocs={returnEmptyDoclist} - fitContentsToBox={returnFalse} - fitWidth={returnFalse} - hideDecorations={true} - /> + onPointerDown={e => this.props.menu.setUpButtonClick(e, () => runInAction(() => {console.log('setting'); this.props.menu._selectedTemplate = template}))} + > + { this.props.leftButtonOpts ? + : null + } + { this.props.rightButtonOpts ? + : null } + this.previewWindow?.clientWidth ?? this.props.menu._menuDimensions.height * .3} + PanelHeight={() => this.previewWindow?.clientHeight ?? this.props.menu._menuDimensions.height * .3} + ScreenToLocalTransform={() => new Transform(-this.props.menu._pageX - 5, -this.props.menu._pageY - 35, 1)} + renderDepth={1} + whenChildContentsActiveChanged={emptyFunction} + focus={emptyFunction} + styleProvider={DefaultStyleProvider} + addDocTab={this.props.menu._props.addDocTab} + pinToPres={() => undefined} + childFilters={returnEmptyFilter} + childFiltersByRanges={returnEmptyFilter} + searchFilterDocs={returnEmptyDoclist} + fitContentsToBox={returnFalse} + fitWidth={returnFalse} + hideDecorations={true} + />
) } diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatesSidescrollDisplay.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatesSidescrollDisplay.tsx index a5f96ef90..1f6eed9e5 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatesSidescrollDisplay.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatesSidescrollDisplay.tsx @@ -44,13 +44,6 @@ export class TemplateSidescrollView extends ObservableReactComponent ))}
-
-
- -
-
); } -- cgit v1.2.3-70-g09d2