minimal-mistakes-jekyll 4.25.0 → 4.26.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 +69 -10
- data/LICENSE +1 -1
- data/README.md +19 -12
- data/_data/ui-text.yml +52 -0
- data/_includes/after-content.html +0 -0
- data/_includes/before-related.html +0 -0
- data/_includes/comments-providers/giscus.html +11 -1
- data/_includes/copyright.html +1 -1
- data/_includes/copyright.js +1 -1
- data/_includes/documents-collection.html +2 -4
- data/_includes/figure +2 -0
- data/_includes/head.html +5 -2
- data/_includes/masthead.html +5 -1
- data/_includes/nav_list +18 -17
- data/_includes/page__hero.html +1 -3
- data/_includes/page__related.html +11 -0
- data/_includes/paginator-v1.html +70 -0
- data/_includes/paginator-v2.html +68 -0
- data/_includes/paginator.html +5 -68
- data/_includes/posts-category.html +3 -4
- data/_includes/posts-tag.html +3 -4
- data/_includes/posts-taxonomy.html +37 -0
- data/_includes/schema.html +16 -0
- data/_includes/seo.html +15 -43
- data/_includes/toc.html +13 -6
- data/_layouts/archive.html +1 -1
- data/_layouts/categories.html +1 -37
- data/_layouts/default.html +1 -1
- data/_layouts/single.html +10 -25
- data/_layouts/tags.html +1 -37
- data/_sass/minimal-mistakes/_copyright.scss +1 -1
- data/_sass/minimal-mistakes/_utilities.scss +57 -0
- data/assets/js/_main.js +123 -45
- data/assets/js/lunr/lunr-store.js +1 -1
- data/assets/js/main.min.js +2 -2
- data/assets/js/main.min.js.map +1 -0
- data/assets/js/plugins/jquery.greedy-navigation.js +1 -0
- metadata +10 -2
data/assets/js/_main.js
CHANGED
@@ -2,39 +2,18 @@
|
|
2
2
|
jQuery plugin settings and other scripts
|
3
3
|
========================================================================== */
|
4
4
|
|
5
|
-
$(function() {
|
5
|
+
$(document).ready(function () {
|
6
6
|
// FitVids init
|
7
7
|
$("#main").fitVids();
|
8
8
|
|
9
|
-
// Sticky sidebar
|
10
|
-
var stickySideBar = function() {
|
11
|
-
var show =
|
12
|
-
$(".author__urls-wrapper").find("button").length === 0
|
13
|
-
? $(window).width() > 1024 // width should match $large Sass variable
|
14
|
-
: !$(".author__urls-wrapper").find("button").is(":visible");
|
15
|
-
if (show) {
|
16
|
-
// fix
|
17
|
-
$(".sidebar").addClass("sticky");
|
18
|
-
} else {
|
19
|
-
// unfix
|
20
|
-
$(".sidebar").removeClass("sticky");
|
21
|
-
}
|
22
|
-
};
|
23
|
-
|
24
|
-
stickySideBar();
|
25
|
-
|
26
|
-
$(window).resize(function() {
|
27
|
-
stickySideBar();
|
28
|
-
});
|
29
|
-
|
30
9
|
// Follow menu drop down
|
31
|
-
$(".author__urls-wrapper
|
10
|
+
$(".author__urls-wrapper button").on("click", function () {
|
32
11
|
$(".author__urls").toggleClass("is--visible");
|
33
12
|
$(".author__urls-wrapper").find("button").toggleClass("open");
|
34
13
|
});
|
35
14
|
|
36
15
|
// Close search screen with Esc key
|
37
|
-
$(document).keyup(function(e) {
|
16
|
+
$(document).keyup(function (e) {
|
38
17
|
if (e.keyCode === 27) {
|
39
18
|
if ($(".initial-content").hasClass("is--hidden")) {
|
40
19
|
$(".search-content").toggleClass("is--visible");
|
@@ -44,12 +23,12 @@ $(function() {
|
|
44
23
|
});
|
45
24
|
|
46
25
|
// Search toggle
|
47
|
-
$(".search__toggle").on("click", function() {
|
26
|
+
$(".search__toggle").on("click", function () {
|
48
27
|
$(".search-content").toggleClass("is--visible");
|
49
28
|
$(".initial-content").toggleClass("is--hidden");
|
50
29
|
// set focus on input
|
51
|
-
setTimeout(function() {
|
52
|
-
$(".search-content
|
30
|
+
setTimeout(function () {
|
31
|
+
$(".search-content input").focus();
|
53
32
|
}, 400);
|
54
33
|
});
|
55
34
|
|
@@ -58,11 +37,11 @@ $(function() {
|
|
58
37
|
offset: 20,
|
59
38
|
speed: 400,
|
60
39
|
speedAsDuration: true,
|
61
|
-
durationMax: 500
|
40
|
+
durationMax: 500,
|
62
41
|
});
|
63
42
|
|
64
43
|
// Gumshoe scroll spy init
|
65
|
-
if($("nav.toc").length > 0) {
|
44
|
+
if ($("nav.toc").length > 0) {
|
66
45
|
var spy = new Gumshoe("nav.toc a", {
|
67
46
|
// Active classes
|
68
47
|
navClass: "active", // applied to the nav list item
|
@@ -77,10 +56,27 @@ $(function() {
|
|
77
56
|
reflow: true, // if true, listen for reflows
|
78
57
|
|
79
58
|
// Event support
|
80
|
-
events: true // if true, emit custom events
|
59
|
+
events: true, // if true, emit custom events
|
81
60
|
});
|
82
61
|
}
|
83
62
|
|
63
|
+
// Auto scroll sticky ToC with content
|
64
|
+
document.addEventListener("gumshoeActivate", function (event) {
|
65
|
+
var target = event.target;
|
66
|
+
var scrollOptions = { behavior: "auto", block: "nearest", inline: "start" };
|
67
|
+
|
68
|
+
var tocElement = document.querySelector("aside.sidebar__right.sticky");
|
69
|
+
if (!tocElement) return;
|
70
|
+
if (window.getComputedStyle(tocElement).position !== "sticky") return;
|
71
|
+
|
72
|
+
if (target.parentElement.classList.contains("toc__menu") && target == target.parentElement.firstElementChild) {
|
73
|
+
// Scroll to top instead
|
74
|
+
document.querySelector("nav.toc header").scrollIntoView(scrollOptions);
|
75
|
+
} else {
|
76
|
+
target.scrollIntoView(scrollOptions);
|
77
|
+
}
|
78
|
+
});
|
79
|
+
|
84
80
|
// add lightbox class to all image links
|
85
81
|
$(
|
86
82
|
"a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif'],a[href$='.webp']"
|
@@ -99,38 +95,120 @@ $(function() {
|
|
99
95
|
gallery: {
|
100
96
|
enabled: true,
|
101
97
|
navigateByImgClick: true,
|
102
|
-
preload: [0, 1] // Will preload 0 - before current, and 1 after the current image
|
98
|
+
preload: [0, 1], // Will preload 0 - before current, and 1 after the current image
|
103
99
|
},
|
104
100
|
image: {
|
105
|
-
tError: '<a href="%url%">Image #%curr%</a> could not be loaded.'
|
101
|
+
tError: '<a href="%url%">Image #%curr%</a> could not be loaded.',
|
106
102
|
},
|
107
103
|
removalDelay: 500, // Delay in milliseconds before popup is removed
|
108
104
|
// Class that is added to body when popup is open.
|
109
105
|
// make it unique to apply your CSS animations just to this exact popup
|
110
106
|
mainClass: "mfp-zoom-in",
|
111
107
|
callbacks: {
|
112
|
-
beforeOpen: function() {
|
108
|
+
beforeOpen: function () {
|
113
109
|
// just a hack that adds mfp-anim class to markup
|
114
110
|
this.st.image.markup = this.st.image.markup.replace(
|
115
111
|
"mfp-figure",
|
116
112
|
"mfp-figure mfp-with-anim"
|
117
113
|
);
|
118
|
-
}
|
114
|
+
},
|
119
115
|
},
|
120
116
|
closeOnContentClick: true,
|
121
|
-
midClick: true // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.
|
117
|
+
midClick: true, // allow opening popup on middle mouse click. Always set it to true if you don't provide alternative source.
|
122
118
|
});
|
123
119
|
|
124
120
|
// Add anchors for headings
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
121
|
+
document
|
122
|
+
.querySelector(".page__content")
|
123
|
+
.querySelectorAll("h1, h2, h3, h4, h5, h6")
|
124
|
+
.forEach(function (element) {
|
125
|
+
var id = element.getAttribute("id");
|
126
|
+
if (id) {
|
127
|
+
var anchor = document.createElement("a");
|
128
|
+
anchor.className = "header-link";
|
129
|
+
anchor.href = "#" + id;
|
130
|
+
anchor.innerHTML =
|
131
|
+
'<span class="sr-only">Permalink</span><i class="fas fa-link"></i>';
|
132
|
+
anchor.title = "Permalink";
|
133
|
+
element.appendChild(anchor);
|
134
|
+
}
|
135
|
+
});
|
136
|
+
|
137
|
+
// Add copy button for <pre> blocks
|
138
|
+
var copyText = function (text) {
|
139
|
+
if (document.queryCommandEnabled("copy") && navigator.clipboard) {
|
140
|
+
navigator.clipboard.writeText(text).then(
|
141
|
+
() => true,
|
142
|
+
() => console.error("Failed to copy text to clipboard: " + text)
|
143
|
+
);
|
144
|
+
return true;
|
145
|
+
} else {
|
146
|
+
var isRTL = document.documentElement.getAttribute("dir") === "rtl";
|
147
|
+
|
148
|
+
var textarea = document.createElement("textarea");
|
149
|
+
textarea.className = "clipboard-helper";
|
150
|
+
textarea.style[isRTL ? "right" : "left"] = "-9999px";
|
151
|
+
// Move element to the same position vertically
|
152
|
+
var yPosition = window.pageYOffset || document.documentElement.scrollTop;
|
153
|
+
textarea.style.top = yPosition + "px";
|
154
|
+
|
155
|
+
textarea.setAttribute("readonly", "");
|
156
|
+
textarea.value = text;
|
157
|
+
document.body.appendChild(textarea);
|
158
|
+
|
159
|
+
var success = true;
|
160
|
+
try {
|
161
|
+
textarea.select();
|
162
|
+
success = document.execCommand("copy");
|
163
|
+
} catch (e) {
|
164
|
+
success = false;
|
165
|
+
}
|
166
|
+
textarea.parentNode.removeChild(textarea);
|
167
|
+
return success;
|
134
168
|
}
|
135
|
-
}
|
169
|
+
};
|
170
|
+
|
171
|
+
var copyButtonEventListener = function (event) {
|
172
|
+
var thisButton = event.target;
|
173
|
+
|
174
|
+
// Locate the <code> element
|
175
|
+
var codeBlock = thisButton.nextElementSibling;
|
176
|
+
while (codeBlock && codeBlock.tagName.toLowerCase() !== "code") {
|
177
|
+
codeBlock = codeBlock.nextElementSibling;
|
178
|
+
}
|
179
|
+
if (!codeBlock) {
|
180
|
+
// No <code> found - wtf?
|
181
|
+
console.warn(thisButton);
|
182
|
+
throw new Error("No code block found for this button.");
|
183
|
+
}
|
184
|
+
|
185
|
+
// Skip line numbers if present (i.e. {% highlight lineno %})
|
186
|
+
var realCodeBlock = codeBlock.querySelector("td.code, td.rouge-code");
|
187
|
+
if (realCodeBlock) {
|
188
|
+
codeBlock = realCodeBlock;
|
189
|
+
}
|
190
|
+
var result = copyText(codeBlock.innerText);
|
191
|
+
// Restore the focus to the button
|
192
|
+
thisButton.focus();
|
193
|
+
return result;
|
194
|
+
};
|
195
|
+
|
196
|
+
if (window.enable_copy_code_button) {
|
197
|
+
document
|
198
|
+
.querySelectorAll(".page__content pre > code")
|
199
|
+
.forEach(function (element, index, parentList) {
|
200
|
+
// Locate the <pre> element
|
201
|
+
var container = element.parentElement;
|
202
|
+
// Sanity check - don't add an extra button if there's already one
|
203
|
+
if (container.firstElementChild.tagName.toLowerCase() !== "code") {
|
204
|
+
return;
|
205
|
+
}
|
206
|
+
var copyButton = document.createElement("button");
|
207
|
+
copyButton.title = "Copy to clipboard";
|
208
|
+
copyButton.className = "clipboard-copy-button";
|
209
|
+
copyButton.innerHTML = '<span class="sr-only">Copy code</span><i class="far fa-copy"></i>';
|
210
|
+
copyButton.addEventListener("click", copyButtonEventListener);
|
211
|
+
container.prepend(copyButton);
|
212
|
+
});
|
213
|
+
}
|
136
214
|
});
|
@@ -47,7 +47,7 @@ var store = [
|
|
47
47
|
}{%- unless forloop.last and l -%},{%- endunless -%}
|
48
48
|
{%- endfor -%}
|
49
49
|
{%- endfor -%}{%- if site.lunr.search_within_pages -%},
|
50
|
-
{%- assign pages = site.pages | where_exp:'doc','doc.search != false
|
50
|
+
{%- assign pages = site.pages | where_exp: 'doc', 'doc.search != false' | where_exp: 'doc', 'doc.title != null' -%}
|
51
51
|
{%- for doc in pages -%}
|
52
52
|
{%- if forloop.last -%}
|
53
53
|
{%- assign l = true -%}
|