Skip to content

Commit b1e94e5

Browse files
committed
Remove item
1 parent d09d73c commit b1e94e5

File tree

2 files changed

+83
-7
lines changed

2 files changed

+83
-7
lines changed

TodoList/script.js

Lines changed: 81 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,27 +60,44 @@ modalBtn.addEventListener('click', (e)=>{
6060
const imgInput = document.getElementById('imageInput').files[0];
6161
const imgFile = URL.createObjectURL(imgInput);
6262

63-
const title = document.getElementById("title").value.split();
63+
const title = document.getElementById("title").value.trim();
6464
const description = document.getElementById("description").value.trim();
6565

6666
if(formValid(imgFile, title, description)){
67-
addItem(imgFile, title, description);
67+
const id = Date.now();
68+
69+
addItem(id, imgFile, title, description);
70+
71+
let storageData = JSON.parse(localStorage.getItem("content"))
72+
if(!storageData) {
73+
storageData = []
74+
}
75+
76+
let itemData = { id , imgFile, title, description }
77+
78+
storageData.push(itemData)
79+
80+
localStorage.setItem("content", JSON.stringify(storageData));
81+
82+
document.getElementById("imageInput").value = "";
83+
document.getElementById("image-preview").src = "";
6884
document.querySelector('.modal__form').reset();
6985

7086
if(modalContainer.classList.contains("show-modal")){
7187
modalContainer.classList.remove('show-modal');
7288
modalContainer.classList.add('hide');
7389
}
90+
7491
}
7592
})
7693

77-
function addItem(imgFile, title, description){
94+
function addItem(id, imgFile, title, description){
7895

79-
const content = document.querySelector('.content')
96+
const content = document.querySelector('.content');
8097

8198
content.innerHTML +=
8299
`
83-
<div class="content__item">
100+
<div class="content__item item" data-id="${id}">
84101
<div class="item__image">
85102
<img src="${imgFile}" alt="Card Image">
86103
<p>Lorem ipsum dolor site amet</p>
@@ -101,3 +118,62 @@ function addItem(imgFile, title, description){
101118
102119
`
103120
}
121+
122+
function removeItem(){
123+
document.querySelector(".content").addEventListener("click", (e)=>{
124+
console.log(e.target);
125+
if(e.target.classList.contains("bi-trash")){
126+
const item = e.target.closest(".item");
127+
item.remove();
128+
129+
let storageData = JSON.parse(localStorage.getItem("content")) || [];
130+
const itemId = item.dataset.id;
131+
132+
const index = localStorage.findIndex(item => item.id === itemId);
133+
console.log(index)
134+
135+
if(index !== -1){
136+
storageData.splice(index, 1);
137+
localStorage.setItem("content", JSON.stringify(storageData));
138+
}
139+
140+
}
141+
})
142+
}
143+
removeItem()
144+
145+
146+
window.onload = ()=>{
147+
itemData = JSON.parse(localStorage.getItem("content"));
148+
if(!itemData){
149+
itemData = [];
150+
}
151+
152+
const content = document.querySelector(".content");
153+
154+
itemData.forEach(item =>{
155+
156+
content.innerHTML +=
157+
`
158+
<div class="content__item item" data-id="${item.id}">
159+
<div class="item__image">
160+
<img src="${item.imgFile}" alt="Item Image">
161+
<p>Lorem ipsum dolor site amet</p>
162+
</div>
163+
<div class="item__infos">
164+
<h1>${item.title}</h1>
165+
<p>${item.description}</p>
166+
<div class="item__infos__btns">
167+
<button class="btn">Details</button>
168+
<div class="item__infos__icons">
169+
<i class="bi bi-pen"></i>
170+
<i class="bi bi-trash"></i>
171+
<div class="alert-content"></div>
172+
</div>
173+
</div>
174+
</div>
175+
</div>
176+
177+
`
178+
})
179+
}

TodoList/style.css

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ header{
8787

8888
.content{
8989
display: grid;
90-
grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
90+
grid-template-columns: repeat(4, 1fr);
9191
gap: 15px;
9292
justify-items: center;
9393
}
@@ -98,7 +98,7 @@ header{
9898
}
9999
.item__image{
100100
position: relative;
101-
height: 100px;
101+
102102
}
103103
.item__image img{
104104
width: 100%;

0 commit comments

Comments
 (0)