just-the-docs 0.6.2 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +75 -6
- data/_includes/components/breadcrumbs.html +28 -20
- data/_includes/{nav.html → components/nav.html} +1 -1
- data/_includes/components/sidebar.html +5 -56
- data/_includes/components/site_nav.html +67 -0
- data/_includes/css/activation.scss.liquid +169 -60
- data/_includes/head.html +8 -4
- data/assets/css/just-the-docs-head-nav.css +24 -0
- data/assets/js/just-the-docs.js +19 -8
- metadata +5 -4
- data/_includes/head_nav.html +0 -48
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6b96a130e7da963319bffcbfc09ce39881f538bfe8b56f2809251d29ab7aeb40
|
|
4
|
+
data.tar.gz: 7a1ec7d332331653d64e2adc7e8f157adf4fbb8f0041261f0b165032861b47ca
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: f033dfe192101707e7b6bebea2b6b0628a5d8a401a32bc6adda5bc483b126af8f98efa7eaf51dc62e399d0dfea09d39d96a91cf5c31b4a1c53d07fcb96a1a288
|
|
7
|
+
data.tar.gz: 5e9203f6620f854339e979b74811f677357baf57746aba62d242ffe1cc1f58de0eff2e8a8596e2377f317d65af6ad8e9b379a6a532e637b7bb32404f068a216e
|
data/CHANGELOG.md
CHANGED
|
@@ -19,6 +19,75 @@ Code changes to `main` that are *not* in the latest release:
|
|
|
19
19
|
|
|
20
20
|
- N/A
|
|
21
21
|
|
|
22
|
+
## Release v0.7.0
|
|
23
|
+
|
|
24
|
+
Hi folks! This is a minor release that adds a new configuration option for opening external links in a new tab and provides many bugfixes (in both correctness and performance) for Just the Docs users with large sites. We anticipate that for most users, this is a straightforward upgrade. However, it introduces some potentially-breaking *internal* changes to undocumented features of the theme.
|
|
25
|
+
|
|
26
|
+
### Migrating to `v0.7.0`
|
|
27
|
+
|
|
28
|
+
**Migration**: users will need to migrate if:
|
|
29
|
+
|
|
30
|
+
- they overrode `_includes/nav.html`, which has moved to `_includes/components/nav.html`
|
|
31
|
+
- they have an element with the IDs `jtd-nav-activation` or `jtd-head-nav-stylesheet`
|
|
32
|
+
|
|
33
|
+
For more, refer to the [migration guide](https://just-the-docs.com/MIGRATION/).
|
|
34
|
+
|
|
35
|
+
### Using Release `v0.7.0`
|
|
36
|
+
|
|
37
|
+
Users who have not pinned the theme version will be **automatically upgraded to `v0.7.0` the next time they build their site**.
|
|
38
|
+
|
|
39
|
+
To use this release explicitly as a remote theme:
|
|
40
|
+
|
|
41
|
+
```yml
|
|
42
|
+
remote_theme: just-the-docs/just-the-docs@v0.7.0
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
To use this version explicitly as a gem-based theme, pin the version in your `Gemfile` and re-run `bundle install` or `bundle update just-the-docs`:
|
|
46
|
+
|
|
47
|
+
```ruby
|
|
48
|
+
gem "just-the-docs", "0.7.0"
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
To use and pin a previous version of the theme, replace the `0.7.0` with the desired release tag.
|
|
52
|
+
|
|
53
|
+
### New Features
|
|
54
|
+
|
|
55
|
+
- Added: configuration options for opening external links in new tab by [@CarbonNeuron] in [#1360]
|
|
56
|
+
|
|
57
|
+
### Bugfixes
|
|
58
|
+
|
|
59
|
+
- Fixed: remove href from the navigation link to the current page by [@pdmosses] in [#1356]
|
|
60
|
+
- Fixed: improve build time by [@pdmosses] in [#1358]
|
|
61
|
+
- Fixed: erroneous parentheses in `site_nav` conditional by [@mattxwang] in [#1366]
|
|
62
|
+
- Fixed: navigation scroll to active link regression by [@pdmosses] in [#1367]
|
|
63
|
+
- Fixed: invalid CSS rules in head elements by [@pdmosses] in [#1368]
|
|
64
|
+
- Fixed: accidental disabling of forward-declared stylesheets by [@mattxwang] in [#1373]
|
|
65
|
+
|
|
66
|
+
{: .warning }
|
|
67
|
+
[#1358] moved `_includes/nav.html` to the `_includes/components` directory,
|
|
68
|
+
Users who were overriding that file will need to adjust their sites accordingly.
|
|
69
|
+
|
|
70
|
+
### Documentation:
|
|
71
|
+
|
|
72
|
+
- Docs: fix typos in `CHANGELOG` and `MIGRATION` by [@thapasusheel] in [#1377]
|
|
73
|
+
|
|
74
|
+
### New Contributors
|
|
75
|
+
|
|
76
|
+
- [@CarbonNeuron] made their first contribution in [#1360]
|
|
77
|
+
- [@thapasusheel] made their first contribution in [#1377]
|
|
78
|
+
|
|
79
|
+
[@CarbonNeuron]: https://github.com/CarbonNeuron
|
|
80
|
+
[@thapasusheel]: https://github.com/thapasusheel
|
|
81
|
+
|
|
82
|
+
[#1356]: https://github.com/just-the-docs/just-the-docs/pull/1356
|
|
83
|
+
[#1358]: https://github.com/just-the-docs/just-the-docs/pull/1358
|
|
84
|
+
[#1360]: https://github.com/just-the-docs/just-the-docs/pull/1360
|
|
85
|
+
[#1366]: https://github.com/just-the-docs/just-the-docs/pull/1366
|
|
86
|
+
[#1367]: https://github.com/just-the-docs/just-the-docs/pull/1367
|
|
87
|
+
[#1368]: https://github.com/just-the-docs/just-the-docs/pull/1368
|
|
88
|
+
[#1373]: https://github.com/just-the-docs/just-the-docs/pull/1373
|
|
89
|
+
[#1377]: https://github.com/just-the-docs/just-the-docs/pull/1377
|
|
90
|
+
|
|
22
91
|
## Release v0.6.2
|
|
23
92
|
|
|
24
93
|
Hi all, this is a small patch release that includes two changes: adding a missing Windows emoji font fallback, and removing some (now-unused) code introduced in 0.6.
|
|
@@ -644,7 +713,7 @@ This RC does not introduce any major user-facing features. It adds more customiz
|
|
|
644
713
|
|
|
645
714
|
### Trying out pre-release `v0.4.0.rc5`
|
|
646
715
|
|
|
647
|
-
|
|
716
|
+
Similar to the prior release, `v0.4.0.rc5` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` following immediately after. While we don't anticipate many users using this RC, it is still possible to opt-in.
|
|
648
717
|
|
|
649
718
|
To use this RC explicitly as a remote theme:
|
|
650
719
|
|
|
@@ -745,7 +814,7 @@ Have any questions, thoughts, or concerns? We'd love to hear from you! Please [o
|
|
|
745
814
|
|
|
746
815
|
### Trying out pre-release `v0.4.0.rc4`
|
|
747
816
|
|
|
748
|
-
|
|
817
|
+
Similar to the prior release, `v0.4.0.rc4` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc4`.
|
|
749
818
|
|
|
750
819
|
To use this RC explicitly as a remote theme:
|
|
751
820
|
|
|
@@ -866,7 +935,7 @@ As soon as we get stable test results from major downstream users, we'll push ou
|
|
|
866
935
|
|
|
867
936
|
### Trying out pre-release `v0.4.0.rc3`
|
|
868
937
|
|
|
869
|
-
|
|
938
|
+
Similar to the prior release, `v0.4.0.rc3` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc3`.
|
|
870
939
|
|
|
871
940
|
To use this RC explicitly as a remote theme:
|
|
872
941
|
|
|
@@ -942,7 +1011,7 @@ The intention of this release candidate is to gather even more feedback on a pot
|
|
|
942
1011
|
|
|
943
1012
|
### Trying out pre-release `v0.4.0.rc2`
|
|
944
1013
|
|
|
945
|
-
|
|
1014
|
+
Similar to the prior release, `v0.4.0.rc2` is a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc2`.
|
|
946
1015
|
|
|
947
1016
|
To use this RC explicitly as a remote theme:
|
|
948
1017
|
|
|
@@ -1030,7 +1099,7 @@ We want your feedback! Are these changes helpful? Are our docs easy to understan
|
|
|
1030
1099
|
|
|
1031
1100
|
### Trying out pre-release `v0.4.0.rc1`
|
|
1032
1101
|
|
|
1033
|
-
Due to the massive scope of these changes, we're making `v0.4.0.rc1`
|
|
1102
|
+
Due to the massive scope of these changes, we're making `v0.4.0.rc1` available as a **release candidate** for the theme (i.e., a pre-release) with release `v0.4.0` coming soon. We want your help in testing the changes! As of now, the gem on RubyGems and the repository are updated to `v0.4.0.rc1`.
|
|
1034
1103
|
|
|
1035
1104
|
To use this RC explicitly as a remote theme:
|
|
1036
1105
|
|
|
@@ -1542,7 +1611,7 @@ fixes #291 #256 #293 #177
|
|
|
1542
1611
|
|
|
1543
1612
|
## v0.2.1
|
|
1544
1613
|
|
|
1545
|
-
This update fixes security
|
|
1614
|
+
This update fixes security vulnerabilities in the lodash sub-dependency and bumps other dev dependencies to their latest version.
|
|
1546
1615
|
|
|
1547
1616
|
## v0.2.0
|
|
1548
1617
|
|
|
@@ -3,30 +3,38 @@
|
|
|
3
3
|
Depends on: page, site.
|
|
4
4
|
Results in: HTML for the breadcrumbs component.
|
|
5
5
|
Overwrites:
|
|
6
|
-
pages_list, parent_page, grandparent_page.
|
|
6
|
+
node, pages_list, parent_page, grandparent_page.
|
|
7
7
|
{%- endcomment -%}
|
|
8
8
|
|
|
9
9
|
{%- if page.url != "/" and page.parent -%}
|
|
10
10
|
|
|
11
|
-
{%- assign pages_list = site[page.collection]
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{%-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
11
|
+
{%- assign pages_list = site[page.collection] | default: site.html_pages -%}
|
|
12
|
+
|
|
13
|
+
{%- assign parent_page = nil -%}
|
|
14
|
+
{%- assign grandparent_page = nil -%}
|
|
15
|
+
|
|
16
|
+
{%- for node in pages_list -%}
|
|
17
|
+
|
|
18
|
+
{%- if node.has_children and page.grand_parent -%}
|
|
19
|
+
|
|
20
|
+
{%- if node.title == page.parent and node.parent == page.grand_parent -%}
|
|
21
|
+
{%- assign parent_page = node -%}
|
|
22
|
+
{%- endif -%}
|
|
23
|
+
{%- if node.title == page.grand_parent -%}
|
|
24
|
+
{%- assign grandparent_page = node -%}
|
|
25
|
+
{%- endif -%}
|
|
26
|
+
{%- if parent_page and grandparent_page -%}
|
|
27
|
+
{%- break -%}
|
|
28
|
+
{%- endif -%}
|
|
29
|
+
|
|
30
|
+
{%- elsif node.has_children and node.title == page.parent and node.parent == nil -%}
|
|
31
|
+
|
|
32
|
+
{%- assign parent_page = node -%}
|
|
33
|
+
{%- break -%}
|
|
34
|
+
|
|
35
|
+
{%- endif -%}
|
|
36
|
+
|
|
37
|
+
{%- endfor -%}
|
|
30
38
|
|
|
31
39
|
<nav aria-label="Breadcrumb" class="breadcrumb-nav">
|
|
32
40
|
<ol class="breadcrumb-nav-list">
|
|
@@ -3,10 +3,9 @@
|
|
|
3
3
|
Depends on: page(?), site.
|
|
4
4
|
Results in: HTML for the side bar.
|
|
5
5
|
Includes:
|
|
6
|
-
title.html,
|
|
7
|
-
Overwrites:
|
|
8
|
-
|
|
9
|
-
collection_key, collection_value, collection, nav_footer_custom.
|
|
6
|
+
title.html, components/site_nav.html, nav_footer_custom.html
|
|
7
|
+
Overwrites:
|
|
8
|
+
nav_footer_custom.
|
|
10
9
|
Should not be cached, because nav_footer_custom.html might depend on page.
|
|
11
10
|
{%- endcomment -%}
|
|
12
11
|
|
|
@@ -17,58 +16,8 @@
|
|
|
17
16
|
<svg viewBox="0 0 24 24" class="icon" aria-hidden="true"><use xlink:href="#svg-menu"></use></svg>
|
|
18
17
|
</button>
|
|
19
18
|
</div>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
| where_exp:"item", "item.title != nil"
|
|
23
|
-
| where_exp:"item", "item.parent == nil"
|
|
24
|
-
| where_exp:"item", "item.nav_exclude != true"
|
|
25
|
-
| size %}
|
|
26
|
-
{% if pages_top_size > 0 %}
|
|
27
|
-
{% include_cached nav.html pages=site.html_pages %}
|
|
28
|
-
{% endif %}
|
|
29
|
-
{%- if site.nav_external_links -%}
|
|
30
|
-
<ul class="nav-list">
|
|
31
|
-
{%- for node in site.nav_external_links -%}
|
|
32
|
-
<li class="nav-list-item external">
|
|
33
|
-
<a href="{{ node.url | absolute_url }}" class="nav-list-link external">
|
|
34
|
-
{{ node.title }}
|
|
35
|
-
{% unless node.hide_icon %}<svg viewBox="0 0 24 24" aria-labelledby="svg-external-link-title"><use xlink:href="#svg-external-link"></use></svg>{% endunless %}
|
|
36
|
-
</a>
|
|
37
|
-
</li>
|
|
38
|
-
{%- endfor -%}
|
|
39
|
-
</ul>
|
|
40
|
-
{%- endif -%}
|
|
41
|
-
{% if site.just_the_docs.collections %}
|
|
42
|
-
{% assign collections_size = site.just_the_docs.collections | size %}
|
|
43
|
-
{% for collection_entry in site.just_the_docs.collections %}
|
|
44
|
-
{% assign collection_key = collection_entry[0] %}
|
|
45
|
-
{% assign collection_value = collection_entry[1] %}
|
|
46
|
-
{% assign collection = site[collection_key] %}
|
|
47
|
-
{% if collection_value.nav_exclude != true %}
|
|
48
|
-
{% if collections_size > 1 or pages_top_size > 0 %}
|
|
49
|
-
{% if collection_value.nav_fold == true %}
|
|
50
|
-
<ul class="nav-list nav-category-list">
|
|
51
|
-
<li class="nav-list-item{% if page.collection == collection_key %} active{% endif %}">
|
|
52
|
-
{%- if collection.size > 0 -%}
|
|
53
|
-
<button class="nav-list-expander btn-reset" aria-label="Toggle collection {{ collection_value.name }}" aria-pressed="{% if page.collection == collection_key %}true{% else %}false{% endif %}">
|
|
54
|
-
<svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
|
|
55
|
-
</button>
|
|
56
|
-
{%- endif -%}
|
|
57
|
-
<div class="nav-category">{{ collection_value.name }}</div>
|
|
58
|
-
{% include_cached nav.html pages=collection %}
|
|
59
|
-
</li>
|
|
60
|
-
</ul>
|
|
61
|
-
{% else %}
|
|
62
|
-
<div class="nav-category">{{ collection_value.name }}</div>
|
|
63
|
-
{% include_cached nav.html pages=collection %}
|
|
64
|
-
{% endif %}
|
|
65
|
-
{% else %}
|
|
66
|
-
{% include_cached nav.html pages=collection %}
|
|
67
|
-
{% endif %}
|
|
68
|
-
{% endif %}
|
|
69
|
-
{% endfor %}
|
|
70
|
-
{% endif %}
|
|
71
|
-
</nav>
|
|
19
|
+
|
|
20
|
+
{% include_cached components/site_nav.html %}
|
|
72
21
|
|
|
73
22
|
{% capture nav_footer_custom %}
|
|
74
23
|
{%- include nav_footer_custom.html -%}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{%- comment -%}
|
|
2
|
+
Include as: {%- include_cached components/site_nav.html -%}
|
|
3
|
+
Depends on: site.
|
|
4
|
+
Results in: HTML for the site-nav.
|
|
5
|
+
Includes:
|
|
6
|
+
components/nav.html
|
|
7
|
+
Overwrites:
|
|
8
|
+
pages_top_size, collections_size, collection_entry,
|
|
9
|
+
collection_key, collection_value, collection.
|
|
10
|
+
{%- endcomment -%}
|
|
11
|
+
|
|
12
|
+
<nav aria-label="Main" id="site-nav" class="site-nav">
|
|
13
|
+
{% assign pages_top_size = site.html_pages
|
|
14
|
+
| where_exp:"item", "item.title != nil"
|
|
15
|
+
| where_exp:"item", "item.parent == nil"
|
|
16
|
+
| where_exp:"item", "item.nav_exclude != true"
|
|
17
|
+
| size %}
|
|
18
|
+
{% if pages_top_size > 0 %}
|
|
19
|
+
{% include components/nav.html pages=site.html_pages %}
|
|
20
|
+
{% endif %}
|
|
21
|
+
{%- if site.nav_external_links -%}
|
|
22
|
+
<ul class="nav-list">
|
|
23
|
+
{%- for node in site.nav_external_links -%}
|
|
24
|
+
<li class="nav-list-item external">
|
|
25
|
+
<a href="{{ node.url | absolute_url }}" class="nav-list-link external"
|
|
26
|
+
{% if node.opens_in_new_tab or node.opens_in_new_tab == nil and site.nav_external_links_new_tab %}
|
|
27
|
+
target="_blank" rel="noopener noreferrer"
|
|
28
|
+
{% endif %}
|
|
29
|
+
>
|
|
30
|
+
{{ node.title }}
|
|
31
|
+
{% unless node.hide_icon %}<svg viewBox="0 0 24 24" aria-labelledby="svg-external-link-title"><use xlink:href="#svg-external-link"></use></svg>{% endunless %}
|
|
32
|
+
</a>
|
|
33
|
+
</li>
|
|
34
|
+
{%- endfor -%}
|
|
35
|
+
</ul>
|
|
36
|
+
{%- endif -%}
|
|
37
|
+
{% if site.just_the_docs.collections %}
|
|
38
|
+
{% assign collections_size = site.just_the_docs.collections | size %}
|
|
39
|
+
{% for collection_entry in site.just_the_docs.collections %}
|
|
40
|
+
{% assign collection_key = collection_entry[0] %}
|
|
41
|
+
{% assign collection_value = collection_entry[1] %}
|
|
42
|
+
{% assign collection = site[collection_key] %}
|
|
43
|
+
{% if collection_value.nav_exclude != true %}
|
|
44
|
+
{% if collections_size > 1 or pages_top_size > 0 %}
|
|
45
|
+
{% if collection_value.nav_fold == true %}
|
|
46
|
+
<ul class="nav-list nav-category-list">
|
|
47
|
+
<li class="nav-list-item">
|
|
48
|
+
{%- if collection.size > 0 -%}
|
|
49
|
+
<button class="nav-list-expander btn-reset" aria-label="Toggle collection {{ collection_value.name }}" aria-pressed="false">
|
|
50
|
+
<svg viewBox="0 0 24 24" aria-hidden="true"><use xlink:href="#svg-arrow-right"></use></svg>
|
|
51
|
+
</button>
|
|
52
|
+
{%- endif -%}
|
|
53
|
+
<div class="nav-category">{{ collection_value.name }}</div>
|
|
54
|
+
{% include components/nav.html pages=collection %}
|
|
55
|
+
</li>
|
|
56
|
+
</ul>
|
|
57
|
+
{% else %}
|
|
58
|
+
<div class="nav-category">{{ collection_value.name }}</div>
|
|
59
|
+
{% include components/nav.html pages=collection %}
|
|
60
|
+
{% endif %}
|
|
61
|
+
{% else %}
|
|
62
|
+
{% include components/nav.html pages=collection %}
|
|
63
|
+
{% endif %}
|
|
64
|
+
{% endif %}
|
|
65
|
+
{% endfor %}
|
|
66
|
+
{% endif %}
|
|
67
|
+
</nav>
|
|
@@ -1,20 +1,47 @@
|
|
|
1
1
|
{%- comment -%}
|
|
2
2
|
Include as: {%- include css/activation.scss.liquid -%}
|
|
3
3
|
Depends on: page, site.
|
|
4
|
-
Results in: page-dependent
|
|
4
|
+
Results in: page-dependent (non-nested) CSS rules for inclusion in a head style element,
|
|
5
|
+
which needs to be suppressed when JS is enabled.
|
|
5
6
|
Includes:
|
|
6
7
|
sorted_pages.html.
|
|
7
8
|
Overwrites:
|
|
8
|
-
activation_pages, activation_pages_top_size, activation_page, activation_title,
|
|
9
|
+
activation_no_nav_link, activation_pages, activation_pages_top_size, activation_page, activation_title,
|
|
9
10
|
activation_first_level, activation_second_level, activation_third_level,
|
|
10
11
|
activation_first_level_reversed, activation_second_level_reversed,
|
|
11
|
-
activation_first_level_index, activation_second_level_index, activation_third_level_index
|
|
12
|
+
activation_first_level_index, activation_second_level_index, activation_third_level_index,
|
|
13
|
+
activation_index, activation_collection_prefix, activation_other_collection_prefix.
|
|
12
14
|
Should not be cached, because it depends on page.
|
|
13
15
|
(For a site with only top-level pages, the rendering of this file is always empty.
|
|
14
|
-
This property could be detected, and
|
|
16
|
+
This property could be detected, and used to reduce the build time for such sites.)
|
|
15
17
|
{%- endcomment -%}
|
|
16
18
|
|
|
17
|
-
{%-
|
|
19
|
+
{%- comment -%}
|
|
20
|
+
The CSS rules in activation_no_nav_link are for use on pages excluded from the main navigation.
|
|
21
|
+
- The first rule ensures that no nav-link has a background image.
|
|
22
|
+
- The other two rules ensure that all folding collections are expanded.
|
|
23
|
+
{%- endcomment -%}
|
|
24
|
+
|
|
25
|
+
{%- capture activation_no_nav_link %}
|
|
26
|
+
.site-nav ul li a {
|
|
27
|
+
background-image: none;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
{%- if site.just_the_docs.collections %}
|
|
31
|
+
.site-nav > ul.nav-category-list > li > button svg {
|
|
32
|
+
transform: rotate(-90deg);
|
|
33
|
+
}
|
|
34
|
+
.site-nav > ul.nav-category-list > li.nav-list-item > ul.nav-list {
|
|
35
|
+
display: block;
|
|
36
|
+
}
|
|
37
|
+
{%- endif %}
|
|
38
|
+
{% endcapture -%}
|
|
39
|
+
|
|
40
|
+
{%- if page.title == nil or page.nav_exclude == true -%}
|
|
41
|
+
|
|
42
|
+
{{ activation_no_nav_link }}
|
|
43
|
+
|
|
44
|
+
{%- else -%}
|
|
18
45
|
|
|
19
46
|
{%- assign activation_pages = site[page.collection]
|
|
20
47
|
| default: site.html_pages
|
|
@@ -27,6 +54,11 @@
|
|
|
27
54
|
{%- assign activation_first_level_reversed = nil -%}
|
|
28
55
|
{%- assign activation_second_level_reversed = nil -%}
|
|
29
56
|
|
|
57
|
+
{%- comment -%}
|
|
58
|
+
The generated CSS depends on the position of the current page in each level in
|
|
59
|
+
the navigation.
|
|
60
|
+
{%- endcomment -%}
|
|
61
|
+
|
|
30
62
|
{%- assign activation_title = page.grand_parent | default: page.parent | default: page.title -%}
|
|
31
63
|
{%- assign activation_first_level = activation_pages
|
|
32
64
|
| where_exp: "item", "item.parent == nil" -%}
|
|
@@ -39,7 +71,11 @@
|
|
|
39
71
|
{%- endif -%}
|
|
40
72
|
{%- endfor -%}
|
|
41
73
|
|
|
42
|
-
{%-
|
|
74
|
+
{%- if activation_first_level_index == nil -%}
|
|
75
|
+
|
|
76
|
+
{{ activation_no_nav_link }}
|
|
77
|
+
|
|
78
|
+
{%- else -%}
|
|
43
79
|
|
|
44
80
|
{%- if page.grand_parent -%}
|
|
45
81
|
{%- assign activation_title = page.parent -%}
|
|
@@ -83,90 +119,163 @@
|
|
|
83
119
|
{%- endfor -%}
|
|
84
120
|
{%- endif -%}
|
|
85
121
|
|
|
86
|
-
{%-
|
|
122
|
+
{%- if activation_second_level_index == nil and activation_third_level_index -%}
|
|
123
|
+
|
|
124
|
+
{{ activation_no_nav_link }}
|
|
125
|
+
|
|
126
|
+
{%- else -%}
|
|
127
|
+
|
|
128
|
+
{%- comment -%}
|
|
129
|
+
The site-nav is:
|
|
130
|
+
- an optional ul.nav-list with li.nav-list-items for non-collection top-level pages
|
|
131
|
+
- an optional ul.nav-list with li.nav-list-item.externals
|
|
132
|
+
- any number of just-the-docs.collections
|
|
133
|
+
|
|
134
|
+
A non-foldable collection is:
|
|
135
|
+
- a div.nav-category with the collection name, followed by:
|
|
136
|
+
- a ul.nav-list with li.nav-list-items for its top-level pages
|
|
137
|
+
|
|
138
|
+
A foldable collection is:
|
|
139
|
+
- a ul.nav-list.nav-category-list with a single li.nav-list-item containing:
|
|
140
|
+
- an optional button with the expander svg
|
|
141
|
+
- a div.nav-category with the collection name
|
|
142
|
+
- a ul.nav-list with li.nav-list-items for its top-level pages
|
|
143
|
+
|
|
144
|
+
The generated CSS uses:
|
|
145
|
+
- activation_collection_prefix, to select the site-nav > ul.nav-list for the page
|
|
146
|
+
- activation_other_collection_prefix, to select all the other site-nav > ul.nav-lists
|
|
147
|
+
{%- endcomment -%}
|
|
87
148
|
|
|
88
149
|
{%- if page.collection == nil -%}
|
|
89
150
|
|
|
90
151
|
{%- capture activation_collection_prefix -%}
|
|
91
|
-
.site-nav > .nav-list:
|
|
152
|
+
.site-nav > ul.nav-list:first-child
|
|
153
|
+
{%- endcapture -%}
|
|
154
|
+
|
|
155
|
+
{%- capture activation_other_collection_prefix -%}
|
|
156
|
+
.site-nav > ul.nav-list:not(:first-child)
|
|
92
157
|
{%- endcapture -%}
|
|
93
158
|
|
|
94
159
|
{%- else -%}
|
|
95
160
|
|
|
96
161
|
{%- for activation_collection in site.just_the_docs.collections -%}
|
|
97
162
|
{%- if activation_collection[0] == page.collection -%}
|
|
98
|
-
{%- assign
|
|
163
|
+
{%- assign activation_index = forloop.index -%}
|
|
99
164
|
{%- break -%}
|
|
100
165
|
{%- endif -%}
|
|
101
166
|
{%- endfor -%}
|
|
102
|
-
|
|
167
|
+
|
|
103
168
|
{%- assign activation_pages_top_size = site.html_pages
|
|
104
169
|
| where_exp:"item", "item.title != nil"
|
|
105
170
|
| where_exp:"item", "item.parent == nil"
|
|
106
171
|
| where_exp:"item", "item.nav_exclude != true"
|
|
107
172
|
| size -%}
|
|
108
|
-
{%- if activation_pages_top_size > 0
|
|
173
|
+
{%- if activation_pages_top_size > 0 -%}
|
|
109
174
|
{%- assign activation_index = activation_index | plus: 1 -%}
|
|
110
175
|
{%- endif -%}
|
|
176
|
+
|
|
111
177
|
{%- if site.nav_external_links -%}
|
|
112
178
|
{%- assign activation_index = activation_index | plus: 1 -%}
|
|
113
179
|
{%- endif -%}
|
|
180
|
+
|
|
114
181
|
{%- capture activation_collection_prefix -%}
|
|
115
|
-
.site-nav >
|
|
182
|
+
.site-nav > ul:nth-of-type({{ activation_index }})
|
|
183
|
+
{%- if site.just_the_docs.collections[page.collection].nav_fold %} > li > ul
|
|
184
|
+
{%- endif -%}
|
|
116
185
|
{%- endcapture -%}
|
|
117
|
-
|
|
186
|
+
|
|
187
|
+
{%- capture activation_other_collection_prefix -%}
|
|
188
|
+
.site-nav > ul:not(:nth-of-type({{ activation_index }}))
|
|
189
|
+
{%- endcapture -%}
|
|
190
|
+
|
|
118
191
|
{%- endif -%}
|
|
119
192
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
}
|
|
193
|
+
{%- comment -%}
|
|
194
|
+
The required background image of the link to the current page may involve SCSS.
|
|
195
|
+
To avoid page-dependent SCSS, all nav links initially have that background image.
|
|
196
|
+
The following rule removes the image from the links to all parents, siblings,
|
|
197
|
+
and children of the current page.
|
|
198
|
+
{%- endcomment %}
|
|
199
|
+
|
|
200
|
+
{% if activation_third_level_index -%}
|
|
201
|
+
|
|
202
|
+
{{ activation_collection_prefix }} > li > a,
|
|
203
|
+
{{ activation_collection_prefix }} > li > ul > li > a,
|
|
204
|
+
{{ activation_collection_prefix }} > li > ul > li > ul > li:not(:nth-child({{ activation_third_level_index }})) > a {
|
|
205
|
+
background-image: none;
|
|
135
206
|
}
|
|
136
207
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
}
|
|
152
|
-
}
|
|
208
|
+
{%- elsif activation_second_level_index -%}
|
|
209
|
+
|
|
210
|
+
{{ activation_collection_prefix }} > li > a,
|
|
211
|
+
{{ activation_collection_prefix }} > li > ul > li:not(:nth-child({{ activation_second_level_index }})) > a,
|
|
212
|
+
{{ activation_collection_prefix }} > li > ul > li > ul > li > a {
|
|
213
|
+
background-image: none;
|
|
214
|
+
}
|
|
215
|
+
|
|
216
|
+
{%- else -%}
|
|
217
|
+
|
|
218
|
+
{{ activation_collection_prefix }} > li:not(:nth-child({{ activation_first_level_index }})) > a,
|
|
219
|
+
{{ activation_collection_prefix }} > li > ul > li > a,
|
|
220
|
+
{{ activation_collection_prefix }} > li > ul > li > ul > li > a {
|
|
221
|
+
background-image: none;
|
|
153
222
|
}
|
|
154
223
|
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
> .nav-list {
|
|
166
|
-
display: block;
|
|
167
|
-
}
|
|
224
|
+
{%- endif %}
|
|
225
|
+
|
|
226
|
+
{%- comment -%}
|
|
227
|
+
The following rule removes the image from the links to pages in other collections.
|
|
228
|
+
{%- endcomment %}
|
|
229
|
+
|
|
230
|
+
{{ activation_other_collection_prefix }} a,
|
|
231
|
+
.site-nav li.external a {
|
|
232
|
+
background-image: none;
|
|
168
233
|
}
|
|
169
234
|
|
|
170
|
-
{%-
|
|
171
|
-
|
|
172
|
-
{%-
|
|
235
|
+
{%- comment -%}
|
|
236
|
+
The following rule styles the link to the current page.
|
|
237
|
+
{%- endcomment %}
|
|
238
|
+
|
|
239
|
+
{{ activation_collection_prefix }} > li:nth-child({{ activation_first_level_index }})
|
|
240
|
+
{%- if activation_second_level_index %} > ul > li:nth-child({{ activation_second_level_index }})
|
|
241
|
+
{%- if activation_third_level_index %} > ul > li:nth-child({{ activation_third_level_index }})
|
|
242
|
+
{%- endif -%}
|
|
243
|
+
{%- endif %} > a {
|
|
244
|
+
font-weight: 600;
|
|
245
|
+
text-decoration: none;
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
{%- comment -%}
|
|
249
|
+
The following rules unfold all collections, and display the links to any children
|
|
250
|
+
of the current page.
|
|
251
|
+
|
|
252
|
+
To avoid dependence on the SCSS variable nav-list-expander-right, the direction
|
|
253
|
+
of the rotation of the expander icon is fixed, and corresponds to the appearance
|
|
254
|
+
when nav-list-expander-right is true. This results in a minor visual difference
|
|
255
|
+
between the appearance of active expander icons when JS is enabled/disabled and
|
|
256
|
+
nav-list-expander-right is false, which seems unavoidable.
|
|
257
|
+
{%- endcomment %}
|
|
258
|
+
|
|
259
|
+
{%- if site.just_the_docs.collections %}
|
|
260
|
+
.site-nav > ul.nav-category-list > li > button svg,
|
|
261
|
+
{% endif -%}
|
|
262
|
+
{{ activation_collection_prefix }} > li:nth-child({{ activation_first_level_index }}) > button svg
|
|
263
|
+
{%- if activation_second_level_index -%},
|
|
264
|
+
{{ activation_collection_prefix }} > li:nth-child({{ activation_first_level_index }}) > ul > li:nth-child({{ activation_second_level_index }}) > button svg
|
|
265
|
+
{%- endif %} {
|
|
266
|
+
transform: rotate(-90deg);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
{%- if site.just_the_docs.collections %}
|
|
270
|
+
.site-nav > ul.nav-category-list > li.nav-list-item > ul.nav-list,
|
|
271
|
+
{% endif -%}
|
|
272
|
+
{{ activation_collection_prefix }} > li.nav-list-item:nth-child({{ activation_first_level_index }}) > ul.nav-list
|
|
273
|
+
{%- if activation_second_level_index %},
|
|
274
|
+
{{ activation_collection_prefix }} > li.nav-list-item:nth-child({{ activation_first_level_index }}) > ul.nav-list > li.nav-list-item:nth-child({{ activation_second_level_index }}) > ul.nav-list
|
|
275
|
+
{%- endif %} {
|
|
276
|
+
display: block;
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
{%- endif -%}
|
|
280
|
+
{%- endif -%}
|
|
281
|
+
{%- endif -%}
|
data/_includes/head.html
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
site.search_enabled, site.static_files, site.favicon_ico.
|
|
5
5
|
Results in: HTML for the head element.
|
|
6
6
|
Includes:
|
|
7
|
-
|
|
8
|
-
Overwrites:
|
|
7
|
+
css/activation.scss.liquid, head_custom.html.
|
|
8
|
+
Overwrites:
|
|
9
9
|
ga_tracking_ids, ga_property, file, favicon.
|
|
10
10
|
Should not be cached, because included files depend on page.
|
|
11
11
|
{%- endcomment -%}
|
|
@@ -15,8 +15,12 @@
|
|
|
15
15
|
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
|
|
16
16
|
|
|
17
17
|
<link rel="stylesheet" href="{{ '/assets/css/just-the-docs-default.css' | relative_url }}">
|
|
18
|
-
|
|
19
|
-
{
|
|
18
|
+
|
|
19
|
+
<link rel="stylesheet" href="{{ '/assets/css/just-the-docs-head-nav.css' | relative_url }}" id="jtd-head-nav-stylesheet">
|
|
20
|
+
|
|
21
|
+
<style id="jtd-nav-activation">
|
|
22
|
+
{% include css/activation.scss.liquid %}
|
|
23
|
+
</style>
|
|
20
24
|
|
|
21
25
|
{% if site.ga_tracking != nil %}
|
|
22
26
|
{% assign ga_tracking_ids = site.ga_tracking | split: "," %}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
---
|
|
3
|
+
{%- if site.color_scheme and site.color_scheme != "nil" -%}
|
|
4
|
+
{%- assign color_scheme = site.color_scheme -%}
|
|
5
|
+
{%- else -%}
|
|
6
|
+
{%- assign color_scheme = "light" -%}
|
|
7
|
+
{%- endif -%}
|
|
8
|
+
|
|
9
|
+
{%- capture newline %}
|
|
10
|
+
{% endcapture -%}
|
|
11
|
+
|
|
12
|
+
{%- capture scss -%}
|
|
13
|
+
{% include css/just-the-docs.scss.liquid color_scheme=color_scheme %}
|
|
14
|
+
.site-nav ul li a {
|
|
15
|
+
background-image: linear-gradient(
|
|
16
|
+
-90deg,
|
|
17
|
+
rgba($feedback-color, 1) 0%,
|
|
18
|
+
rgba($feedback-color, 0.8) 80%,
|
|
19
|
+
rgba($feedback-color, 0) 100%
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
{%- endcapture -%}
|
|
23
|
+
|
|
24
|
+
{{ scss | scssify | split: newline | slice: -3, 3 | join: newline }}
|
data/assets/js/just-the-docs.js
CHANGED
|
@@ -38,8 +38,8 @@ function initNav() {
|
|
|
38
38
|
const siteNav = document.getElementById('site-nav');
|
|
39
39
|
const mainHeader = document.getElementById('main-header');
|
|
40
40
|
const menuButton = document.getElementById('menu-button');
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
|
|
42
|
+
disableHeadStyleSheets();
|
|
43
43
|
|
|
44
44
|
jtd.addEvent(menuButton, 'click', function(e){
|
|
45
45
|
e.preventDefault();
|
|
@@ -68,13 +68,23 @@ function initNav() {
|
|
|
68
68
|
{%- endif %}
|
|
69
69
|
}
|
|
70
70
|
|
|
71
|
-
// The
|
|
72
|
-
//
|
|
73
|
-
//
|
|
71
|
+
// The <head> element is assumed to include the following stylesheets:
|
|
72
|
+
// - a <link> to /assets/css/just-the-docs-head-nav.css,
|
|
73
|
+
// with id 'jtd-head-nav-stylesheet'
|
|
74
|
+
// - a <style> containing the result of _includes/css/activation.scss.liquid.
|
|
75
|
+
// To avoid relying on the order of stylesheets (which can change with HTML
|
|
76
|
+
// compression, user-added JavaScript, and other side effects), stylesheets
|
|
77
|
+
// are only interacted with via ID
|
|
78
|
+
|
|
79
|
+
function disableHeadStyleSheets() {
|
|
80
|
+
const headNav = document.getElementById('jtd-head-nav-stylesheet');
|
|
81
|
+
if (headNav) {
|
|
82
|
+
headNav.disabled = true;
|
|
83
|
+
}
|
|
74
84
|
|
|
75
|
-
|
|
76
|
-
if (
|
|
77
|
-
|
|
85
|
+
const activation = document.getElementById('jtd-nav-activation');
|
|
86
|
+
if (activation) {
|
|
87
|
+
activation.disabled = true;
|
|
78
88
|
}
|
|
79
89
|
}
|
|
80
90
|
|
|
@@ -491,6 +501,7 @@ function scrollNav() {
|
|
|
491
501
|
if (targetLink) {
|
|
492
502
|
const rect = targetLink.getBoundingClientRect();
|
|
493
503
|
document.getElementById('site-nav').scrollBy(0, rect.top - 3*rect.height);
|
|
504
|
+
targetLink.removeAttribute('href');
|
|
494
505
|
}
|
|
495
506
|
}
|
|
496
507
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: just-the-docs
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Patrick Marsceill
|
|
@@ -9,7 +9,7 @@ authors:
|
|
|
9
9
|
autorequire:
|
|
10
10
|
bindir: bin
|
|
11
11
|
cert_chain: []
|
|
12
|
-
date: 2023-
|
|
12
|
+
date: 2023-10-25 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
|
14
14
|
- !ruby/object:Gem::Dependency
|
|
15
15
|
name: bundler
|
|
@@ -100,9 +100,11 @@ files:
|
|
|
100
100
|
- _includes/components/footer.html
|
|
101
101
|
- _includes/components/header.html
|
|
102
102
|
- _includes/components/mermaid.html
|
|
103
|
+
- _includes/components/nav.html
|
|
103
104
|
- _includes/components/search_footer.html
|
|
104
105
|
- _includes/components/search_header.html
|
|
105
106
|
- _includes/components/sidebar.html
|
|
107
|
+
- _includes/components/site_nav.html
|
|
106
108
|
- _includes/css/activation.scss.liquid
|
|
107
109
|
- _includes/css/callouts.scss.liquid
|
|
108
110
|
- _includes/css/custom.scss.liquid
|
|
@@ -112,7 +114,6 @@ files:
|
|
|
112
114
|
- _includes/footer_custom.html
|
|
113
115
|
- _includes/head.html
|
|
114
116
|
- _includes/head_custom.html
|
|
115
|
-
- _includes/head_nav.html
|
|
116
117
|
- _includes/header_custom.html
|
|
117
118
|
- _includes/icons/code_copy.html
|
|
118
119
|
- _includes/icons/document.html
|
|
@@ -126,7 +127,6 @@ files:
|
|
|
126
127
|
- _includes/lunr/custom-data.json
|
|
127
128
|
- _includes/lunr/custom-index.js
|
|
128
129
|
- _includes/mermaid_config.js
|
|
129
|
-
- _includes/nav.html
|
|
130
130
|
- _includes/nav_footer_custom.html
|
|
131
131
|
- _includes/search_placeholder_custom.html
|
|
132
132
|
- _includes/sorted_pages.html
|
|
@@ -179,6 +179,7 @@ files:
|
|
|
179
179
|
- _sass/vendor/normalize.scss/normalize.scss
|
|
180
180
|
- assets/css/just-the-docs-dark.scss
|
|
181
181
|
- assets/css/just-the-docs-default.scss
|
|
182
|
+
- assets/css/just-the-docs-head-nav.css
|
|
182
183
|
- assets/css/just-the-docs-light.scss
|
|
183
184
|
- assets/js/just-the-docs.js
|
|
184
185
|
- assets/js/vendor/lunr.min.js
|
data/_includes/head_nav.html
DELETED
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
{%- comment -%}
|
|
2
|
-
Include as: {%- include head_nav.html -%}
|
|
3
|
-
Depends on: site.color_scheme.
|
|
4
|
-
Results in: HTML for a page-specific style element.
|
|
5
|
-
Includes:
|
|
6
|
-
css/activation.scss.liquid.
|
|
7
|
-
Overwrites:
|
|
8
|
-
activation, test_scss, scss, css, index, count.
|
|
9
|
-
Should not be cached, because css/activation.scss.liquid depends on page.
|
|
10
|
-
{%- endcomment -%}
|
|
11
|
-
|
|
12
|
-
{% capture activation %}
|
|
13
|
-
{% include css/activation.scss.liquid %}
|
|
14
|
-
{%- endcapture -%}
|
|
15
|
-
|
|
16
|
-
{% capture test_scss %}
|
|
17
|
-
@import "./support/support";
|
|
18
|
-
@import "./color_schemes/light";
|
|
19
|
-
{{ activation }}
|
|
20
|
-
{%- endcapture -%}
|
|
21
|
-
|
|
22
|
-
{%- capture scss -%}
|
|
23
|
-
@import "./support/support";
|
|
24
|
-
@import "./custom/setup";
|
|
25
|
-
{% if site.color_scheme and site.color_scheme != "nil" -%}
|
|
26
|
-
{%- assign color_scheme = site.color_scheme -%}
|
|
27
|
-
{%- else -%}
|
|
28
|
-
{%- assign color_scheme = "light" -%}
|
|
29
|
-
{%- endif %}
|
|
30
|
-
@import "./color_schemes/light";
|
|
31
|
-
{% unless color_scheme == "light" %}
|
|
32
|
-
@import "./color_schemes/{{ color_scheme }}";
|
|
33
|
-
{% endunless %}
|
|
34
|
-
{{ activation }}
|
|
35
|
-
{%- endcapture -%}
|
|
36
|
-
|
|
37
|
-
{%- comment -%}
|
|
38
|
-
Convert to CSS, then remove the color_scheme import rules to avoid duplication.
|
|
39
|
-
The value of count is page-dependent, but independent of custom color schemes.
|
|
40
|
-
{%- endcomment -%}
|
|
41
|
-
{%- assign count = test_scss | scssify | split: ".site-nav" | size -%}
|
|
42
|
-
{%- unless count == 1 %}
|
|
43
|
-
{%- assign index = 1 | minus: count -%}
|
|
44
|
-
{%- assign css = scss | scssify | split: ".site-nav" | slice: index, count | join: ".site-nav" -%}
|
|
45
|
-
<style type="text/css">
|
|
46
|
-
{{ css | prepend: ".site-nav" }}
|
|
47
|
-
</style>
|
|
48
|
-
{%- endunless %}
|