JSFiddle - React, Tailwind, and code Playground

HTML

<!DOCTYPE html>
<html>
<head>
	<title>TO DO LIST</title>
	<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css" integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf" crossorigin="anonymous">
	<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
	<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
	<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
	<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
	<link rel="stylesheet" type="text/css" href="css/toDo.css">
</head>
<body>
	<section class="task-wrap mt-5">
		<div class="container">
			<div class="card mb-3">
				<div class="card-header">
					Add Task
				</div>
				<div class="card-body">
					<form name="addTaskItem">
						<div class="form-group">
							<label for="todoText">Text</label>
							<input type="text" class="form-control" id="todoText">
							<div class="invalid-feedback">
								Please enter some text
							</div>
						</div>
						<button type="submit" class="btn btn-primary">ADD</button>
					</form>
				</div>
			</div>
			<div class="card info-block mb-3"></div>
			<div class="card mb-3">
				<div class="card-header">
				Task List
				</div>
				<div class="card-body">
					<ul class="list-group task-list mb-5">
						<div class="alert alert-info alert-block">Task List Is Empty</div>
					</ul>	
				</div>	
			</div>
			<button class="btn...

CSS

body {
	width: 100%;
	height: 100%;
	background: #f9c667; /* Old browsers */
	background: -moz-radial-gradient(center, ellipse cover, #f9c667 0%, #f79621 100%); /* FF3.6-15 */
	background: -webkit-radial-gradient(center, ellipse cover, #f9c667 0%,#f79621 100%); /* Chrome10-25,Safari5.1-6 */
	background: radial-gradient(ellipse at center, #f9c667 0%,#f79621 100%);
}

.container {
	width: 60vw;
}
.del {
	color: #FA8072;
}

.del:hover,
.clear-btn:hover {
	cursor: pointer;
}

.del {
	color: #FF0000;
}

.task-list {
	list-style: none;
}

.alert-block {
	display: block;
	margin: 5px;
	line-height: 10vh; 
	text-align: center;
	font-family: Geneva, Arial, Helvetica, sans-serif;
	font-size: 25px;
	opacity: 0;
}

.info-block {
	height: 10vh;
	text-align: center;
	line-height: 10vh;
	opacity: 0;
}

.info-block-active {
	opacity: 1;
	height: 10vh;
	text-align: center;
	line-height: 10vh;
	opacity: 0;
}

.alert-block-active {
	opacity: 1;
}

JavaScript

window.onload = function() {
	checkList(taskList);
};

let taskList = JSON.parse(localStorage.getItem('tasks')) || [];

let ul = document.querySelector('.list-group');
let formAdd = document.forms['addTaskItem'];

let btnClearList = document.querySelector('#clear-all-list');
let inputTaskItem = formAdd.elements['todoText'];

let confirmOperationBlock = document.getElementsByClassName('info-block')[0];
let operationStus; // true = add; false = delete

let timer;


//Создание Элемента LI
function createItem(task){
	let li = document.createElement('li'); // создаем динамически лишку
	li.textContent = task; // вешаем ей текст с таском
	li.className = 'list-group-item d-flex align-items-center'; // даем классы бутстрапа для форматирования вида
	// Create icon delete 
	let iDelete = document.createElement('i'); // создаем иконку с корзиной
	iDelete.className = 'fas fa-trash-alt delete-item ml-auto del';

	// append iDelete to li
	li.appendChild(iDelete); // добавляем лишке иконку
	return li;
}

// ADD ONE LI element 
function insertTask(taskElement){ //
	if(taskElement){ 
		inputTaskItem.classList.remove('is-invalid'); // убираем класс для отображения предупреждения
		taskList.push(taskElement); // добавить в массив новый элемент с текстом таска
		ul.insertAdjacentElement('afterbegin', createItem(inputTaskItem.value)); //добавить єлемент в разметку
		formAdd.reset(); // обновляю форму что бы пропал блок с сообщением об пустой строке
	}else{
		inputTaskItem.classList.add('is-invalid');
	}

	checkList(taskList);

}

//ADD ITEM
function addOneTask(e){
	e.preventDefault(); // отменяем обновление формы при нажатии на кнопку в форму
	insertTask(inputTaskItem.value); // вызываем функцию добавления
	operationStus = true;
	confirmOperation(operationStus);// подтверждение операции
	// ADD to LOCALSTORAGE создаем массив в локальном хранилище
	// и добавляем в него новые элементы при добавлении таска
	// при этом происходит обновление всего массива; для удаление тоже...