diff options
Diffstat (limited to 'src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatePreviewBox.tsx')
| -rw-r--r-- | src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatePreviewBox.tsx | 113 |
1 files changed, 54 insertions, 59 deletions
diff --git a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatePreviewBox.tsx b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatePreviewBox.tsx index dc4c35789..7d02fff12 100644 --- a/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatePreviewBox.tsx +++ b/src/client/views/nodes/DataVizBox/DocCreatorMenu/Menu/TemplatePreviewBox.tsx @@ -1,35 +1,30 @@ -import { Colors } from "@dash/components/src"; -import { FontAwesomeIcon} from "@fortawesome/react-fontawesome"; -import { Template } from "../Template"; -import { makeObservable, observable } from "mobx"; -import React from "react"; -import { ObservableReactComponent } from "../../../../ObservableReactComponent"; -import { DocCreatorMenu } from "../DocCreatorMenu"; -import { IconProp } from "@fortawesome/fontawesome-svg-core"; -import { DocumentView } from "../../../DocumentView"; -import { emptyFunction } from "../../../../../../Utils"; -import { returnEmptyFilter, returnFalse } from "../../../../../../ClientUtils"; -import { Transform } from "../../../../../util/Transform"; -import { DefaultStyleProvider } from "../../../../StyleProvider"; -import { Doc, returnEmptyDoclist } from "../../../../../../fields/Doc"; -import { observer } from "mobx-react"; +import { Colors } from '@dash/components/src'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { Template } from '../Template'; +import { action, makeObservable, observable } from 'mobx'; +import React from 'react'; +import { ObservableReactComponent } from '../../../../ObservableReactComponent'; +import { DocCreatorMenu } from '../DocCreatorMenu'; +import { IconProp } from '@fortawesome/fontawesome-svg-core'; +import { DocumentView } from '../../../DocumentView'; +import { emptyFunction } from '../../../../../../Utils'; +import { returnEmptyFilter, returnFalse } from '../../../../../../ClientUtils'; +import { Transform } from '../../../../../util/Transform'; +import { DefaultStyleProvider } from '../../../../StyleProvider'; +import { Doc, returnEmptyDoclist } from '../../../../../../fields/Doc'; +import { observer } from 'mobx-react'; export interface TemplatePreviewBoxProps { template: Template; menu: DocCreatorMenu; // eslint-disable-next-line - leftButtonOpts?: [icon: IconProp, func: (...args: any) => void] // eslint-disable-next-line - rightButtonOpts?: [icon: IconProp, func: (...args: any) => void] + leftButtonOpts?: [icon: IconProp, func: (...args: any) => void]; // eslint-disable-next-line + rightButtonOpts?: [icon: IconProp, func: (...args: any) => void]; } @observer export class TemplatePreviewBox extends ObservableReactComponent<TemplatePreviewBoxProps> { - @observable private previewWindow: HTMLDivElement | null = null; - setContainerRef: React.LegacyRef<HTMLDivElement> = (node) => { - this.previewWindow = node; - } - constructor(props: TemplatePreviewBoxProps) { super(props); makeObservable(this); @@ -39,6 +34,10 @@ export class TemplatePreviewBox extends ObservableReactComponent<TemplatePreview return this._props.template.getRenderedDoc() as Doc; } + docPanelWidth = () => this.previewWindow?.clientWidth ?? this._props.menu._menuDimensions.height * 0.3; + docPanelHeight = () => this.previewWindow?.clientHeight ?? this._props.menu._menuDimensions.height * 0.3; + docScreenToLocalXf = () => new Transform(-this._props.menu._pageX - 5, -this._props.menu._pageY - 35, 1); + render() { const template = this._props.template; @@ -46,49 +45,45 @@ export class TemplatePreviewBox extends ObservableReactComponent<TemplatePreview <div key={template.title} className="docCreatorMenu-preview-window" - ref={this.setContainerRef} + ref={action((node: HTMLDivElement | null) => (this.previewWindow = node))} style={{ border: this._props.menu._selectedTemplate === template ? `solid 3px ${Colors.MEDIUM_BLUE}` : '', boxShadow: this._props.menu._selectedTemplate === template ? `0 0 15px rgba(68, 118, 247, .8)` : '', }} - onPointerDown={e => this._props.menu.setUpButtonClick(e, () => this._props.menu.updateSelectedTemplate(template))} - > - { this._props.leftButtonOpts ? - <button - className="option-button left" - onPointerDown={e => - this._props.menu.setUpButtonClick(e, () => this._props.leftButtonOpts) - }> + onPointerDown={e => this._props.menu.setUpButtonClick(e, () => this._props.menu.updateSelectedTemplate(template))}> + {this._props.leftButtonOpts ? ( + <button className="option-button left" onPointerDown={e => this._props.menu.setUpButtonClick(e, () => this._props.leftButtonOpts)}> <FontAwesomeIcon icon={this._props.leftButtonOpts![0]} color="white" /> - </button> : null - } - { this._props.rightButtonOpts ? + </button> + ) : null} + {this._props.rightButtonOpts ? ( <button className="option-button right" onPointerDown={e => this._props.menu.setUpButtonClick(e, () => this._props.rightButtonOpts)}> <FontAwesomeIcon icon={this._props.rightButtonOpts![0]} color="white" /> - </button> : null } - <DocumentView - Document={this.doc} - isContentActive={emptyFunction} // !!! should be return false - addDocument={returnFalse} - moveDocument={returnFalse} - removeDocument={returnFalse} - PanelWidth={() => 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} - /> + </button> + ) : null} + <DocumentView + Document={this.doc} + isContentActive={emptyFunction} // !!! should be return false + addDocument={returnFalse} + moveDocument={returnFalse} + removeDocument={returnFalse} + PanelWidth={this.docPanelWidth} + PanelHeight={this.docPanelHeight} + ScreenToLocalTransform={this.docScreenToLocalXf} + renderDepth={1} + whenChildContentsActiveChanged={emptyFunction} + focus={emptyFunction} + styleProvider={DefaultStyleProvider} + addDocTab={this._props.menu._props.addDocTab} + pinToPres={emptyFunction} + childFilters={returnEmptyFilter} + childFiltersByRanges={returnEmptyFilter} + searchFilterDocs={returnEmptyDoclist} + // fitContentsToBox={returnFalse} + // fitWidth={returnFalse} + hideDecorations={true} + /> </div> - ) + ); } -}
\ No newline at end of file +} |
