import * as React from 'react'; import { observer } from 'mobx-react'; import { observable, action, runInAction, IReactionDisposer, reaction } from 'mobx'; import "./CheckBox.scss"; import * as anime from 'animejs'; interface CheckBoxProps { originalStatus: boolean; updateStatus(newStatus: boolean): void; title: string; parent: any; numCount: number; default: boolean; } @observer export class CheckBox extends React.Component{ // true = checked, false = unchecked @observable private _status: boolean; // @observable private uncheckTimeline: anime.AnimeTimelineInstance; // @observable private checkTimeline: anime.AnimeTimelineInstance; @observable private checkRef: any; @observable private _resetReaction?: IReactionDisposer; constructor(props: CheckBoxProps) { super(props); this._status = this.props.originalStatus; this.checkRef = React.createRef(); // this.checkTimeline = anime.timeline({ // loop: false, // autoplay: false, // direction: "normal", // }); this.uncheckTimeline = anime.timeline({ // loop: false, // autoplay: false, // direction: "normal", // }); } // componentDidMount = () => { // this.uncheckTimeline.add({ // targets: this.checkRef.current, // easing: "easeInOutQuad", // duration: 500, // opacity: 0, // }); // this.checkTimeline.add({ // targets: this.checkRef.current, // easing: "easeInOutQuad", // duration: 500, // strokeDashoffset: [anime.setDashoffset, 0], // opacity: 1 // }); // if (this.props.originalStatus) { // this.checkTimeline.play(); // this.checkTimeline.restart(); // } // this._resetReaction = reaction( // () => this.props.parent._resetBoolean, // () => { // if (this.props.parent._resetBoolean) { // runInAction(() => { // this.reset(); // this.props.parent._resetCounter++; // if (this.props.parent._resetCounter === this.props.numCount) { // this.props.parent._resetCounter = 0; // this.props.parent._resetBoolean = false; // } // }); // } // }, // ); // } // @action.bound // reset() { // if (this.props.default) { // if (!this._status) { // this._status = true; // this.checkTimeline.play(); // this.checkTimeline.restart(); // } // } // else { // if (this._status) { // this._status = false; // this.uncheckTimeline.play(); // this.uncheckTimeline.restart(); // } // } // this.props.updateStatus(this.props.default); // } @action.bound onClick = () => { // if (this._status) { // this.uncheckTimeline.play(); // this.uncheckTimeline.restart(); // } // else { // this.checkTimeline.play(); // this.checkTimeline.restart(); // } // this._status = !this._status; // this.props.updateStatus(this._status); } render() { return (
{this.props.title}
); } }