diff --git a/src/js/common/components/Style/DesignTokenColors.js b/src/js/common/components/Style/DesignTokenColors.js index 2b156a5c4..5df598497 100644 --- a/src/js/common/components/Style/DesignTokenColors.js +++ b/src/js/common/components/Style/DesignTokenColors.js @@ -16,6 +16,7 @@ const primitiveColorNames = { steel200: '#C8D4DF', white: '#FFFFFF', red: '#EF0716', + alert: '#F3363D', }; // These are semanticColorNames @@ -37,6 +38,7 @@ const DesignTokenColors = { secondary200: primitiveColorNames.steel200, whiteUI: primitiveColorNames.white, alert500: primitiveColorNames.red, + alert400: primitiveColorNames.alert, }; export default DesignTokenColors; diff --git a/src/js/common/components/Widgets/HeartFavoriteToggle/HeartFavoriteToggleBase.jsx b/src/js/common/components/Widgets/HeartFavoriteToggle/HeartFavoriteToggleBase.jsx index 4a97c3122..de587df6c 100644 --- a/src/js/common/components/Widgets/HeartFavoriteToggle/HeartFavoriteToggleBase.jsx +++ b/src/js/common/components/Widgets/HeartFavoriteToggle/HeartFavoriteToggleBase.jsx @@ -1,43 +1,32 @@ -import React, { useState } from 'react'; +import React from 'react'; import PropTypes from 'prop-types'; import styled from 'styled-components'; import DesignTokenColors from '../../Style/DesignTokenColors'; -import HeartFavoriteToggleIcon from './HeartFavoriteToggleIcon'; +import LikeDislikeIcon from './HeartFavoriteToggleIcon'; const ContainerLikeDislike = styled.div` display: flex; justify-content: space-between; align-items: center; - // width: 135px; height: 32px; border-radius: 20px; padding-left: 8px; padding-right: 8px; - border: 1px solid ${DesignTokenColors.neutralUI100}; background: ${DesignTokenColors.whiteUI}; - - - // &:focus { - // outline: 2px solid ${DesignTokenColors.primary} !important; - // outline-offset: 2px; - // } - - // /* Hover state */ - // &:hover { - // background-color: ${DesignTokenColors.primaryHover}; - // } `; const LikeContainer = styled.div` display: flex; padding-right: 8px; - border-right: 1px solid ${DesignTokenColors.neutralUI100}; + border-right: 1px solid ${DesignTokenColors.neutralUI100}; + cursor: pointer; `; const DislikeContainer = styled.div` display: flex; padding-left: 8px; + cursor: pointer; `; class Like extends React.Component { @@ -54,70 +43,71 @@ class Like extends React.Component { } incrementLike = (plus) => { - this.state.liked = true; - this.state.disLiked = false; - console.log(' this.state.likeActive this.state.disLikeActive!!!', this.state.likeActive, this.state.disLikeActive); - if (plus === '+') { this.setState((prevState) => ({ likeCounter: prevState.likeCounter + 1, - likeActive: 'likePressed', - // disLikeActive: 'dislike', })); - - console.log('plus like', this.state.likeActive, this.state.disLikeActive); } else { this.setState((prevState) => ({ likeCounter: prevState.likeCounter - 1, - likeActive: 'like', })); } }; dicrementLike = (minus) => { - this.state.liked = false; - this.state.disLiked = true; - - console.log('minus like!', this.state.likeActive); if (minus === '-') { this.setState((prevState) => ({ dislikeCounter: prevState.dislikeCounter + 1, - disLikeActive: 'dislikePressed', - likeActive: 'like', })); - console.log('minus like', this.state.likeActive, this.state.disLikeActive); } else { this.setState((prevState) => ({ dislikeCounter: prevState.dislikeCounter - 1 })); } }; + handleClick = (a) => { + if (a === 'like') { + this.setState((prevState) => ({ + likeActive: prevState.likeActive === 'like' ? 'liked' : 'like', + disLikeActive: 'dislike', + liked: true, + disLiked: false, + }), () => { + this.incrementLike(this.state.likeActive === 'like' ? '-' : '+'); + }); + } + + if (a === 'dislike') { + this.setState((prevState) => ({ + disLikeActive: prevState.disLikeActive === 'dislike' ? 'dislikePressed' : 'dislike', + likeActive: 'like', + liked: false, + disLiked: true, + }), () => { + this.dicrementLike(this.state.disLikeActive === 'dislike' ? '+' : '-'); + }); + } + }; + render () { return ( - - - { this.handleClick('like'); }}> + {this.state.liked && this.state.likeCounter} - - - - - this.handleClick('dislike')} handleData={this.dicrementLike}> + {this.state.disLiked && this.state.dislikeCounter} - ); } @@ -127,15 +117,5 @@ export default Like; Like.propTypes = { counter: PropTypes.number.isRequired, - // likeCounter: PropTypes.number.isRequired, - // secondary: PropTypes.bool, - // size: PropTypes.oneOf(['small', 'medium', 'large']), - // label: PropTypes.string.isRequired, - // onClick: PropTypes.func, }; -// Button.defaultProps = { -// primary: false, -// size: 'medium', -// onClick: undefined, -// }; diff --git a/src/js/common/components/Widgets/HeartFavoriteToggle/HeartFavoriteToggleIcon.jsx b/src/js/common/components/Widgets/HeartFavoriteToggle/HeartFavoriteToggleIcon.jsx index b34979028..eea947f3c 100644 --- a/src/js/common/components/Widgets/HeartFavoriteToggle/HeartFavoriteToggleIcon.jsx +++ b/src/js/common/components/Widgets/HeartFavoriteToggle/HeartFavoriteToggleIcon.jsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react'; +import React from 'react'; import PropTypes from 'prop-types'; import styled from 'styled-components'; import DesignTokenColors from '../../Style/DesignTokenColors'; @@ -50,51 +50,22 @@ const IconContainer = styled.div` `; -const HeartFavoriteToggleIcon = ({ iconType: initialIconType, handleData }) => { - const [iconType, setIconType] = useState(initialIconType); +const HeartFavoriteToggleIcon = ({ state }) => ( + + + {state === 'like' && } + {state === 'liked' && } + {state === 'dislike' && } + {state === 'dislikePressed' && } + - const handleClick = () => { - switch (iconType) { - case 'like': - setIconType('likePressed'); - handleData('+'); - break; - case 'dislike': - setIconType('dislikePressed'); - handleData('-'); - break; - case 'likePressed': - setIconType('like'); - handleData(); - break; - case 'dislikePressed': - setIconType('dislike'); - handleData(); - break; - default: - break; - } - }; - - return ( - - - {iconType === 'like' && } - {iconType === 'likePressed' && } - {iconType === 'dislike' && } - {iconType === 'dislikePressed' && } - - - - ); -}; + +); export default HeartFavoriteToggleIcon; HeartFavoriteToggleIcon.propTypes = { - iconType: PropTypes.string.isRequired, - handleData: PropTypes.func, + state: PropTypes.string, }; diff --git a/src/js/common/stories/HeartFavoriteToggle.stories.js b/src/js/common/stories/HeartFavoriteToggle.stories.js index c3ff5be0c..2fba44ab3 100644 --- a/src/js/common/stories/HeartFavoriteToggle.stories.js +++ b/src/js/common/stories/HeartFavoriteToggle.stories.js @@ -18,16 +18,8 @@ const Container = styled.div` width: 340px; `; -// const counterHandler = () => { -// let counter = 2340; -// counter += 1; -// console.log(counter, 'counter'); -// return counter; -// }; - export const Like = () => ( - {/* */} );