convert home to alpine
This commit is contained in:
parent
4f8f01aa95
commit
77074c47bf
9 changed files with 159 additions and 42 deletions
|
|
@ -1,45 +1,31 @@
|
||||||
function toggleTab(event, tabName) {
|
function openTab(data, tab) {
|
||||||
hideAllTabs(event)
|
data.activeTab === tab ? (data.activeTab = "") : (data.activeTab = tab);
|
||||||
|
|
||||||
const button =
|
|
||||||
event.target.tagName === "BUTTON"
|
|
||||||
? event.target
|
|
||||||
: event.target.closest("button")
|
|
||||||
// const buttonTop = button.offsetTop
|
|
||||||
const icon = button.querySelector(".more-less-icon")
|
|
||||||
const article = document.querySelector("#" + tabName)
|
|
||||||
|
|
||||||
icon.textContent = icon.textContent === "+" ? "-" : "+"
|
|
||||||
button.classList.toggle("open")
|
|
||||||
article.classList.toggle("hidden")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function hideAllTabs(event) {
|
function scrollToElem(selector) {
|
||||||
const tabContainer = event.target.closest("toggle")
|
setTimeout(() => {
|
||||||
const buttons = document.querySelectorAll(".toggle-btn")
|
const yOffset = -185;
|
||||||
const articles = document.querySelectorAll(".tab")
|
const elem = document.querySelector(selector);
|
||||||
|
const top = elem.getBoundingClientRect().top;
|
||||||
buttons.forEach((btn) => {
|
window.scrollTo({
|
||||||
btn.classList.remove("open")
|
top: top + window.scrollY + yOffset,
|
||||||
btn.querySelector(".more-less-icon").textContent = "+"
|
behavior: "smooth",
|
||||||
})
|
});
|
||||||
articles.forEach((article) => {
|
}, 100);
|
||||||
article.classList.add("hidden")
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
document.addEventListener("DOMContentLoaded", () => {
|
document.addEventListener("DOMContentLoaded", () => {
|
||||||
function toggleLogoState() {
|
function toggleLogoState() {
|
||||||
const scrollY = window.scrollY || window.pageYOffset
|
const scrollY = window.scrollY || window.pageYOffset;
|
||||||
|
|
||||||
if (scrollY > 10) {
|
if (scrollY > 10) {
|
||||||
document.querySelector("#header").classList.add("minimized")
|
document.querySelector("#header").classList.add("minimized");
|
||||||
} else {
|
} else {
|
||||||
document.querySelector("#header").classList.remove("minimized")
|
document.querySelector("#header").classList.remove("minimized");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
window.addEventListener("scroll", () => {
|
window.addEventListener("scroll", () => {
|
||||||
toggleLogoState()
|
toggleLogoState();
|
||||||
})
|
});
|
||||||
})
|
});
|
||||||
|
|
|
||||||
|
|
@ -10,6 +10,11 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ================= RESET ================= */
|
/* ================= RESET ================= */
|
||||||
|
body,
|
||||||
|
html {
|
||||||
|
scroll-behavior: smooth;
|
||||||
|
}
|
||||||
|
|
||||||
html,
|
html,
|
||||||
body,
|
body,
|
||||||
h1,
|
h1,
|
||||||
|
|
@ -166,6 +171,10 @@ button {
|
||||||
align-items: center;
|
align-items: center;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
article p {
|
||||||
|
margin-bottom: var(--unit--vertical);
|
||||||
|
}
|
||||||
|
|
||||||
/* ================= HEADER ================= */
|
/* ================= HEADER ================= */
|
||||||
#header {
|
#header {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
|
|
@ -351,17 +360,33 @@ h2.left.open::before {
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
}
|
}
|
||||||
|
|
||||||
#content {
|
button.toggle.open {
|
||||||
margin-top: calc(var(--unit--vertical) * 2);
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
.toggle-btn--left .more-less-icon {
|
button.toggle.left::after {
|
||||||
margin-left: var(--unit--horizontal);
|
margin-left: var(--unit--horizontal);
|
||||||
}
|
}
|
||||||
|
button.toggle.left.close::after {
|
||||||
|
content: "+";
|
||||||
|
}
|
||||||
|
button.toggle.left.open::after {
|
||||||
|
content: "-";
|
||||||
|
}
|
||||||
|
|
||||||
.toggle-btn--right .more-less-icon {
|
button.toggle.right::before {
|
||||||
margin-right: var(--unit--horizontal);
|
margin-right: var(--unit--horizontal);
|
||||||
}
|
}
|
||||||
|
button.toggle.right.close::before {
|
||||||
|
content: "+";
|
||||||
|
}
|
||||||
|
button.toggle.right.open::before {
|
||||||
|
content: "-";
|
||||||
|
}
|
||||||
|
|
||||||
|
.content {
|
||||||
|
margin-top: calc(var(--unit--vertical) * 2);
|
||||||
|
}
|
||||||
|
|
||||||
/* ================= ARTICLES LIST ================= */
|
/* ================= ARTICLES LIST ================= */
|
||||||
#articles {
|
#articles {
|
||||||
|
|
|
||||||
|
|
@ -1 +1,5 @@
|
||||||
Title: Error
|
Title: Error
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Uuid: atOcJYYJAw8Buk3z
|
||||||
|
|
@ -1 +1,5 @@
|
||||||
Title: Home
|
Title: Home
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Uuid: Ie9MrbnsQDy1oSUB
|
||||||
|
|
@ -1 +1,5 @@
|
||||||
Title: Site Title
|
Title: actuel / inactuel
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
Edito: <p>Leo tortor nunc placerat adipiscing diam elementum facilisis nunc elit eget nisl suspendisse accumsan tincidunt nisi urna sit leo arcu suspendisse eu congue eget id.</p><p>Et sollicitudin massa sem commodo elementum phasellus arcu diam purus tempus ex mi condimentum interdum maecenas scelerisque sed elit sem eget elit vel et a.</p><p>Ac rutrum elementum purus cursus quisque aliquam scelerisque scelerisque metus eu bibendum et euismod ac quisque aliquam tortor amet sollicitudin sit lorem portaest adipiscing sollicitudin.</p><p>Commodo morbi magna bibendum ut sem arcu ipsum maecenas vivamus quis tempus lacus urna quis morbi enim tincidunt nisi placerat quisque euismod eget tristique nunc.</p><p>Molestie cursus ex tempus varius gravida phasellus placerat quam varius maecenas nisl nunc facilisis nunc condimentum et mi purus interdum orci quis sollicitudin enim dolor.</p>
|
||||||
|
|
@ -1,5 +1,12 @@
|
||||||
title: Site
|
title: Site
|
||||||
|
|
||||||
sections:
|
tabs:
|
||||||
pages:
|
contentTab:
|
||||||
type: pages
|
label: Contenu
|
||||||
|
sections:
|
||||||
|
fieldsSection:
|
||||||
|
label: Contenu
|
||||||
|
type: fields
|
||||||
|
fields:
|
||||||
|
edito:
|
||||||
|
type: writer
|
||||||
|
|
|
||||||
2
site/snippets/footer.php
Normal file
2
site/snippets/footer.php
Normal file
|
|
@ -0,0 +1,2 @@
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
36
site/snippets/header.php
Normal file
36
site/snippets/header.php
Normal file
|
|
@ -0,0 +1,36 @@
|
||||||
|
<!DOCTYPE html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title><?= $site->title() ?><?= e($page->url() !== $site->url(), '-' . $page->title()) ?></title>
|
||||||
|
<link rel="stylesheet" href="assets/style.css" />
|
||||||
|
<script src="assets/script.js" defer></script>
|
||||||
|
<script defer src="https://cdn.jsdelivr.net/npm/alpinejs@3.x.x/dist/cdn.min.js"></script>
|
||||||
|
<meta name="robots" content="noindex">
|
||||||
|
</head>
|
||||||
|
<body class="grid">
|
||||||
|
<header id="header">
|
||||||
|
<div id="logo">
|
||||||
|
<a href="/">
|
||||||
|
<h1 id="actuel">actuel</h1>
|
||||||
|
<h1 id="inactuel">inactuel</h1>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
<nav class="grid">
|
||||||
|
<div id="logo-nav">
|
||||||
|
<h1 id="actuel-nav">actuel</h1>
|
||||||
|
<h1 id="inactuel-nav">inactuel</h1>
|
||||||
|
</div>
|
||||||
|
<ul id="spaces">
|
||||||
|
<li>
|
||||||
|
<a href="#">accueil</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="#">proposer une idée / un texte</a>
|
||||||
|
</li>
|
||||||
|
<li><a href="#">équipe</a></li>
|
||||||
|
<li><a href="#">mentions légales</a></li>
|
||||||
|
</ul>
|
||||||
|
</nav>
|
||||||
|
</header>
|
||||||
49
site/templates/home.php
Normal file
49
site/templates/home.php
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
<?php snippet('header') ?>
|
||||||
|
<main>
|
||||||
|
<h2 id="baseline">
|
||||||
|
critique des arts<br />
|
||||||
|
et des techniques
|
||||||
|
</h2>
|
||||||
|
<div id="tabs" x-data="{
|
||||||
|
activeTab: ''
|
||||||
|
}">
|
||||||
|
<div class="toggle-btns">
|
||||||
|
<button
|
||||||
|
class="toggle left"
|
||||||
|
:class="activeTab === 'edito' ? 'open' : 'close'"
|
||||||
|
@click="[openTab($data, 'edito'), scrollToElem('.content')]"
|
||||||
|
>éditorial</button>
|
||||||
|
<button
|
||||||
|
class="toggle right"
|
||||||
|
:class="activeTab === 'articles' ? 'open' : 'close'"
|
||||||
|
@click="[openTab($data, 'articles'), scrollToElem('.content')]"
|
||||||
|
>articles</button>
|
||||||
|
</div>
|
||||||
|
<div class="content">
|
||||||
|
<article x-show="activeTab === 'edito'">
|
||||||
|
<?= $site->edito() ?>
|
||||||
|
</article>
|
||||||
|
<ul x-show="activeTab === 'articles'">
|
||||||
|
<li class="article">
|
||||||
|
<a href="/article.html" class="article__title">
|
||||||
|
<strong
|
||||||
|
><em
|
||||||
|
>Le timbre dans l'<em>Inhumain</em> de Jean-François
|
||||||
|
Lyotard,</em
|
||||||
|
></strong
|
||||||
|
><br />
|
||||||
|
</a>
|
||||||
|
<div class="article__infos">
|
||||||
|
<button class="author">Cécile Fournel</button>,
|
||||||
|
<p>16 novembre 2023</p>
|
||||||
|
</div>
|
||||||
|
<div class="article__labels">
|
||||||
|
<button class="label label--year">1987</button>
|
||||||
|
<button class="label label--category">livre</button>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</main>
|
||||||
|
<?php snippet('footer') ?>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue