Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 16 additions & 0 deletions submissions/Places to Visit Wishlist/manifest.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"manifest_version": 3,
"name": "Places to Visit Wishlist",
"version": "1.0",
"description": "Save and manage a wishlist of places you want to visit.",
"action": {
"default_popup": "popup.html",
"default_icon": "icon.png"
},
"permissions": ["storage"],
"icons": {
"16": "icon.png",
"48": "icon.png",
"128": "icon.png"
}
}
36 changes: 36 additions & 0 deletions submissions/Places to Visit Wishlist/popup.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
body {
width: 300px;
font-family: Arial, sans-serif;
padding: 10px;
}

h1 {
font-size: 18px;
text-align: center;
}

input {
width: 70%;
padding: 5px;
margin-right: 5px;
}

button {
padding: 5px 10px;
}

ul {
list-style-type: none;
padding: 0;
}

li {
display: flex;
justify-content: space-between;
padding: 5px 0;
}

.delete-btn {
color: red;
cursor: pointer;
}
15 changes: 15 additions & 0 deletions submissions/Places to Visit Wishlist/popup.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
<!DOCTYPE html>
<html>
<head>
<title>Places Wishlist</title>
<link rel="stylesheet" href="popup.css">
</head>
<body>
<h1>Places Wishlist</h1>
<input type="text" id="placeInput" placeholder="Add a place..." />
<button id="addButton">Add</button>
<ul id="wishlist"></ul>

<script src="popup.js"></script>
</body>
</html>
44 changes: 44 additions & 0 deletions submissions/Places to Visit Wishlist/popup.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
document.addEventListener('DOMContentLoaded', () => {
const placeInput = document.getElementById('placeInput');
const addButton = document.getElementById('addButton');
const wishlist = document.getElementById('wishlist');

function renderList(places) {
wishlist.innerHTML = '';
places.forEach((place, index) => {
const li = document.createElement('li');
li.textContent = place;

const deleteBtn = document.createElement('span');
deleteBtn.textContent = '❌';
deleteBtn.className = 'delete-btn';
deleteBtn.addEventListener('click', () => {
places.splice(index, 1);
chrome.storage.sync.set({ places });
renderList(places);
});

li.appendChild(deleteBtn);
wishlist.appendChild(li);
});
}

chrome.storage.sync.get(['places'], (result) => {
const places = result.places || [];
renderList(places);
});

addButton.addEventListener('click', () => {
const newPlace = placeInput.value.trim();
if (newPlace) {
chrome.storage.sync.get(['places'], (result) => {
const places = result.places || [];
places.push(newPlace);
chrome.storage.sync.set({ places }, () => {
renderList(places);
placeInput.value = '';
});
});
}
});
});