Skip to content

Commit 158f8b1

Browse files
committed
Implement toggleHideComplete
1 parent bece733 commit 158f8b1

File tree

6 files changed

+37
-6
lines changed

6 files changed

+37
-6
lines changed

src/pages/Home.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ const useItemsState = createPersistedState("items");
77

88
const Home = () => {
99
const [items, setItems] = useItemsState([]);
10+
const [hideCompleted, setHideCompleted] = useState(false);
1011

1112
const handleItems = questionId => {
1213
if (items && items.find(item => item == questionId)) {
@@ -20,25 +21,33 @@ const Home = () => {
2021
setItems([]);
2122
};
2223

24+
const toggleHideCompleted = () => {
25+
setHideCompleted(!hideCompleted);
26+
};
27+
2328
return (
2429
<main className="container">
2530
<QuestionsHeader
2631
items={items}
2732
questions={questions}
2833
resetItems={resetItems}
34+
toggleHideCompleted={toggleHideCompleted}
2935
/>
3036
<QuestionsHeader
3137
items={items}
3238
questions={questions}
3339
isFixed
3440
resetItems={resetItems}
41+
toggleHideCompleted={toggleHideCompleted}
3542
/>
3643
<ol>
3744
{questions.map(question => (
3845
<Question
46+
key={question.id}
3947
question={question}
4048
handleItems={handleItems}
4149
items={items}
50+
hideCompleted={hideCompleted}
4251
/>
4352
))}
4453
</ol>

src/ui/Question/Question.css

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,13 @@
33
flex-direction: row;
44
align-items: center;
55
margin-bottom: 26px;
6+
transition: 0.5s ease opacity;
7+
opacity: 1;
8+
}
9+
10+
.question--hidden {
11+
display: none;
12+
opacity: 0;
613
}
714

815
.question__number {

src/ui/Question/Question.js

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@ import React, { useState } from "react";
22
import Collapsible from "../Collapsible";
33
import "./Question.css";
44

5-
const Question = ({ question, handleItems, items }) => {
5+
const Question = ({ question, handleItems, items, hideCompleted }) => {
66
const [hidden, setHidden] = useState(true);
77
const isSelected = items && items.find(item => item == question.id);
8+
89
return (
9-
<div className={`question`}>
10+
<div
11+
className={`question ${
12+
hideCompleted && isSelected ? "question--hidden" : ""
13+
}`}
14+
>
1015
<div className="question__number">{question.position}</div>
1116
<li
1217
className={`question__card ${isSelected && "question__card--checked"}`}

src/ui/QuestionsHeader/HeaderButtons/HeaderButtons.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import React from "react";
22
import "./HeaderButtons.css";
33

4-
const HeaderButtons = ({ resetItems }) => {
4+
const HeaderButtons = ({ resetItems, toggleHideCompleted }) => {
55
return (
66
<div className="HeaderButtons">
77
<button className="HeaderButtons__button" onClick={resetItems}>
88
Reset
99
</button>
1010
<button
1111
className="HeaderButtons__button HeaderButtons__button--completed"
12-
onClick={resetItems}
12+
onClick={toggleHideCompleted}
1313
>
1414
Hide Completed
1515
</button>

src/ui/QuestionsHeader/QuestionsHeader.css

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
justify-content: space-between;
1616
width: 100%;
1717
padding-left: 56px;
18+
padding-right: 0px;
1819
}
1920

2021
.question__header--hide {

src/ui/QuestionsHeader/QuestionsHeader.js

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@ import useWindowScroll from "@react-hook/window-scroll";
33
import "./QuestionsHeader.css";
44
import HeaderButtons from "./HeaderButtons/HeaderButtons";
55

6-
const QuestionsHeader = ({ items, questions, isFixed, resetItems }) => {
6+
const QuestionsHeader = ({
7+
items,
8+
questions,
9+
isFixed,
10+
resetItems,
11+
toggleHideCompleted
12+
}) => {
713
const scrollY = useWindowScroll(60);
814
const scrollPoint = scrollY > 238;
915
const fixedClass = isFixed && "question__header__fixed";
@@ -18,7 +24,10 @@ const QuestionsHeader = ({ items, questions, isFixed, resetItems }) => {
1824
<div className="questions__header_text">
1925
{!items ? 0 : items.length}/{questions.length}
2026
</div>
21-
<HeaderButtons resetItems={resetItems} />
27+
<HeaderButtons
28+
resetItems={resetItems}
29+
toggleHideCompleted={toggleHideCompleted}
30+
/>
2231
</div>
2332
);
2433
};

0 commit comments

Comments
 (0)