mirror of
https://github.com/pawroman/zola-theme-terminimal.git
synced 2025-01-09 20:21:06 +01:00
Multilingual sites supports
This commit is contained in:
parent
360a6f6207
commit
566d04e7e1
46
sass/menu.scss
Normal file
46
sass/menu.scss
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
@import "variables";
|
||||||
|
|
||||||
|
.menu--language-selector {
|
||||||
|
&.menu {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
position: relative;
|
||||||
|
list-style: none;
|
||||||
|
padding: 0;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
&.open {
|
||||||
|
.menu__dropdown {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.menu {
|
||||||
|
&__trigger {
|
||||||
|
color: var(--accent);
|
||||||
|
border: 2px solid;
|
||||||
|
margin-left: 10px;
|
||||||
|
height: 100%;
|
||||||
|
padding: 3px 8px;
|
||||||
|
margin-bottom: 0 !important;
|
||||||
|
position: relative;
|
||||||
|
cursor: pointer;
|
||||||
|
}
|
||||||
|
&__dropdown {
|
||||||
|
left: auto;
|
||||||
|
right: 0;
|
||||||
|
display: none;
|
||||||
|
flex-direction: column;
|
||||||
|
position: absolute;
|
||||||
|
background: var(--background);
|
||||||
|
box-shadow: 0 10px var(--background), -10px 10px var(--background), 10px 10px var(--background);
|
||||||
|
color: var(--accent);
|
||||||
|
border: 2px solid var(--accent);
|
||||||
|
margin: 0;
|
||||||
|
padding: 10px;
|
||||||
|
top: 10px;
|
||||||
|
left: 0;
|
||||||
|
list-style: none;
|
||||||
|
z-index: 99;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -3,6 +3,7 @@
|
||||||
@import 'header';
|
@import 'header';
|
||||||
@import 'logo';
|
@import 'logo';
|
||||||
@import 'main';
|
@import 'main';
|
||||||
|
@import 'menu';
|
||||||
@import 'post';
|
@import 'post';
|
||||||
@import 'pagination';
|
@import 'pagination';
|
||||||
@import 'footer';
|
@import 'footer';
|
||||||
|
|
44
static/js/menu.js
Normal file
44
static/js/menu.js
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
const container = document.querySelector(".container");
|
||||||
|
const allMenus = document.querySelectorAll(".menu");
|
||||||
|
|
||||||
|
// Hide menus on body click
|
||||||
|
document.body.addEventListener("click", () => {
|
||||||
|
allMenus.forEach(menu => {
|
||||||
|
if (menu.classList.contains("open")) {
|
||||||
|
menu.classList.remove("open");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Reset menus on resize
|
||||||
|
window.addEventListener("resize", () => {
|
||||||
|
allMenus.forEach(menu => {
|
||||||
|
menu.classList.remove("open");
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
// Handle desktop menu
|
||||||
|
allMenus.forEach(menu => {
|
||||||
|
const trigger = menu.querySelector(".menu__trigger");
|
||||||
|
const dropdown = menu.querySelector(".menu__dropdown");
|
||||||
|
|
||||||
|
trigger.addEventListener("click", e => {
|
||||||
|
e.stopPropagation();
|
||||||
|
|
||||||
|
if (menu.classList.contains("open")) {
|
||||||
|
menu.classList.remove("open");
|
||||||
|
} else {
|
||||||
|
// Close all menus...
|
||||||
|
allMenus.forEach(m => m.classList.remove("open"));
|
||||||
|
// ...before opening the current one
|
||||||
|
menu.classList.add("open");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (dropdown.getBoundingClientRect().right > container.getBoundingClientRect().right) {
|
||||||
|
dropdown.style.left = "auto";
|
||||||
|
dropdown.style.right = 0;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
dropdown.addEventListener("click", e => e.stopPropagation());
|
||||||
|
});
|
|
@ -60,6 +60,8 @@
|
||||||
</div>
|
</div>
|
||||||
{%- if page %}
|
{%- if page %}
|
||||||
{{ language_menu_macros::menu(page=page) }}
|
{{ language_menu_macros::menu(page=page) }}
|
||||||
|
{%- elif section %}
|
||||||
|
{{ language_menu_macros::menu(page=section) }}
|
||||||
{% endif -%}
|
{% endif -%}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
@ -133,6 +135,7 @@
|
||||||
{% endblock footer %}
|
{% endblock footer %}
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
<script type="text/javascript" src="/js/menu.js"></script>
|
||||||
{%- block extra_body %}
|
{%- block extra_body %}
|
||||||
{% endblock extra_body -%}
|
{% endblock extra_body -%}
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
{% macro menu(page) %}
|
{% macro menu(page) %}
|
||||||
<ul class="menu menu--desktop menu--language-selector">
|
<ul class="menu menu--desktop menu--language-selector">
|
||||||
<li class="menu__trigger">Language ▾</li>
|
<li class="menu__trigger">{{ trans(key="Language", lang=page.lang) }} ▾</li>
|
||||||
<li>
|
<li>
|
||||||
<ul class="menu__dropdown">
|
<ul class="menu__dropdown">
|
||||||
{%- for item in page.translations %}
|
{%- for item in page.translations %}
|
||||||
<li><a href="{{ item.permalink }}">{{ item.lang }}</a></li>
|
<li><a href="{{ item.permalink }}">{{ trans(key=item.lang, lang=page.lang) }}</a></li>
|
||||||
{% endfor -%}
|
{% endfor -%}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
|
|
Loading…
Reference in a new issue