Skip to content

Commit

Permalink
👑 JavaScript 30 - Checkboxes shift select
Browse files Browse the repository at this point in the history
  • Loading branch information
jaiimeriios committed Apr 4, 2021
1 parent ee46ba1 commit ff01bc4
Showing 1 changed file with 129 additions and 0 deletions.
129 changes: 129 additions & 0 deletions 14 wes bos javascript30/10 checkbox/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="UTF-8">
<title>Hold Shift to Check Multiple Checkboxes</title>
</head>

<style>
html {
font-family: sans-serif;
background: #364658;
}

html,
body {
margin: 0;
padding: 0;
}

.inbox {
max-width: 400px;
margin: 50px auto;
background: white;
border-radius: 5px;
box-shadow: 10px 10px 0 rgba(0, 0, 0, 0.1);
}

.item {
display: flex;
align-items: center;
border-bottom: 1px solid #F1F1F1;
}

.item:last-child {
border-bottom: 0;
}

input[type="checkbox"] {
margin: 20px;
cursor: pointer;
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.2);
}

input:checked+p {
background: #F9F9F9;
text-decoration: line-through;
}

p {
margin: 0;
padding: 15px 10px;
transition: all 0.2s;
flex: 1;
font-size: 16px;
line-height: 20px;
border-left: 1px solid #F1F1F1;
}
</style>

<body>
<div class="inbox">
<div class="item">
<input type="checkbox">
<p>This is an inbox layout.</p>
</div>
<div class="item">
<input type="checkbox">
<p>Check one item</p>
</div>
<div class="item">
<input type="checkbox">
<p>Hold down your Shift key</p>
</div>
<div class="item">
<input type="checkbox">
<p>Check a lower item</p>
</div>
<div class="item">
<input type="checkbox">
<p>Everything in between should also be set to checked</p>
</div>
<div class="item">
<input type="checkbox">
<p>Try to do it without any libraries</p>
</div>
<div class="item">
<input type="checkbox">
<p>Just regular JavaScript</p>
</div>
<div class="item">
<input type="checkbox">
<p>Good Luck!</p>
</div>
<div class="item">
<input type="checkbox">
<p>Don't forget to tweet your result!</p>
</div>
</div>

<script>
const checkBoxes = document.querySelectorAll('.inbox input[type="checkbox"]')
let lastChecked;

checkBoxes.forEach((checkbox) => {
checkbox.addEventListener('click', handleCheck)
})

function handleCheck(e) {

let inBetween = false

if (e.shiftKey && this.checked) {
checkBoxes.forEach((checkbox) => {
if (checkbox === this || checkbox === lastChecked) {
inBetween = !inBetween
}
if (inBetween) {
checkbox.checked = true
}
})
}
lastChecked = this
}
</script>

</body>

</html>

0 comments on commit ff01bc4

Please sign in to comment.