import { observable, computed, action, trace } from "mobx"; import React = require("react"); import { observer } from "mobx-react"; import './DocumentDecorations.scss'; import { Template } from "./Templates"; import { DocumentView } from "./nodes/DocumentView"; const higflyout = require("@hig/flyout"); export const { anchorPoints } = higflyout; export const Flyout = higflyout.default; @observer class TemplateToggle extends React.Component<{ template: Template, checked: boolean, toggle: (event: React.ChangeEvent, template: Template) => void }> { render() { if (this.props.template) { return (
  • this.props.toggle(event, this.props.template)} /> {this.props.template.Name}
  • ); } else { return (null); } } } export interface TemplateMenuProps { doc: DocumentView; templates: Map; } @observer export class TemplateMenu extends React.Component { @observable private _hidden: boolean = true; @action toggleTemplate = (event: React.ChangeEvent, template: Template): void => { if (event.target.checked) { this.props.doc.addTemplate(template); this.props.templates.set(template, true); this.props.templates.forEach((checked, template) => console.log("Set Checked + " + checked + " " + this.props.templates.get(template))); } else { this.props.doc.removeTemplate(template); this.props.templates.set(template, false); this.props.templates.forEach((checked, template) => console.log("Unset Checked + " + checked + " " + this.props.templates.get(template))); } } @action componentWillReceiveProps(nextProps: TemplateMenuProps) { // this._templates = nextProps.templates; } @action toggleTemplateActivity = (): void => { this._hidden = !this._hidden; } render() { let templateMenu: Array = []; this.props.templates.forEach((checked, template) => templateMenu.push()); return (
    this.toggleTemplateActivity()}>+
      {templateMenu}
    ); } }