Skip to content

Instantly share code, notes, and snippets.

@dimiro1
Last active June 1, 2019 17:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dimiro1/e20a9a6dccf0a08cd5db8691addab7aa to your computer and use it in GitHub Desktop.
Save dimiro1/e20a9a6dccf0a08cd5db8691addab7aa to your computer and use it in GitHub Desktop.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>Document</title>
<!--suppress CssUnusedSymbol -->
<style>
body {
padding: 0;
margin: 0;
font-family: "Helvetica", "Helvetica Neue", "Arial", sans-serif;
background-color: #f5f1ea;
}
.header {
background-color: transparent;
color: black;
padding: 20px;
position: sticky;
top: 0;
}
.header--scrolling {
background-color: white;
box-shadow: 0 0 5px #aaa;
}
.header-title {
color: #000000;
text-transform: uppercase;
font-size: 18px;
padding: 0;
margin: 0;
}
.article {
border-bottom: 1px dashed #ccc;
padding: 20px;
}
.article-text {
padding: 0;
margin: 0;
font-weight: bold;
font-size: 18px;
}
.article-button {
border: none;
color: white;
padding: 5px 10px;
cursor: pointer;
border-radius: 3px;
}
.article-button:hover {
box-shadow: 1px 1px 2px #999999;
}
.article-button--dislike {
background-color: #ff3b30;
}
.article-button--like {
background-color: #28cd41;
}
</style>
</head>
<body>
<header
data-controller="header"
data-target="header.header"
data-action="scroll@window->header#onScroll"
class="header">
<h1 class="header-title">FRAEND</h1>
</header>
<section>
<article data-controller="article" class="article" data-article-count="10">
<h1 class="article-text">T-Shirt "HEART"</h1>
<p data-target="article.likesCount" class="article-count">10 likes</p>
<button
data-action="article#dislike"
class="article-button article-button--dislike">
Dislike
</button>
<button
data-action="article#like"
class="article-button article-button--like">
Like
</button>
</article>
<article data-controller="article" class="article" data-article-count="10">
<h1 class="article-text">
Kit Inoar Argan Oil System Argan Oil Salon Duo (2 Produtos)
</h1>
<p data-target="article.likesCount" class="article-count">10 likes</p>
<button
data-action="article#dislike"
class="article-button article-button--dislike">
Dislike
</button>
<button
data-action="article#like"
class="article-button article-button--like">
Like
</button>
</article>
<article data-controller="article" class="article" data-article-count="10">
<h1 class="article-text">T-Shirt "HEART"</h1>
<p data-target="article.likesCount" class="article-count">10 likes</p>
<button
data-action="article#dislike"
class="article-button article-button--dislike">
Dislike
</button>
<button
data-action="article#like"
class="article-button article-button--like">
Like
</button>
</article>
<article data-controller="article" class="article" data-article-count="10">
<h1 class="article-text">
Kit Inoar Argan Oil System Argan Oil Salon Duo (2 Produtos)
</h1>
<p data-target="article.likesCount" class="article-count">10 likes</p>
<button
data-action="article#dislike"
class="article-button article-button--dislike">
Dislike
</button>
<button
data-action="article#like"
class="article-button article-button--like">
Like
</button>
</article>
<article data-controller="article" class="article" data-article-count="10">
<h1 class="article-text">T-Shirt "HEART"</h1>
<p data-target="article.likesCount" class="article-count">10 likes</p>
<button
data-action="article#dislike"
class="article-button article-button--dislike">
Dislike
</button>
<button
data-action="article#like"
class="article-button article-button--like">
Like
</button>
</article>
<article data-controller="article" class="article" data-article-count="10">
<h1 class="article-text">
Kit Inoar Argan Oil System Argan Oil Salon Duo (2 Produtos)
</h1>
<p data-target="article.likesCount" class="article-count">10 likes</p>
<button
data-action="article#dislike"
class="article-button article-button--dislike">
Dislike
</button>
<button
data-action="article#like"
class="article-button article-button--like">
Like
</button>
</article>
</section>
<script src="https://unpkg.com/stimulus@1.1.1/dist/stimulus.umd.js"></script>
<!--suppress JSUnresolvedVariable, JSMismatchedCollectionQueryUpdate -->
<script>
(() => {
const application = Stimulus.Application.start();
class Header extends Stimulus.Controller {
static get targets() {
return ["header"];
}
onScroll() {
let scrollPosY = window.pageYOffset | window.scrollY;
this.headerTarget.classList.toggle(
"header--scrolling",
scrollPosY > 0
);
}
}
class ArticleController extends Stimulus.Controller {
static get targets() {
return ["likesCount"];
}
like(event) {
event.preventDefault();
event.stopImmediatePropagation();
let counter = parseInt(this.data.get("count")) + 1;
this.data.set("count", counter);
this.likesCountTarget.innerText = `${counter} likes`;
}
dislike(event) {
event.preventDefault();
event.stopImmediatePropagation();
let counter = parseInt(this.data.get("count"));
if (counter > 0) {
counter--;
this.data.set("count", counter);
this.likesCountTarget.innerText = `${counter} likes`;
}
}
}
application.register("header", Header);
application.register("article", ArticleController);
})();
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment