import { makeObservable, runInAction } from "mobx"; import React from "react"; import ReactLoading from "react-loading"; import { Doc } from "../../../../../../fields/Doc"; import { StrCast } from "../../../../../../fields/Types"; import { ObservableReactComponent } from "../../../../ObservableReactComponent"; import { Template } from "../Template"; import { observer } from "mobx-react"; import { DocCreatorMenu } from "../DocCreatorMenu"; import { TemplatePreviewBox } from "./TemplatePreviewBox"; import { IconProp } from "@fortawesome/fontawesome-svg-core"; import { DocCreatorMenuButton } from "./DocCreatorMenuButton"; export interface SuggestedTemplatesProps { menu: DocCreatorMenu; loading?: boolean; templates: Template[]; title: string; styles?: string; // eslint-disable-next-line optionsButtonOpts?: [IconProp, (...args: any) => any]; // eslint-disable-next-line previewBoxLeftButtonOpts?: [IconProp, (...args: any) => any]; // eslint-disable-next-line previewBoxRightButtonOpts?: [IconProp, (...args: any) => any]; } @observer export class TemplatePreviewGrid extends ObservableReactComponent { constructor(props: SuggestedTemplatesProps) { super(props); makeObservable(this); } render() { return (
{this.props.title}
{this._props.optionsButtonOpts ? runInAction(this._props.optionsButtonOpts![1])}/> : null}
{this._props.loading ? (
) : this.props.templates.map((template, i) => ( { this.props.menu.setExpandedView(template); this.forceUpdate(); }]} rightButtonOpts={this._props.previewBoxRightButtonOpts} /> ))}
); } }