From f3f76fc25a9e39d4c08618fb601b5e66ce62e235 Mon Sep 17 00:00:00 2001 From: madelinegr Date: Tue, 18 Jun 2019 18:24:51 -0400 Subject: end of day 6/18 --- src/client/views/search/CheckBox.tsx | 58 ++++++++++++++++++++++++++++++++---- 1 file changed, 52 insertions(+), 6 deletions(-) (limited to 'src/client/views/search/CheckBox.tsx') diff --git a/src/client/views/search/CheckBox.tsx b/src/client/views/search/CheckBox.tsx index 8b5f7d7c1..ace479c70 100644 --- a/src/client/views/search/CheckBox.tsx +++ b/src/client/views/search/CheckBox.tsx @@ -2,6 +2,7 @@ import * as React from 'react'; import { observer } from 'mobx-react'; import { observable, action, runInAction } from 'mobx'; import "./CheckBox.scss"; +import * as anime from 'animejs'; interface CheckBoxProps { originalStatus: boolean; @@ -11,27 +12,72 @@ interface CheckBoxProps { @observer export class CheckBox extends React.Component{ + // true = checked, false = unchecked @observable _status: boolean; + @observable uncheckTimeline: anime.AnimeTimelineInstance; + @observable checkTimeline: anime.AnimeTimelineInstance; + @observable checkRef: any; + 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: 1 , + }); + this.checkTimeline.add({ + targets: this.checkRef.current, + easing: "easeInOutQuad", + duration: 500, + strokeDashoffset: [anime.setDashoffset, 0], + opacity: 1 + }); } + @action.bound onClick = () => { - this._status = !this._status; this.props.updateStatus(this._status); + + if(this._status){ + this.uncheckTimeline.play(); + this.uncheckTimeline.restart(); + } + else{ + this.checkTimeline.play(); + this.checkTimeline.restart(); + + } + this._status = !this._status; } render() { return ( -
-
- - +
+
+
+ +
+
+
{this.props.title}
) -- cgit v1.2.3-70-g09d2