import { action, observable, makeObservable } from 'mobx'; import { observer } from 'mobx-react'; import * as React from 'react'; import { Docs } from '../../documents/Documents'; import { DocumentType } from '../../documents/DocumentTypes'; import { FieldView } from './FieldView'; import { DateField } from '../../../fields/DateField'; import { Doc } from '../../../fields/Doc'; import './TaskManagerTask.scss'; interface TaskManagerProps { Document: Doc; } @observer export class TaskManagerTask extends React.Component { public static LayoutString(fieldStr: string) { return FieldView.LayoutString(TaskManagerTask, fieldStr); } @action updateText = (e: React.ChangeEvent) => { this.props.Document.text = e.target.value; }; @action updateTitle = (e: React.ChangeEvent) => { this.props.Document.title = e.target.value; }; @action updateAllDay = (e: React.ChangeEvent) => { this.props.Document.allDay = e.target.checked; if (e.target.checked) { delete this.props.Document.startTime; delete this.props.Document.endTime; } }; @action updateStart = (e: React.ChangeEvent) => { this.props.Document.startTime = new DateField(new Date(e.target.value)); }; @action updateEnd = (e: React.ChangeEvent) => { this.props.Document.endTime = new DateField(new Date(e.target.value)); }; @observable completed = false; @action toggleComplete = (e: React.ChangeEvent) => { this.completed = e.target.checked; }; constructor(props: TaskManagerProps) { super(props); makeObservable(this); } render() { const doc = this.props.Document; const taskDesc = typeof doc.text === 'string' ? doc.text : ''; const taskTitle = typeof doc.title === 'string' ? doc.title : ''; const allDay = !!doc.allDay; const startTime = doc.startTime instanceof DateField ? doc.startTime.date.toISOString().slice(0, 16) : ''; const endTime = doc.endTime instanceof DateField ? doc.endTime.date.toISOString().slice(0, 16) : ''; return (