summaryrefslogtreecommitdiff
path: root/_includes/views/header.html
blob: 835d4cb9eb35a3c007cd34d94b0d984bb206aaa3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
{%- include functions.html func='log' level='debug' msg='Get banner value' -%}
{% assign name = 'banner' %}
{%- include functions.html func='get_value' -%}
{% assign banner = return %}

{%- include functions.html func='log' level='debug' msg='Get header_transparent value' -%}
{% assign name = 'header_transparent' %}
{%- include functions.html func='get_value' -%}
{% assign header_transparent = return %}

{%- if banner and header_transparent -%}
  {%- assign header_transparent_class = "site-header-transparent" -%}
{%- endif -%}

<header class="site-header {{ header_transparent_class }}" role="banner">

  <div class="wrapper">
    <div class="site-header-inner">
      {%- assign default_paths = site.pages | where: "dir", "/" | map: "path" -%}
      {%- assign page_paths = site.header_pages | default: default_paths -%}

      <span class="site-brand">
        {%- include views/site-brand.html -%}
      </span>

      {%- if page_paths -%}
        <nav class="site-nav">
          <input type="checkbox" id="nav-trigger" class="nav-trigger" />
          <label for="nav-trigger">
            <span class="menu-icon">
              <svg viewBox="0 0 18 15" width="18px" height="15px">
                <path d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z"/>
              </svg>
            </span>
          </label>

          <div class="trigger">
            {%- for path in page_paths -%}
              {%- assign my_page = site.pages | where: "path", path | first -%}
              {%- if my_page.title -%}
              <a class="page-link" href="{{ my_page.url | relative_url }}">
                {{ my_page.title | upcase | escape }}
              </a>
              {%- endif -%}
            {%- endfor -%}

            {%- assign name = 'translate_langs' -%}
            {%- include functions.html func='get_value' -%}
            {%- assign translate_langs = return -%}
            {%- if translate_langs.size > 0 -%}
              <span class="page-link">
                  {%- include extensions/google-translate.html -%}
              </span>
            {%- endif -%}
          </div>
        </nav>
      {%- endif -%}
    </div>
  </div>
</header>

<script>
  (function() {
    var supportPageOffset = window.pageXOffset !== undefined;
    var isCSS1Compat = ((document.compatMode || "") === "CSS1Compat");

    function scrollY() {
      return supportPageOffset ? window.pageYOffset : isCSS1Compat ? document.documentElement.scrollTop : document.body.scrollTop;
    }

    var lastScrollY = scrollY();
    var dataset = document.documentElement.dataset;

    function storeScrollData() {
      var y = scrollY();

      {%- if banner and header_transparent -%}
      dataset.headerTransparent = "";
      {%- endif -%}

      var scrollStatus = "";

      if (y <= 0) {
        scrollStatus = "top";
      } else if ((window.innerHeight + y) >= document.body.offsetHeight) {
        scrollStatus = "bottom";
      } else {
        var isScrollDown = (y - lastScrollY > 0) ? true : false;
        scrollStatus = isScrollDown ? "down" : "up";
      }

      lastScrollY = y;
      dataset.scrollStatus = scrollStatus;
    }

    window.addEventListener('scroll', function(e) {
      storeScrollData();
    });

    storeScrollData();
  })();
</script>