Web-Development icon indicating copy to clipboard operation
Web-Development copied to clipboard

To-Do List Web App

Open 17AnuragMishra opened this issue 2 years ago • 1 comments

To Do List

<link rel="stylesheet" href="todo.css" />
:root { --dark: #34222E; --darker: #1F2937; --darkest: #111827; --grey: #6B7280; --pink: #EC4899; --purple: #8B5CF6; --light: #EEE; }
  • { margin: 10; box-sizing: border-box; font-family: "Fira sans", sans-serif; }

body { display: flex; flex-direction: grid; min-height: 100px; color: #FFF; background-color: var(--dark); }

header { padding: 2rem 1rem; max-width: 800px; width: 100%; margin: 0 auto; }

header h1{ font-size: 2.5rem; font-weight: 300; color: var(--grey); margin-bottom: 1rem; }

#new-plan-form { display: flex;; }

input, button { appearance: none; border: none; outline: none; background: none; }

#new-plan-input { flex: 1 1 0%; background-color: var(--darker); padding: 1rem; border-radius: 1rem; margin-right: 1rem; color: var(--light); font-size: 1.25rem; }

#new-plan-input::placeholder { color: var(--grey); }

#new-plan-submit { color: var(--pink); font-size: 1.25rem; font-weight: 700; background-image: linear-gradient(to right, var(--pink), var(--purple)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; cursor: pointer; transition: 0.4s; }

#new-plan-submit:hover { opacity: 0.8; }

#new-plan-submit:active { opacity: 0.6; }

main { flex: 1 1 0%; max-width: 800px; width: 100%; margin: 0 auto; }

.plan-list { padding: 1rem; }

.plan-list h2 { margin-top: 40px; font-size: 1.5rem; font-weight: 300; color: var(--grey); margin-bottom: 1rem; }

#plans .plan { display: flex; justify-content: space-between; background-color: var(--darkest); padding: 1rem; border-radius: 1rem; margin-bottom: 1rem; }

.plan .content { flex: 1 1 0%; }

.plan .content .text { color: var(--light); font-size: 1.125rem; width: 100%; display: block; transition: 0.4s; }

.plan .content .text:not(:read-only) { color: var(--pink); }

.plan .actions { display: flex; margin: 0 -0.5rem; }

.plan .actions button { cursor: pointer; margin: 0 0.5rem; font-size: 1.125rem; font-weight: 700; text-transform: uppercase; transition: 0.4s; }

.plan .actions button:hover { opacity: 0.8; }

.plan .actions button:active { opacity: 0.6; }

.plan .actions .edit { background-image: linear-gradient(to right, var(--pink), var(--purple)); -webkit-background-clip: text; -webkit-text-fill-color: transparent; }

.plan .actions .delete { color: crimson; }

<header>
	<h1>To Do List </h1>
	<form id="new-plan-form">
		<input 
			type="text" 
			name="new-plan-input" 
			id="new-plan-input" 
			placeholder="What do you have planned?" />
		<input 
			type="submit"
			id="new-plan-submit" 
			value="Add plan" />
	</form>
</header>
<main>
	<section class="plan-list">
		<h2>Your Plans/Task</h2>

		<div id="plans">

			<div class="plan">
				<div class="content">
					<input 
						type="text" 
						class="text" 
						value="A new plan"
						readonly>
				</div>
				<div class="actions">
					<button class="edit">Edit</button>
					<button class="delete">Delete</button>
				</div>
			</div>

		</div>
	</section>
</main>

<script src="main.js"></script>
    window.addEventListener('load', () => {
const form = document.querySelector("#new-plan-form");
const input = document.querySelector("#new-plan-input");
const list_el = document.querySelector("#plans");

form.addEventListener('submit', (e) => {
	e.preventDefault();

	const plan = input.value;

	const plan_el = document.createElement('div');
	plan_el.classList.add('plan');

	const plan_content_el = document.createElement('div');
	plan_content_el.classList.add('content');

	plan_el.appendChild(plan_content_el);

	const plan_input_el = document.createElement('input');
	plan_input_el.classList.add('text');
	plan_input_el.type = 'text';
	plan_input_el.value = plan;
	plan_input_el.setAttribute('readonly', 'readonly');

	plan_content_el.appendChild(plan_input_el);

	const plan_actions_el = document.createElement('div');
	plan_actions_el.classList.add('actions');
	
	const plan_edit_el = document.createElement('button');
	plan_edit_el.classList.add('edit');
	plan_edit_el.innerText = 'Edit';

	const plan_delete_el = document.createElement('button');
	plan_delete_el.classList.add('delete');
	plan_delete_el.innerText = 'Delete';

	plan_actions_el.appendChild(plan_edit_el);
	plan_actions_el.appendChild(plan_delete_el);

	plan_el.appendChild(plan_actions_el);

	list_el.appendChild(plan_el);

	input.value = '';

	plan_edit_el.addEventListener('click', (e) => {
		if (plan_edit_el.innerText.toLowerCase() == "edit") {
			plan_edit_el.innerText = "Save";
			plan_input_el.removeAttribute("readonly");
			plan_input_el.focus();
		} else {
			plan_edit_el.innerText = "Edit";
			plan_input_el.setAttribute("readonly", "readonly");
		}
	});

	plan_delete_el.addEventListener('click', (e) => {
		list_el.removeChild(plan_el);
	});
});

});

17AnuragMishra avatar Sep 24 '23 05:09 17AnuragMishra

What is the issue in this?

Milanrao98 avatar Jan 03 '25 13:01 Milanrao98