elixir-toolkit-theme 4.2.0 → 5.0.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/README.md +7 -3
- data/_includes/contributor-carousel-selection.html +4 -3
- data/_includes/contributor-minitiles-page.html +6 -7
- data/_includes/events.html +1 -1
- data/_includes/footer.html +16 -6
- data/_includes/github-buttons.html +7 -11
- data/_includes/head.html +33 -27
- data/_includes/news.html +1 -1
- data/_includes/pageids-overview.html +1 -1
- data/_includes/related-pages.html +1 -1
- data/_includes/resource-table-all.html +1 -1
- data/_includes/resource-table-page.html +2 -2
- data/_includes/section-navigation-tiles.html +2 -2
- data/_layouts/page.html +1 -1
- data/assets/css/main.scss +52 -39
- data/assets/js/custom.js +0 -0
- data/assets/js/toc.js +64 -35
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 28d3405180b694d3008b2189a0bb9a16ee0ea46295d1d9e1f54b0c0615dc08c1
|
4
|
+
data.tar.gz: b84be0a971922c139d39379443cddd58f07514d5578c7d38364dc1361c63484f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e72c7d4ed2724a743f37e71223547bdfa2dbd472d050ecb4a8e130d6081bf3c4a1bd9fbd2d4136c58616484bd7bb189a472ca203953944a08f41914175e89180
|
7
|
+
data.tar.gz: 3effd307d58a441330ef53c2b76377d41dac38552bf881e0c87d4f1d844acdf21fc9e1130945ffbb6a8d0389c8a921b59dfe453f4948741de552c405d25c40a6
|
data/README.md
CHANGED
@@ -37,7 +37,7 @@ remote_theme: ELIXIR-Belgium/elixir-toolkit-theme
|
|
37
37
|
You can lock it onto a specific version using:
|
38
38
|
|
39
39
|
```yaml
|
40
|
-
remote_theme: ELIXIR-Belgium/elixir-toolkit-theme@
|
40
|
+
remote_theme: ELIXIR-Belgium/elixir-toolkit-theme@5.0.0
|
41
41
|
```
|
42
42
|
|
43
43
|
### Using Ruby Gems (alternative)
|
@@ -50,7 +50,7 @@ gem "elixir-toolkit-theme"
|
|
50
50
|
You can lock it onto a specific version like this:
|
51
51
|
|
52
52
|
```ruby
|
53
|
-
gem "elixir-toolkit-theme", "~>
|
53
|
+
gem "elixir-toolkit-theme", "~> 5.0.0"
|
54
54
|
```
|
55
55
|
|
56
56
|
And add this line to your Jekyll site's `_config.yml`:
|
@@ -81,7 +81,7 @@ NOTE: This way of deploying does not support the tool-tag in the text of the mar
|
|
81
81
|
Add an extra `.gitlab-ci.yml` file in the root of the repo with:
|
82
82
|
|
83
83
|
```yml
|
84
|
-
image: ruby:
|
84
|
+
image: ruby:3.3
|
85
85
|
|
86
86
|
variables:
|
87
87
|
JEKYLL_ENV: production
|
@@ -131,6 +131,7 @@ pages:
|
|
131
131
|
```
|
132
132
|
JEKYLL_ENV=production PAGES_REPO_NWO='USER_OR_ORGANISATION/REPO_NAME' bundle exec jekyll serve --baseurl ""
|
133
133
|
```
|
134
|
+
Where `USER_OR_ORGANISATION/REPO_NAME` is the GitHub USER_OR_ORGANISATION/REPO_NAME (to be found in the url).
|
134
135
|
|
135
136
|
1. To preview your site, in your web browser, navigate to `http://localhost:4000`.
|
136
137
|
|
@@ -169,6 +170,9 @@ This will start the docker container and serve the website locally. Make sure th
|
|
169
170
|
- [FAIRDOM-SEEK Documentation](https://docs.seek4science.org/) (SEEK community)
|
170
171
|
- [FAIR Lesson Plan Handbook](https://elixir-europe-training.github.io/ELIXIR-TrP-FAIR-Converge/) (ELIXIR Training platform)
|
171
172
|
- [Data Steward Handbook](https://elixir-uk.github.io/elixir-ds-handbook) (ELIXIR RDM Community)
|
173
|
+
- [Fed-A-Crate](https://elixir-europe.github.io/fed-a-crate/how-to-contribute) (ELIXIR Fed-A-Crate project)
|
174
|
+
- [Federated Learning toolkit (FLkit)](https://uhasselt-biomedicaldatasciences.github.io/federated-learning-toolkit/) (UHasselt)
|
175
|
+
- [mTeSS-X](https://elixirtess.github.io/mTeSS-X/) (OSCARS project)
|
172
176
|
- Want your instance here? [Open an issue](https://github.com/ELIXIR-Belgium/elixir-toolkit-theme/issues)
|
173
177
|
|
174
178
|
## Dependencies
|
@@ -1,3 +1,4 @@
|
|
1
|
+
{%- assign carousel_counter = carousel_counter | plus: 1 %}
|
1
2
|
{%- assign contributors = site.data.CONTRIBUTORS %}
|
2
3
|
{%- assign allcontrstr = nil %}
|
3
4
|
{%- assign nr = include.col | default: 5 %}
|
@@ -39,7 +40,7 @@
|
|
39
40
|
{%- assign allcontributors = allcontributors | sort %}
|
40
41
|
{%- endunless %}
|
41
42
|
{%- unless allcontributors.size == 0 %}
|
42
|
-
<div id="contributors-carousel" class="carousel carousel-dark slide my-4" data-ride="carousel" data-bs-interval="7000">
|
43
|
+
<div id="contributors-carousel-{{carousel_counter}}" class="carousel carousel-dark slide my-4" data-ride="carousel" data-bs-interval="7000">
|
43
44
|
<div class="carousel-inner">
|
44
45
|
{%- assign counter = 0 %}
|
45
46
|
{%- for contributor in allcontributors %}
|
@@ -111,11 +112,11 @@
|
|
111
112
|
</div>
|
112
113
|
{%- endif %}
|
113
114
|
{%- endfor %}
|
114
|
-
<button class="carousel-control-prev" type="button" data-bs-target="#contributors-carousel" data-bs-slide="prev">
|
115
|
+
<button class="carousel-control-prev" type="button" data-bs-target="#contributors-carousel-{{carousel_counter}}" data-bs-slide="prev">
|
115
116
|
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
|
116
117
|
<span class="visually-hidden">Previous</span>
|
117
118
|
</button>
|
118
|
-
<button class="carousel-control-next" type="button" data-bs-target="#contributors-carousel" data-bs-slide="next">
|
119
|
+
<button class="carousel-control-next" type="button" data-bs-target="#contributors-carousel-{{carousel_counter}}" data-bs-slide="next">
|
119
120
|
<span class="carousel-control-next-icon" aria-hidden="true"></span>
|
120
121
|
<span class="visually-hidden">Next</span>
|
121
122
|
</button>
|
@@ -1,8 +1,11 @@
|
|
1
|
-
{%-
|
1
|
+
{%- assign EMPTY = "" | split: "" -%}
|
2
|
+
{%- assign contrib_list = page.contributors | default: EMPTY -%}
|
3
|
+
{%- assign coord_list = page.coordinators | default: EMPTY -%}
|
4
|
+
{%- if contrib_list.size > 0 or coord_list.size > 0 -%}
|
2
5
|
<span class="d-block h2-like fs-2">{{site.theme_variables.contributor-minitiles-page | default: 'Contributors' }}</span>
|
3
6
|
<div class="p-4 rounded mt-4 page-contributors d-flex flex-wrap gap-2">
|
4
7
|
{%- assign contributors = site.data.CONTRIBUTORS %}
|
5
|
-
{%- assign page_contributors =
|
8
|
+
{%- assign page_contributors = contrib_list | concat: coord_list | uniq %}
|
6
9
|
{%- unless include.sort == false %}
|
7
10
|
{%- assign page_contributors = page_contributors | sort %}
|
8
11
|
{%- endunless %}
|
@@ -35,9 +38,7 @@
|
|
35
38
|
<div>
|
36
39
|
{{ contributor }}
|
37
40
|
</div>
|
38
|
-
{%- if page.coordinators %}
|
39
|
-
{%- for coordinator in page.coordinators %}
|
40
|
-
{%- if coordinator == contributor %}
|
41
|
+
{%- if page.coordinators.size != 0 and page.coordinators contains contributor %}
|
41
42
|
<div class="position-absolute top-0 start-100 translate-middle">
|
42
43
|
<div class="rounded-circle coordinator-crown">
|
43
44
|
<a data-bs-toggle="tooltip" data-bs-original-title="Coordinator of the {{page.title}} page.">
|
@@ -46,8 +47,6 @@
|
|
46
47
|
</div>
|
47
48
|
</div>
|
48
49
|
{%- endif %}
|
49
|
-
{%- endfor %}
|
50
|
-
{%- endif %}
|
51
50
|
</button>
|
52
51
|
<div class="dropdown-menu shadow p-0 border-0 contributor-cards">
|
53
52
|
|
data/_includes/events.html
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
{%- if include.title == true%}
|
3
3
|
<h2>{{include.event_type | replace: "_", " " | capitalize}}s</h2>
|
4
4
|
{%- endif %}
|
5
|
-
{%- assign events = site.data.events %}
|
5
|
+
{%- assign events = site.data.events | sort: "startDate" | reverse %}
|
6
6
|
{%- assign count = 0 %}
|
7
7
|
<ul class="list-unstyled mt-3">
|
8
8
|
{%- for event in events %}
|
data/_includes/footer.html
CHANGED
@@ -1,5 +1,12 @@
|
|
1
|
+
{%- assign EMPTY = "" | split: "" %}
|
2
|
+
{%- assign footer_columns = site.data.footer.columns | default: EMPTY %}
|
3
|
+
{%- assign footer_copyright = site.data.footer.copyright %}
|
4
|
+
{%- assign footer_extra_line = site.data.footer.extra_line %}
|
5
|
+
{%- if footer_columns != EMPTY or footer_copyright or footer_extra_line %}
|
1
6
|
<footer id="footer">
|
7
|
+
{%- if footer_columns != EMPTY or footer_extra_line %}
|
2
8
|
<div class="container py-4 g-lg-5">
|
9
|
+
{%- if footer_columns != EMPTY %}
|
3
10
|
<div class="row g-4 d-flex justify-content-between">
|
4
11
|
{%- for column in site.data.footer.columns %}
|
5
12
|
{%- if column.type == "image" %}
|
@@ -32,19 +39,21 @@
|
|
32
39
|
{%- endif %}
|
33
40
|
{%- endfor %}
|
34
41
|
</div>
|
35
|
-
{%-
|
42
|
+
{%- endif %}
|
43
|
+
{%- if footer_extra_line %}
|
36
44
|
<div class="row">
|
37
45
|
<div class="text-center pt-4 mb-0">
|
38
|
-
{{
|
46
|
+
{{footer_extra_line | markdownify }}
|
39
47
|
</div>
|
40
48
|
</div>
|
41
|
-
{%-
|
49
|
+
{%- endif %}
|
42
50
|
</div>
|
51
|
+
{%- endif %}
|
43
52
|
<div class="copyright py-4">
|
44
53
|
<div class="container g-lg-5 d-flex justify-content-between flex-column flex-lg-row">
|
45
|
-
{%-
|
46
|
-
<div class="d-flex align-items-center mb-3 mb-lg-0 mx-auto mx-lg-0 text-center">{{
|
47
|
-
{%-
|
54
|
+
{%- if footer_copyright %}
|
55
|
+
<div class="d-flex align-items-center mb-3 mb-lg-0 mx-auto mx-lg-0 text-center">{{ footer_copyright | markdownify }}</div>
|
56
|
+
{%- endif %}
|
48
57
|
<div class="d-flex align-items-center mx-auto ms-lg-4 me-lg-0">
|
49
58
|
<a id="ett-logo" class="text-nowrap me-lg-5 me-xxlg-0" href="https://elixir-belgium.github.io/elixir-toolkit-theme">Built with
|
50
59
|
<svg data-name="ETT logo" xmlns="http://www.w3.org/2000/svg" width="30" height="30" viewBox="0 0 77.2 77.12">
|
@@ -72,3 +81,4 @@
|
|
72
81
|
</div>
|
73
82
|
</div>
|
74
83
|
</footer>
|
84
|
+
{%- endif %}
|
@@ -1,20 +1,16 @@
|
|
1
1
|
{%- assign show_github_edit_button = site.theme_variables.github_buttons.edit_me | default: true %}
|
2
2
|
{%- assign show_github_history_button = site.theme_variables.github_buttons.history | default: true %}
|
3
3
|
{%- assign show_github_open_issue_button = site.theme_variables.github_buttons.open_issue | default: true %}
|
4
|
-
|
5
4
|
{%- if show_github_edit_button or show_github_history_button or show_github_open_issue_button %}
|
6
5
|
<div id="edit-me" class="btn-group">
|
7
6
|
{% if show_github_edit_button %}
|
8
|
-
{% assign repo_url = page.
|
9
|
-
{%
|
10
|
-
{% assign file_path = page.
|
11
|
-
{% else %}
|
12
|
-
{% assign file_path = page.custom_file_path | default: page.path %}
|
13
|
-
{% endif %}
|
7
|
+
{% assign repo_url = page.github.repository_url | default: site.github.repository_url %}
|
8
|
+
{% assign repo_branch = page.github.branch | default: site.github.source.branch %}
|
9
|
+
{% assign file_path = page.github.file_path | default: page.path %}
|
14
10
|
<a role="button" data-bs-toggle="tooltip"
|
15
11
|
title="Propose changes to the content of this page on {{site.theme_variables.git_host | default: 'GitHub' }}"
|
16
|
-
href="{{repo_url}}/blob/{{
|
17
|
-
|
12
|
+
href="{{repo_url}}/blob/{{repo_branch}}/{{file_path}}" class="btn btn-sm hover-primary text-primary"><i
|
13
|
+
class="fa-solid fa-pencil-alt"></i></a>
|
18
14
|
{%- endif %}
|
19
15
|
{%- if show_github_open_issue_button %}
|
20
16
|
<a role="button" data-bs-toggle="tooltip" title="Report an issue"
|
@@ -23,8 +19,8 @@
|
|
23
19
|
{%- endif %}
|
24
20
|
{%- if show_github_history_button %}
|
25
21
|
<a role="button" data-bs-toggle="tooltip" title="Check out the history of this page"
|
26
|
-
href="{{repo_url}}/commits/{{
|
27
|
-
|
22
|
+
href="{{repo_url}}/commits/{{repo_branch}}/{{file_path}}" class="btn btn-sm hover-primary text-primary"><i
|
23
|
+
class="fa-solid fa-history"></i></a>
|
28
24
|
{%- endif %}
|
29
25
|
</div>
|
30
26
|
{%- endif %}
|
data/_includes/head.html
CHANGED
@@ -1,38 +1,42 @@
|
|
1
|
+
{%- capture keywords %}
|
2
|
+
{%- if page.related_pages %}
|
3
|
+
{%- for section in page.related_pages %}
|
4
|
+
{%- unless section[1].size == 0 %}
|
5
|
+
{%- for keywordstr in section[1] %}
|
6
|
+
{%- assign keywordpage = site.pages | where: "page_id", keywordstr | first %}
|
7
|
+
{%- if allkeywords %}
|
8
|
+
{%- assign allkeywords = allkeywords | append: ", " | append: keywordstr | append: ", " | append: keywordpage.title %}
|
9
|
+
{%- else %}
|
10
|
+
{%- assign allkeywords = allkeywords | append: keywordstr | append: ", " | append: keywordpage.title %}
|
11
|
+
{%- endif %}
|
12
|
+
{%- endfor %}
|
13
|
+
{%- endunless %}
|
14
|
+
{%- endfor %}{{allkeywords}}
|
15
|
+
{%- endif %}
|
16
|
+
{%- endcapture %}
|
17
|
+
{%- if page.type %}
|
18
|
+
{%- assign subtitle = page.type | replace: "_", " " %}
|
19
|
+
{%- endif %}
|
20
|
+
{%- capture title %}{% if page.url == "/" %}{{site.title}}{% elsif page.title %}{% if subtitle %}{{subtitle}}: {% endif %}{{ page.title }} | {{ site.title }}{%- else %}{{ site.title }}{% endif %}{% endcapture %}
|
21
|
+
{%- capture description %}{% if page.url == "/" %}{{site.description}}{% elsif page.description %}{{ page.description | strip_html | replace: '\n', ' ' | truncatewords: 30, '...' }}{% elsif page.summary %}{{ page.summary | strip_html | replace: '\n', ' ' | truncatewords: 30, '...' }}{% else %}{{ page.content | strip_html | replace: '\n', ' ' | truncatewords: 30, '...' }}{% endif %}{% endcapture %}
|
1
22
|
<head>
|
2
23
|
<meta charset="utf-8">
|
3
24
|
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
25
|
+
<title>{{title}}</title>
|
4
26
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
5
|
-
<meta name="description" content="{
|
6
|
-
{%- capture keywords %}
|
7
|
-
{%- if page.related_pages %}
|
8
|
-
{%- for section in page.related_pages %}
|
9
|
-
{%- unless section[1].size == 0 %}
|
10
|
-
{%- for keywordstr in section[1] %}
|
11
|
-
{%- assign keywordpage = site.pages | where: "page_id", keywordstr | first %}
|
12
|
-
{%- if allkeywords %}
|
13
|
-
{%- assign allkeywords = allkeywords | append: ", " | append: keywordstr | append: ", " | append: keywordpage.title %}
|
14
|
-
{%- else %}
|
15
|
-
{%- assign allkeywords = allkeywords | append: keywordstr | append: ", " | append: keywordpage.title %}
|
16
|
-
{%- endif %}
|
17
|
-
{%- endfor %}
|
18
|
-
{%- endunless %}
|
19
|
-
{%- endfor %}{{allkeywords}}
|
20
|
-
{%- endif %}
|
21
|
-
{%- endcapture %}
|
27
|
+
<meta name="description" content="{{description}}">
|
22
28
|
<meta name="keywords" content="{{keywords}}">
|
23
|
-
<meta property="og:title" content="{{
|
24
|
-
<meta property="og:description" content="{{
|
29
|
+
<meta property="og:title" content="{{title}}" />
|
30
|
+
<meta property="og:description" content="{{description}}" />
|
31
|
+
<meta property="og:type" content="article">
|
32
|
+
<meta property="og:url" content="{{ page.url | absolute_url }}">
|
25
33
|
<meta property="og:image" content="//{{site.github.url | remove: 'https://' | remove: 'http://'}}/assets/img/apple-touch-icon.png" />
|
26
|
-
<meta name="apple-mobile-web-app-title" content="{{
|
34
|
+
<meta name="apple-mobile-web-app-title" content="{{title}}">
|
27
35
|
<meta name="msapplication-TileColor" content="#{{site.theme_variables.theme_color | default: 0d6efd }}">
|
28
36
|
<meta name="theme-color" content="#{{site.theme_variables.theme_color | default: 0d6efd }}">
|
29
37
|
{%- if page.no_robots %}
|
30
38
|
<meta name="robots" content="noindex" />
|
31
39
|
{%- endif %}
|
32
|
-
{%- if page.type %}
|
33
|
-
{%- assign subtitle = page.type | replace: "_", " " | capitalize %}
|
34
|
-
{%- endif %}
|
35
|
-
<title>{% if page.title %}{% if subtitle %}{{subtitle}}: {% endif %}{{ page.title }} | {{ site.title }}{%- else %}{{ site.title }}{% endif %}</title>
|
36
40
|
<!-- Syntax highlighting -->
|
37
41
|
<link rel="stylesheet" href="{{ 'assets/css/syntax.css' | relative_url }}">
|
38
42
|
<!-- Country flags -->
|
@@ -69,11 +73,12 @@
|
|
69
73
|
<script type="text/javascript" charset="utf8" src="{{ 'assets/js/dataTables.dateTime.min.js' | relative_url }}"></script>
|
70
74
|
<script type="text/javascript" charset="utf8" src="{{ 'assets/js/searchBuilder.bootstrap5.min.js' | relative_url }}"></script>
|
71
75
|
{%- endif %}
|
76
|
+
{%- assign pagelength = site.theme_variables.datatables.pagelength | default: 10 %}
|
72
77
|
<script type="text/javascript">
|
73
78
|
$(document).ready(function () {
|
74
79
|
$('table.display').each(function() {
|
75
80
|
$(this).DataTable({
|
76
|
-
lengthMenu: [[
|
81
|
+
lengthMenu: [[{{ pagelength }}, {{ pagelength | times: 2 }}, {{ pagelength | times: 5 }}, {{ pagelength | times: 10 }}, -1], [{{ pagelength }}, {{ pagelength | times: 2 }}, {{ pagelength | times: 5 }}, {{ pagelength | times: 10 }}, "All"]],
|
77
82
|
stateSave: true,
|
78
83
|
searching: true,
|
79
84
|
{%- if site.theme_variables.datatables.searchbuilder %}
|
@@ -82,13 +87,13 @@
|
|
82
87
|
},
|
83
88
|
{%- endif %}
|
84
89
|
info: true,
|
85
|
-
pageLength:
|
90
|
+
pageLength: {{ pagelength }},
|
86
91
|
language: {
|
87
92
|
searchPlaceholder: "Type here..."
|
88
93
|
},
|
89
94
|
"drawCallback": function ( settings ){
|
90
95
|
var tableId = settings.nTable.id;
|
91
|
-
if(settings.fnRecordsTotal() <
|
96
|
+
if(settings.fnRecordsTotal() < {{ pagelength }}){
|
92
97
|
$('#'+tableId+'_wrapper .dt-length').hide();
|
93
98
|
$('#'+tableId+'_wrapper .dt-paging').hide();
|
94
99
|
$('#'+tableId+'_wrapper .dt-search').hide();
|
@@ -101,6 +106,7 @@
|
|
101
106
|
});
|
102
107
|
</script>
|
103
108
|
{%- endif %}
|
109
|
+
<script src="{{ 'assets/js/custom.js' | relative_url }}?{{site.time | date: '%s'}}"></script>
|
104
110
|
<!-- favicon -->
|
105
111
|
<link rel="apple-touch-icon" sizes="180x180" href="{{ 'assets/img/apple-touch-icon.png' | relative_url }}">
|
106
112
|
<link rel="icon" type="image/png" sizes="32x32" href="{{ 'assets/img/favicon-32x32.png' | relative_url }}">
|
data/_includes/news.html
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
{%- for new in news reversed%}
|
9
9
|
<li>
|
10
10
|
<span class="title mb-1">{{ new.name | escape }}</span>
|
11
|
-
<p class="text-muted"><i class="far fa-calendar me-2"></i><time>{{ new.date | date_to_long_string }}</time>{% if new.linked_pr %} - <i class="fa-solid fa-code-branch me-2"></i><a href="{{ site.github.repository_url | append: '/pull/' | append: new.linked_pr }}">{{new.linked_pr }}</a>{% endif %}</p>
|
11
|
+
<p class="text-muted"><i class="far fa-calendar me-2"></i><time>{{ new.date | date_to_long_string }}</time>{% if new.linked_pr %} - <i class="fa-solid fa-code-branch me-2"></i><a href="{{ site.github.repository_url | append: '/pull/' | append: new.linked_pr }}"><span>{{new.linked_pr }}</span></a>{% endif %}</p>
|
12
12
|
{%- if new.description %}
|
13
13
|
{%- assign word_count = new.description | split: " " | size %}
|
14
14
|
{%- if include.truncate == true and word_count > 40 %}
|
@@ -1,6 +1,6 @@
|
|
1
1
|
{%- assign sidebar = site.data.sidebars[include.sidebar]['subitems'] -%}
|
2
2
|
{%- for sections in sidebar %}
|
3
|
-
{%- assign section = sections.title |
|
3
|
+
{%- assign section = sections.title | replace: " ", "_" %}
|
4
4
|
{%- assign section_pages = site.pages | where:"type", section | where_exp: "item", "item.search_exclude != true" | where_exp: "item", "item.page_id != nil" %}
|
5
5
|
{%- unless section_pages.size == 0 %}
|
6
6
|
<h2>{{sections.title}}</h2>
|
@@ -23,7 +23,7 @@
|
|
23
23
|
<img src="{{page_hit.type_img | relative_url}}" class="type-icon me-2" alt="{{page_hit.type}} icon">
|
24
24
|
{%- endif %}
|
25
25
|
{%- if page_hit.type %}
|
26
|
-
<span class=""><small>{{page_hit.type | replace: "_", " "
|
26
|
+
<span class=""><small>{{page_hit.type | replace: "_", " " }}</small></span>
|
27
27
|
{%- endif %}
|
28
28
|
</div>
|
29
29
|
<a class="stretched-link section-title" aria-label="Go to the {{page_hit.title}} page" href="{{ page_hit.url | relative_url }}">
|
@@ -92,7 +92,7 @@
|
|
92
92
|
{%- for tag in tool.related_pages %}
|
93
93
|
{%- unless tag == page.page_id %}
|
94
94
|
{%- assign related_page = site.pages | where:"page_id",tag | first %}
|
95
|
-
<a href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' '
|
95
|
+
<a href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' ' }}"><span class="badge default-badge">{{ related_page.title | truncate: 25 }}</span></a>
|
96
96
|
{%- endunless %}
|
97
97
|
{%- endfor %}
|
98
98
|
{%- endcapture %}
|
@@ -47,7 +47,7 @@
|
|
47
47
|
{%- for tag in section[1] %}
|
48
48
|
{%- unless tag == page.page_id %}
|
49
49
|
{%- assign related_page = site.pages | where:"page_id",tag | first %}
|
50
|
-
<a class="nohover" href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' '
|
50
|
+
<a class="nohover" href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' ' }}"><span class="badge default-badge">{{ related_page.title | truncate: 25 }}</span></a>
|
51
51
|
{%- endunless %}
|
52
52
|
{%- endfor %}
|
53
53
|
{%- endunless %}
|
@@ -126,7 +126,7 @@
|
|
126
126
|
{%- for tag in tool.related_pages %}
|
127
127
|
{%- unless tag == page.page_id %}
|
128
128
|
{%- assign related_page = site.pages | where:"page_id",tag | first %}
|
129
|
-
<a href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' '
|
129
|
+
<a href="{{related_page.url | relative_url }}" data-bs-toggle="tooltip" title="{{related_page.type | replace: '_', ' ' }}"><span class="badge default-badge">{{ related_page.title | truncate: 25 }}</span></a>
|
130
130
|
{%- endunless %}
|
131
131
|
{%- endfor %}
|
132
132
|
{%- endcapture %}
|
@@ -37,7 +37,7 @@
|
|
37
37
|
<div class="col">
|
38
38
|
<div class="input-group">
|
39
39
|
<span class="input-group-text" id="search-label-tiles"><i class="fa-solid fa-magnifying-glass"></i></span>
|
40
|
-
<input type="text" id="title-search" class="form-control" onkeyup="StartSearch();" placeholder="Find your page..." aria-label="{{page.type | replace: '_', ' '
|
40
|
+
<input type="text" id="title-search" class="form-control" onkeyup="StartSearch();" placeholder="Find your page..." aria-label="{{page.type | replace: '_', ' ' }}" aria-describedby="search-label-tiles">
|
41
41
|
<button class="btn btn-primary" title="Button to clear search" type="button" id="clearsearch">
|
42
42
|
<i class="fa-solid fa-backspace"></i>
|
43
43
|
</button>
|
@@ -90,7 +90,7 @@
|
|
90
90
|
<img src="{{current_page.type_img | relative_url}}" class="type-icon me-2" alt="{{current_page.type}} icon">
|
91
91
|
{%- endif %}
|
92
92
|
{%- if current_page.type %}
|
93
|
-
<span class=""><small>{{current_page.type | replace: "_", " "
|
93
|
+
<span class=""><small>{{current_page.type | replace: "_", " " }}</small></span>
|
94
94
|
{%- endif %}
|
95
95
|
</div>
|
96
96
|
<a class="stretched-link section-title" aria-label="Go to the {{current_page.title}} page" href="{{ current_page.url | relative_url }}">
|
data/_layouts/page.html
CHANGED
@@ -8,7 +8,7 @@ layout: default
|
|
8
8
|
{%- endif %}
|
9
9
|
{%- if page.title %}
|
10
10
|
{%- if page.type and site.theme_variables.breadcrumb != true %}
|
11
|
-
{%- assign subtitle = page.type | replace: "_", " "
|
11
|
+
{%- assign subtitle = page.type | replace: "_", " " %}
|
12
12
|
<h1 class="has-subtitle order-1 order-md-0"><span class="d-block text-secondary fs-4 ff-body">{{subtitle}}</span><span class="visually-hidden">:</span> {{ page.title }}
|
13
13
|
{%- else %}
|
14
14
|
<h1>{{ page.title }}
|
data/assets/css/main.scss
CHANGED
@@ -98,33 +98,34 @@ body img {
|
|
98
98
|
font-family: $font-family-theme !important;
|
99
99
|
}
|
100
100
|
|
101
|
+
// Add external link icon to all urls
|
102
|
+
#content a:is([href^="http"], [href^="//"]):not([href^="{{ site.url }}"]):not([href^="mailto:"]):not([href^="tel:"]):not(:has(> span:only-child)):not(:has(> img)):not(.btn):not(.no-ext-icon)::after {
|
103
|
+
content: "\f35d";
|
104
|
+
font-family: "Font Awesome 6 Free";
|
105
|
+
font-weight: 900;
|
106
|
+
display: inline-block;
|
107
|
+
margin-left: .4em;
|
108
|
+
font-size: .60em;
|
109
|
+
line-height: 1;
|
110
|
+
text-rendering: auto;
|
111
|
+
-webkit-font-smoothing: antialiased;
|
112
|
+
-moz-osx-font-smoothing: grayscale;
|
113
|
+
pointer-events: none;
|
114
|
+
vertical-align: middle;
|
115
|
+
}
|
116
|
+
|
101
117
|
/*-----Layout-----*/
|
102
118
|
|
103
119
|
#main {
|
104
120
|
grid-area: main;
|
105
121
|
}
|
106
122
|
|
107
|
-
|
108
|
-
|
109
|
-
display: grid;
|
110
|
-
grid-template-areas:
|
111
|
-
"intro"
|
112
|
-
"toc"
|
113
|
-
"content";
|
114
|
-
grid-template-rows: auto auto 1fr;
|
115
|
-
}
|
123
|
+
#intro {
|
124
|
+
grid-area: intro;
|
116
125
|
}
|
117
|
-
@include media-breakpoint-up(xl) {
|
118
|
-
#main {
|
119
|
-
grid-template-areas:
|
120
|
-
"intro toc"
|
121
|
-
"content toc";
|
122
|
-
grid-template-rows: auto 1fr;
|
123
|
-
}
|
124
126
|
|
125
|
-
|
126
|
-
|
127
|
-
}
|
127
|
+
#sidebar {
|
128
|
+
grid-area: sidebar;
|
128
129
|
}
|
129
130
|
|
130
131
|
#toc {
|
@@ -141,8 +142,36 @@ body img {
|
|
141
142
|
}
|
142
143
|
}
|
143
144
|
|
145
|
+
@include media-breakpoint-up(md) {
|
146
|
+
#main {
|
147
|
+
display: grid;
|
148
|
+
grid-template-areas:
|
149
|
+
"intro"
|
150
|
+
"toc"
|
151
|
+
"content";
|
152
|
+
grid-template-rows: auto auto 1fr;
|
153
|
+
}
|
154
|
+
}
|
155
|
+
|
156
|
+
|
157
|
+
@include media-breakpoint-up(lg) {
|
158
|
+
#layout {
|
159
|
+
display: grid;
|
160
|
+
grid-template-areas: "sidebar main";
|
161
|
+
grid-template-columns: 3fr 9fr;
|
162
|
+
}
|
163
|
+
}
|
164
|
+
|
144
165
|
@include media-breakpoint-up(xl) {
|
145
|
-
#
|
166
|
+
#main.add-grid {
|
167
|
+
grid-template-areas:
|
168
|
+
"intro toc"
|
169
|
+
"content toc";
|
170
|
+
grid-template-rows: auto 1fr;
|
171
|
+
grid-template-columns: 5fr 2fr;
|
172
|
+
}
|
173
|
+
|
174
|
+
#main.add-grid #toc {
|
146
175
|
top: $spacer * 3;
|
147
176
|
right: 0;
|
148
177
|
z-index: 2;
|
@@ -150,15 +179,12 @@ body img {
|
|
150
179
|
overflow-y: auto;
|
151
180
|
margin-left: $spacer * 3;
|
152
181
|
}
|
153
|
-
}
|
154
182
|
|
155
|
-
#
|
156
|
-
|
183
|
+
#layout {
|
184
|
+
grid-template-columns: 2fr 9fr;
|
185
|
+
}
|
157
186
|
}
|
158
187
|
|
159
|
-
#sidebar {
|
160
|
-
grid-area: sidebar;
|
161
|
-
}
|
162
188
|
|
163
189
|
#content {
|
164
190
|
grid-area: content;
|
@@ -169,19 +195,6 @@ body img {
|
|
169
195
|
}
|
170
196
|
}
|
171
197
|
|
172
|
-
@include media-breakpoint-up(lg) {
|
173
|
-
#layout {
|
174
|
-
display: grid;
|
175
|
-
grid-template-areas: "sidebar main";
|
176
|
-
grid-template-columns: 3fr 9fr;
|
177
|
-
}
|
178
|
-
}
|
179
|
-
|
180
|
-
@include media-breakpoint-up(xl) {
|
181
|
-
#layout {
|
182
|
-
grid-template-columns: 2fr 9fr;
|
183
|
-
}
|
184
|
-
}
|
185
198
|
|
186
199
|
/*-----Blockquote-----*/
|
187
200
|
|
data/assets/js/custom.js
ADDED
File without changes
|
data/assets/js/toc.js
CHANGED
@@ -5,85 +5,114 @@
|
|
5
5
|
title: '<i>Jump to...</i>',
|
6
6
|
minimumHeaders: 3,
|
7
7
|
headers: 'h1, h2, h3, h4, h5, h6',
|
8
|
-
listType: 'ol',
|
9
|
-
showEffect: 'show',
|
10
|
-
showSpeed: 'slow',
|
8
|
+
listType: 'ol', // values: [ol|ul]
|
9
|
+
showEffect: 'show', // values: [show|slideDown|fadeIn|none]
|
10
|
+
showSpeed: 'slow', // set to 0 to deactivate effect
|
11
11
|
classes: {
|
12
12
|
list: '',
|
13
13
|
item: '',
|
14
14
|
link: '',
|
15
15
|
toc: ''
|
16
16
|
}
|
17
|
-
}
|
18
|
-
|
17
|
+
};
|
18
|
+
|
19
|
+
// Do not mutate defaults; merge into a fresh object
|
20
|
+
var settings = $.extend({}, defaults, options);
|
19
21
|
|
22
|
+
// Encode fragment identifiers safely (e.g., handle !'()*)
|
20
23
|
function fixedEncodeURIComponent(str) {
|
21
24
|
return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
|
22
25
|
return '%' + c.charCodeAt(0).toString(16);
|
23
26
|
});
|
24
27
|
}
|
25
28
|
|
29
|
+
// Build an <a> for a given header; ensure it has an id
|
26
30
|
function createLink(header) {
|
27
|
-
var innerText = header.textContent || header.innerText;
|
28
|
-
|
31
|
+
var innerText = header.textContent || header.innerText || '';
|
32
|
+
if (!header.id) {
|
33
|
+
header.id = innerText.trim()
|
34
|
+
? innerText.trim().replace(/\s+/g, '-').toLowerCase()
|
35
|
+
: ('heading-' + Math.random().toString(36).slice(2, 8)); // fallback id
|
36
|
+
}
|
37
|
+
return "<a class='" + settings.classes.link + "' href='#" +
|
38
|
+
fixedEncodeURIComponent(header.id) + "'>" + innerText + "</a>";
|
29
39
|
}
|
30
40
|
|
41
|
+
// Collect headers and ensure they have IDs (filter out those that still don't)
|
31
42
|
var headers = $(settings.headers).filter(function () {
|
32
|
-
// Ensure headers have IDs
|
33
43
|
if (!this.id) {
|
34
|
-
|
44
|
+
var text = $(this).text().trim();
|
45
|
+
this.id = text ? text.replace(/\s+/g, '-').toLowerCase() : '';
|
35
46
|
}
|
36
47
|
return this.id;
|
37
48
|
});
|
38
49
|
|
39
|
-
var output = $(this);
|
50
|
+
var output = $(this); // the TOC container (e.g., #toc-contents)
|
51
|
+
var $main = $('#main');
|
40
52
|
|
41
|
-
//
|
42
|
-
if (
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
return; // Exit early if there are no headers
|
47
|
-
}
|
53
|
+
// Prevents calling get_level(headers[0]) on undefined and collapses layout/space.
|
54
|
+
if (!headers.length || headers.length < settings.minimumHeaders || !output.length) {
|
55
|
+
$main.removeClass('add-grid'); // collapse layout (your existing side-effect + our flag)
|
56
|
+
output.empty().hide(); // hide/clear inner TOC container
|
57
|
+
return;
|
48
58
|
}
|
49
59
|
|
50
|
-
|
51
|
-
|
52
|
-
}
|
60
|
+
// If speed is 0, disable visual effect
|
61
|
+
if (settings.showSpeed === 0) settings.showEffect = 'none';
|
53
62
|
|
54
|
-
|
63
|
+
// Optional extra class on the container
|
64
|
+
output.addClass(settings.classes.toc);
|
55
65
|
|
56
66
|
var render = {
|
57
|
-
show:
|
67
|
+
show: function () { output.hide().html(html).show(settings.showSpeed); },
|
58
68
|
slideDown: function () { output.hide().html(html).slideDown(settings.showSpeed); },
|
59
|
-
fadeIn:
|
60
|
-
none:
|
69
|
+
fadeIn: function () { output.hide().html(html).fadeIn(settings.showSpeed); },
|
70
|
+
none: function () { output.html(html); }
|
71
|
+
};
|
72
|
+
|
73
|
+
// Resilient parser of header levels (H1..H6 → 1..6). Returns NaN if invalid.
|
74
|
+
var get_level = function (ele) {
|
75
|
+
return (ele && ele.nodeName) ? parseInt(ele.nodeName.replace(/H/i, ''), 10) : NaN;
|
61
76
|
};
|
62
77
|
|
63
|
-
|
64
|
-
var
|
65
|
-
|
78
|
+
// Validate first level before proceeding
|
79
|
+
var level = get_level(headers[0]);
|
80
|
+
if (!isFinite(level)) {
|
81
|
+
output.hide().empty();
|
82
|
+
return;
|
83
|
+
}
|
84
|
+
|
85
|
+
var this_level;
|
66
86
|
var html = settings.title + " <" + settings.listType + " class=\"" + settings.classes.list + "\">";
|
67
87
|
|
88
|
+
// Build nested list based on header levels
|
68
89
|
headers.each(function (_, header) {
|
69
90
|
this_level = get_level(header);
|
70
|
-
if (this_level
|
91
|
+
if (!isFinite(this_level)) return; // skip anything unexpected
|
92
|
+
|
93
|
+
if (this_level === level) { // same level; same indent
|
71
94
|
html += "<li class=\"" + settings.classes.item + "\">" + createLink(header);
|
72
|
-
} else if (this_level <= level) { //
|
95
|
+
} else if (this_level <= level) { // moving up; close lists
|
73
96
|
for (var i = this_level; i < level; i++) {
|
74
|
-
html += "</li></" + settings.listType + ">"
|
97
|
+
html += "</li></" + settings.listType + ">";
|
75
98
|
}
|
76
99
|
html += "<li class=\"" + settings.classes.item + "\">" + createLink(header);
|
77
|
-
} else
|
78
|
-
for (
|
100
|
+
} else { // moving down; open nested lists
|
101
|
+
for (var j = this_level; j > level; j--) {
|
79
102
|
html += "<" + settings.listType + " class=\"" + settings.classes.list + "\">" +
|
80
|
-
|
103
|
+
"<li class=\"" + settings.classes.item + "\">";
|
81
104
|
}
|
82
105
|
html += createLink(header);
|
83
106
|
}
|
84
|
-
level = this_level; // update for
|
107
|
+
level = this_level; // update for next header
|
85
108
|
});
|
109
|
+
|
86
110
|
html += "</" + settings.listType + ">";
|
87
|
-
|
111
|
+
|
112
|
+
// Render with the selected effect
|
113
|
+
(render[settings.showEffect] || render.none)();
|
114
|
+
|
115
|
+
// Add grid + flag on #main (if your layout uses it), and flag #toc so CSS applies margin.
|
116
|
+
$main.addClass('add-grid');
|
88
117
|
};
|
89
118
|
})(jQuery);
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: elixir-toolkit-theme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 5.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bedroesb
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2025-
|
11
|
+
date: 2025-08-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: jekyll
|
@@ -503,6 +503,7 @@ files:
|
|
503
503
|
- assets/js/bootstrap.bundle.min.js
|
504
504
|
- assets/js/bootstrap.bundle.min.js.map
|
505
505
|
- assets/js/clipboard.min.js
|
506
|
+
- assets/js/custom.js
|
506
507
|
- assets/js/dataTables.bootstrap5.min.js
|
507
508
|
- assets/js/dataTables.dateTime.min.js
|
508
509
|
- assets/js/dataTables.searchBuilder.min.js
|