Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e664d1d4d6 | ||
|
|
08e14587cd | ||
|
|
ca12dcd340 | ||
|
|
74ea18ecc5 | ||
|
|
7127afad90 | ||
|
|
3b43fac12b | ||
|
|
f5dafab391 | ||
|
|
480e81d285 | ||
|
|
cd928021ea | ||
|
|
80b6f60205 | ||
|
|
16fc624b82 | ||
|
|
f0037aeb00 | ||
|
|
1b30ffdec2 | ||
|
|
26c1989bf6 | ||
|
|
cb4acd9423 | ||
|
|
64a34ee5ae | ||
|
|
843fa688cc | ||
|
|
8da334b517 | ||
|
|
9b68374559 | ||
|
|
06820bc6b1 | ||
|
|
d7af62a34b | ||
|
|
129500b852 | ||
|
|
93d29be369 | ||
|
|
31cb045a61 | ||
|
|
abf71c6b2a | ||
|
|
3f83a0df91 | ||
|
|
b83ab5600c | ||
|
|
b797deffeb | ||
|
|
4e41e73558 | ||
|
|
d90cea5ef3 | ||
|
|
7cd711e416 | ||
|
|
d84c3ded70 | ||
|
|
0cf24b028d | ||
|
|
90df6afc68 | ||
|
|
cf0c046dd2 | ||
|
|
44760c989e | ||
|
|
dce8f9c10a | ||
|
|
3f1f7da5c8 | ||
|
|
d06e437ced | ||
|
|
9164fda18a | ||
|
|
df8a030a42 | ||
|
|
9baef1bda2 | ||
|
|
e4c0689cda | ||
|
|
29acb2a0bf | ||
|
|
60b5bacca8 | ||
|
|
2413ea7204 | ||
|
|
d09bf47087 | ||
|
|
ac2975a8dd | ||
|
|
146186ab82 | ||
|
|
c7184ba2a2 | ||
|
|
63f3240366 | ||
|
|
01150a8dac | ||
|
|
737c011d46 | ||
|
|
b93ec8ca34 | ||
|
|
baec5d00b5 | ||
|
|
54e141aa0b | ||
|
|
346c8a9257 | ||
|
|
7fa5ac49db | ||
|
|
2e9e2ab312 | ||
|
|
a66cf1d700 | ||
|
|
a1ff46cc59 | ||
|
|
5ed1f79557 | ||
|
|
a44dc2f914 | ||
|
|
94e8280950 | ||
|
|
8625e0708a | ||
|
|
097c01eff1 | ||
|
|
960d6af1a2 | ||
|
|
bd5f157833 | ||
|
|
d5dae86319 | ||
|
|
102924ff94 | ||
|
|
59111d1e01 | ||
|
|
4a38b5fae0 | ||
|
|
3dbe89d3f0 | ||
|
|
fb74bde6f6 | ||
|
|
10f62bb9ac | ||
|
|
c1094cad44 | ||
|
|
78817f9c66 | ||
|
|
7f414f4968 | ||
|
|
4501e4f4b0 | ||
|
|
397c13f087 | ||
|
|
1e78b160ca | ||
|
|
8eb880aaa0 | ||
|
|
67c08a05fd | ||
|
|
65c401b319 | ||
|
|
9be0551c69 | ||
|
|
aefe633770 | ||
|
|
adfdf4b1d9 | ||
|
|
1d4cad2fd7 | ||
|
|
f59711945e | ||
|
|
8efaa7e46a | ||
|
|
246c678028 | ||
|
|
81f7851347 | ||
|
|
ea2b6de555 | ||
|
|
622005cb44 | ||
|
|
cc4471e4dd | ||
|
|
bcb7343b17 | ||
|
|
c510b51a43 | ||
|
|
d41a284bd2 | ||
|
|
f405d24ce2 | ||
|
|
d0d267697e | ||
|
|
8f5140ab42 | ||
|
|
afd8cfd99e |
@@ -0,0 +1 @@
|
||||
custom: https://www.paypal.me/mmistakes
|
||||
@@ -1,3 +1,93 @@
|
||||
## [4.16.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.4)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Update Brazilian Portuguese localized UI text strings. [#2162](https://github.com/mmistakes/minimal-mistakes/pull/2162)
|
||||
- Update Font Awesome to v5.8.2. [#2150](https://github.com/mmistakes/minimal-mistakes/pull/2150)
|
||||
- Add missing Spanish localized UI text strings. [#2149](https://github.com/mmistakes/minimal-mistakes/pull/2149)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix arithmetic in `_form.scss` partial. [#2169](https://github.com/mmistakes/minimal-mistakes/pull/2169)
|
||||
- Fix pound symbol not displaying properly for post categories and tags. [#2156](https://github.com/mmistakes/minimal-mistakes/issues/2156)
|
||||
- Fix permalink stacking order and click-able area in archives.
|
||||
|
||||
## [4.16.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.3)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Update jQuery to v3.4.1. [#2137](https://github.com/mmistakes/minimal-mistakes/issues/2137)
|
||||
- Update Gumshoe to v5.1.1. [#2140](https://github.com/mmistakes/minimal-mistakes/issues/2140)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix JavaScript error when resizing pages with table of contents. [#2140](https://github.com/mmistakes/minimal-mistakes/issues/2140)
|
||||
|
||||
## [4.16.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.2)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Revert jQuery back to version v3.3.1, v.3.4.0 causes issues with other plugins that haven't been updated. [#2137](https://github.com/mmistakes/minimal-mistakes/issues/2137)
|
||||
|
||||
## [4.16.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.1)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Update [`compress` layout](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#compress-layout) to v3.1.0. [#2128](https://github.com/mmistakes/minimal-mistakes/pull/2128)
|
||||
- Update jQuery to v3.4.0. [#2129](https://github.com/mmistakes/minimal-mistakes/pull/2129)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix Gumshoe related JavaScript error on pages without a table of contents. [#2124](https://github.com/mmistakes/minimal-mistakes/pull/2124)
|
||||
|
||||
## [4.16.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.0)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Improve search `input` semantics for Lunr and Google search providers. [#2123](https://github.com/mmistakes/minimal-mistakes/pull/2123)
|
||||
- Allow adding JavaScript files after those bundled in the theme. [#2110](https://github.com/mmistakes/minimal-mistakes/issues/2110) [#2116](https://github.com/mmistakes/minimal-mistakes/pull/2116)
|
||||
- Add `$max-width` Sass variable for adjusting page content's maximum width. [#2093](https://github.com/mmistakes/minimal-mistakes/pull/2093)
|
||||
- Add Thai localized UI text strings. [#2111](https://github.com/mmistakes/minimal-mistakes/pull/2111)
|
||||
- Update Font Awesome to [v5.8.1](https://github.com/FortAwesome/Font-Awesome/releases/tag/5.8.1). [#2102](https://github.com/mmistakes/minimal-mistakes/pull/2102)
|
||||
- Add missing Vietnamese localized UI text strings. [#2097](https://github.com/mmistakes/minimal-mistakes/pull/2097)
|
||||
- Replace jQuery Smooth Scroll with Smooth Scroll + Gumshoe. [#2082](https://github.com/mmistakes/minimal-mistakes/pull/2082)
|
||||
- Add styling for [GFM task lists](https://help.github.com/en/articles/about-task-lists#creating-task-lists). [#2092](https://github.com/mmistakes/minimal-mistakes/issues/2092)
|
||||
- Update Google Universal Analytics to load async. [#2079](https://github.com/mmistakes/minimal-mistakes/pull/2079)
|
||||
- Remove Google+ social sharing button, comment provider, and author link configs from theme.
|
||||
- Add missing Chinese text strings. [#2072](https://github.com/mmistakes/minimal-mistakes/pull/2072)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix table of contents active link styling.
|
||||
- Add missing Hindi localized UI text strings. [#2105](https://github.com/mmistakes/minimal-mistakes/pull/2105) [#2106](https://github.com/mmistakes/minimal-mistakes/pull/2106)
|
||||
- Fix Brazilian Portuguese text strings. [#2098](https://github.com/mmistakes/minimal-mistakes/pull/2098)
|
||||
- Fix typo in French `results_found` text string. [#2096](https://github.com/mmistakes/minimal-mistakes/pull/2096)
|
||||
- Fix figures inside of list elements. [#2094](https://github.com/mmistakes/minimal-mistakes/pull/2094)
|
||||
- Remove Font Awesome `data-search-pseudo-elements` attribute as it degrades smooth scroll performance. [#2075](https://github.com/mmistakes/minimal-mistakes/issues/2075#issuecomment-472437014)
|
||||
- Fix footnote links incompatibility with smooth scroll plugin. [#2075](https://github.com/mmistakes/minimal-mistakes/issues/2075)
|
||||
- Loosen Bundler dependency in ruby gem.
|
||||
|
||||
## [4.15.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.2)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Close search overlay with <kbd>Esc</kbd>. [#2055](https://github.com/mmistakes/minimal-mistakes/pull/2055)
|
||||
- Update Swedish localized UI text strings. [#2056](https://github.com/mmistakes/minimal-mistakes/pull/2056)
|
||||
- Update Font Awesome to 5.7.1 and add `data-search-pseudo-elements` attribute. [#2053](https://github.com/mmistakes/minimal-mistakes/pull/2053)
|
||||
- Add Malayalam localized UI text strings. [#2037](https://github.com/mmistakes/minimal-mistakes/pull/2037)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix table of contents errors with non-English chracters in the headings. [#2042](https://github.com/mmistakes/minimal-mistakes/pull/2042)
|
||||
- Fix `site.logo` false positives. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026#issuecomment-455770730)
|
||||
- Add empty `alt` attribute to `site.logo` image. [#2035](https://github.com/mmistakes/minimal-mistakes/pull/2035)
|
||||
|
||||
## [4.15.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.1)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix empty `<img>` when `site_logo` is not assigned. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026#issuecomment-454809876)
|
||||
|
||||
## [4.15.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.0)
|
||||
|
||||
### Enhancements
|
||||
|
||||
@@ -9,7 +9,7 @@ Minimal Mistakes is a flexible two-column Jekyll theme, perfect for building per
|
||||
|
||||
:sparkles: See what's new in the [CHANGELOG](CHANGELOG.md).
|
||||
|
||||
**If you enjoy this theme, please consider [supporting me](https://www.paypal.me/mmistakes) for developing and maintaining it.**
|
||||
**If you enjoy this theme, please consider [supporting me](https://www.paypal.me/mmistakes) to continue developing and maintaining it.**
|
||||
|
||||
[](https://www.paypal.me/mmistakes)
|
||||
|
||||
@@ -33,7 +33,7 @@ Minimal Mistakes is a flexible two-column Jekyll theme, perfect for building per
|
||||
- Optional [header images](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#headers), [custom sidebars](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#sidebars), [table of contents](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#table-of-contents), [galleries](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery), related posts, [breadcrumb links](https://mmistakes.github.io/minimal-mistakes/docs/configuration/#breadcrumb-navigation-beta), [navigation lists](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#navigation-list), and more.
|
||||
- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, [Discourse](https://www.discourse.org/), static-based via [Staticman](https://staticman.net/), and [utterances](https://utteranc.es/)).
|
||||
- [Google Analytics](https://www.google.com/analytics/) support.
|
||||
- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Chinese, Danish, Dutch, French (Français), German (Deutsch), Greek, Hindi (हिंदी), Hungarian, Indonesian, Italian (Italiano), Japanese, Korean, Nepali (Nepalese), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Turkish (Türkçe), and Vietnamese.
|
||||
- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Chinese, Danish, Dutch, French (Français), German (Deutsch), Greek, Hindi (हिंदी), Hungarian, Indonesian, Italian (Italiano), Japanese, Korean, Malayalam, Nepali (Nepalese), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Thai, Turkish (Türkçe), and Vietnamese.
|
||||
|
||||
## Skins (color variations)
|
||||
|
||||
@@ -126,7 +126,9 @@ To install:
|
||||
bundle
|
||||
```
|
||||
|
||||
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.15.0"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
||||
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.16.4"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
||||
|
||||
**Looking for an example?** Fork the [Minimal Mistakes remote theme starter](https://github.com/mmistakes/mm-github-pages-starter) for the quickest method of getting a GitHub Pages hosted site up and running. Replace sample content with your own and configure as needed.
|
||||
|
||||
## Usage
|
||||
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ masthead_title : # overrides the website title displayed in the masthe
|
||||
# breadcrumbs : false # true, false (default)
|
||||
words_per_minute : 200
|
||||
comments:
|
||||
provider : # false (default), "disqus", "discourse", "facebook", "google-plus", "staticman", "staticman_v2", "utterances", "custom"
|
||||
provider : # false (default), "disqus", "discourse", "facebook", "staticman", "staticman_v2", "utterances", "custom"
|
||||
disqus:
|
||||
shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-
|
||||
discourse:
|
||||
|
||||
+196
-40
@@ -61,39 +61,42 @@ es: &DEFAULT_ES
|
||||
pagination_next : "Siguiente"
|
||||
breadcrumb_home_label : "Inicio"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
search_label :
|
||||
toc_label : "Contenidos"
|
||||
ext_link_label : "Enlace"
|
||||
menu_label : "Alternar menú"
|
||||
search_label : "Alternar búsqueda"
|
||||
toc_label : "En esta página"
|
||||
ext_link_label : "Enlace directo"
|
||||
less_than : "menos de"
|
||||
minute_read : "minuto de lectura"
|
||||
share_on_label : "Compartir"
|
||||
minute_read : "minuto(s) de lectura"
|
||||
share_on_label : "Compartir en"
|
||||
meta_label :
|
||||
tags_label : "Etiquetas:"
|
||||
categories_label : "Categorías:"
|
||||
date_label : "Actualizado:"
|
||||
comments_label : "Dejar un comentario"
|
||||
comments_title : "Comentar"
|
||||
comments_label : "Deja un comentario"
|
||||
comments_title : "Comentarios"
|
||||
more_label : "Ver más"
|
||||
related_label : "Podrías ver también"
|
||||
related_label : "Puede que también te interese"
|
||||
follow_label : "Seguir:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Powered by"
|
||||
powered_by : "Funciona con"
|
||||
website_label : "Sitio web"
|
||||
email_label : "Email"
|
||||
email_label : "Correo electrónico"
|
||||
recent_posts : "Entradas recientes"
|
||||
undefined_wpm : "Parametro words_per_minute (Palabras por minuto) no definido en _config.yml"
|
||||
comment_form_info : "Su dirección de correo no será publicada. Se han resaltado los campos requeridos"
|
||||
undefined_wpm : "El parámetro words_per_minute (palabras por minuto) no está definido en _config.yml"
|
||||
comment_form_info : "Tu dirección de correo electrónico no se publicará. Los campos obligatorios están marcados"
|
||||
comment_form_comment_label : "Comentario"
|
||||
comment_form_md_info : "Markdown está soportado."
|
||||
comment_form_md_info : "Puedes utilizar Markdown"
|
||||
comment_form_name_label : "Nombre"
|
||||
comment_form_email_label : "Dirección de E-mail"
|
||||
comment_form_email_label : "Dirección de correo electrónico"
|
||||
comment_form_website_label : "Sitio web (opcional)"
|
||||
comment_btn_submit : "Enviar Commentario"
|
||||
comment_btn_submit : "Enviar comentario"
|
||||
comment_btn_submitted : "Enviado"
|
||||
comment_success_msg : "Gracias por su comentario!, Este se visualizará en el sitio una vez haya sido aprobado"
|
||||
comment_error_msg : "Lo sentimos, ha ocurrido un error al enviar su comentario. Por favor asegurese que todos los campos han sido diligenciados e intente de nuevo"
|
||||
comment_success_msg : "¡Gracias por tu comentario! Se publicará una vez sea aprobado."
|
||||
comment_error_msg : "Ha ocurrido un error al enviar el comentario. Asegúrate de completar todos los campos obligatorios e inténtalo de nuevo."
|
||||
loading_label : "Cargando..."
|
||||
search_placeholder_text : "Términos de búsqueda..."
|
||||
results_found : "resultado(s) encontrado(s)"
|
||||
back_to_top : "Volver arriba"
|
||||
es-ES:
|
||||
<<: *DEFAULT_ES
|
||||
es-CO:
|
||||
@@ -141,7 +144,7 @@ fr: &DEFAULT_FR
|
||||
comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez."
|
||||
loading_label : "Chargement..."
|
||||
search_placeholder_text : "Entrez votre recherche..."
|
||||
results_found : "Aucun résultat trouvé"
|
||||
results_found : "Résultat(s) trouvé(s)"
|
||||
back_to_top : "Retour en haut"
|
||||
fr-FR:
|
||||
<<: *DEFAULT_FR
|
||||
@@ -245,38 +248,41 @@ pt-BR:
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
search_label :
|
||||
search_label : "Buscar"
|
||||
toc_label : "Nesta página"
|
||||
ext_link_label : "Link direto"
|
||||
less_than : "menos que"
|
||||
minute_read : "minuto(s) de leitura"
|
||||
share_on_label : "Compartilhe em"
|
||||
share_on_label : "Compartilhe"
|
||||
meta_label :
|
||||
tags_label : "Tags:"
|
||||
categories_label : "Categorias:"
|
||||
date_label : "Atualizado em:"
|
||||
comments_label : "Deixe um comentário"
|
||||
comments_title :
|
||||
more_label : "Aprenda mais"
|
||||
related_label : "Talvez você goste também"
|
||||
follow_label : "Acompanhe em"
|
||||
comments_title : "Comentários"
|
||||
more_label : "Saiba mais"
|
||||
related_label : "Talvez você também goste"
|
||||
follow_label : "Acompanhe no"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Feito com"
|
||||
powered_by : "Desenvolvido com"
|
||||
website_label : "Site"
|
||||
email_label : "Email"
|
||||
recent_posts : "Postagens recentes"
|
||||
undefined_wpm : "Parâmetro indefinido em words_per_minute no _config.yml"
|
||||
comment_form_info : "Seu email não será publicado. Os campos obrigatórios estão marcados"
|
||||
email_label : "E-mail"
|
||||
recent_posts : "Publicações recentes"
|
||||
undefined_wpm : "Parâmetro words_per_minute indefinido no _config.yml"
|
||||
comment_form_info : "Seu e-mail não será publicado. Os campos obrigatórios estão marcados"
|
||||
comment_form_comment_label : "Comentário"
|
||||
comment_form_md_info : "Markdown é suportado."
|
||||
comment_form_md_info : "Você pode usar Markdown."
|
||||
comment_form_name_label : "Nome"
|
||||
comment_form_email_label : "Email"
|
||||
comment_form_email_label : "E-mail"
|
||||
comment_form_website_label : "Site (opcional)"
|
||||
comment_btn_submit : "Enviar Comentário"
|
||||
comment_btn_submit : "Enviar comentário"
|
||||
comment_btn_submitted : "Enviado"
|
||||
comment_success_msg : "Obrigado pelo seu comentário! Ele aparecerá no site assim que for aprovado."
|
||||
comment_error_msg : "Desculpe, ocorreu um erro no envio. Por favor verifique se todos os campos obrigatórios foram preenchidos e tente novamente."
|
||||
comment_error_msg : "Desculpe, ocorreu um erro no envio. Verifique se todos os campos obrigatórios foram preenchidos e tente novamente."
|
||||
loading_label : "Carregando..."
|
||||
search_placeholder_text : "Pesquisar..."
|
||||
results_found : "Resultado(s) encontrado(s)"
|
||||
back_to_top : "Voltar para o topo"
|
||||
|
||||
# Italian
|
||||
# -------
|
||||
@@ -366,6 +372,9 @@ zh: &DEFAULT_ZH_HANS
|
||||
comment_success_msg : "感谢您的评论!被批准后它会立即在此站点展示。"
|
||||
comment_error_msg : "很抱歉,您的提交存在错误。请确保所有必填字段都已填写正确,然后再试一次。"
|
||||
loading_label : "正在加载..."
|
||||
search_placeholder_text : "输入您要搜索的关键词..."
|
||||
results_found : "条记录匹配"
|
||||
back_to_top : "返回顶部"
|
||||
zh-CN:
|
||||
<<: *DEFAULT_ZH_HANS
|
||||
zh-SG:
|
||||
@@ -701,8 +710,8 @@ sv: &DEFAULT_SV
|
||||
pagination_next : "Nästa"
|
||||
breadcrumb_home_label : "Hem"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "Meny ridå"
|
||||
search_label :
|
||||
menu_label : "Växla menyläge"
|
||||
search_label : "Växla sökläge"
|
||||
toc_label : "På denna sida"
|
||||
ext_link_label : "Direkt länk"
|
||||
less_than : "mindre än"
|
||||
@@ -725,15 +734,18 @@ sv: &DEFAULT_SV
|
||||
undefined_wpm : "Odefinerade parametrar words_per_minute i _config.yml"
|
||||
comment_form_info : "Din e-post adress kommer inte att publiceras. Obligatoriska fält är markerade."
|
||||
comment_form_comment_label : "Kommentar"
|
||||
comment_form_md_info : "Använd Markdown för text-formateringen."
|
||||
comment_form_md_info : "Stöd för Markdown finns."
|
||||
comment_form_name_label : "Namn"
|
||||
comment_form_email_label : "E-post adress"
|
||||
comment_form_website_label : "Webdsida (valfritt)"
|
||||
comment_btn_submit : "Skicka en kommentar"
|
||||
comment_btn_submitted : "Kommentaren har tagits emot"
|
||||
comment_success_msg : "Tack för din kommentar! Den kommer att visas på sidan så fort den har godkännts."
|
||||
comment_error_msg : "Tyvärr det har blivit något fel i en av fälten, se till att du fyller i alla rutor och försök igen."
|
||||
comment_error_msg : "Tyvärr det har blivit något fel i ett av fälten, se till att du fyllt i alla obligatoriska fält och försök igen."
|
||||
loading_label : "Laddar..."
|
||||
search_placeholder_text : "Fyll i sökterm..."
|
||||
results_found : "Resultat funna"
|
||||
back_to_top : "Tillbaka till toppen"
|
||||
sv-SE:
|
||||
<<: *DEFAULT_SV
|
||||
sv-FI:
|
||||
@@ -870,6 +882,9 @@ vi: &DEFAULT_VI
|
||||
comment_success_msg : "Cảm ơn bạn đã bình luận! Bình luận sẽ xuất hiện sau khi được duyệt."
|
||||
comment_error_msg : "Rất tiếc, có lỗi trong việc gửi bình luận. Hãy đảm bảo toàn bộ các phần bắt buộc đã được điền đầy đủ và thử lại."
|
||||
loading_label : "Đang tải..."
|
||||
search_placeholder_text : "Nhập từ khóa cần tìm..."
|
||||
results_found : "Kết quả tìm được"
|
||||
back_to_top : "Lên đầu trang"
|
||||
vi-VN:
|
||||
<<: *DEFAULT_VI
|
||||
|
||||
@@ -1150,7 +1165,7 @@ ro: &DEFAULT_RO
|
||||
back_to_top : "Înapoi în susul paginii"
|
||||
ro-RO:
|
||||
<<: *DEFAULT_RO
|
||||
|
||||
|
||||
# Punjabi
|
||||
# -----------------
|
||||
pa: &DEFAULT_PA
|
||||
@@ -1196,7 +1211,7 @@ pa: &DEFAULT_PA
|
||||
results_found : "ਨਤੀਜਾ ਮਿਲਿਆ/ਮਿਲੇ"
|
||||
back_to_top : "ਵਾਪਸ ਚੋਟੀ 'ਤੇ ਜਾਓ"
|
||||
pa-IN:
|
||||
<<: *DEFAULT_PA
|
||||
<<: *DEFAULT_PA
|
||||
|
||||
# Persian (Farsi)
|
||||
# --------------
|
||||
@@ -1244,6 +1259,147 @@ fa: &DEFAULT_FA
|
||||
fa-IR:
|
||||
<<: *DEFAULT_FA
|
||||
|
||||
|
||||
# Malayalam
|
||||
# -----------------
|
||||
ml: &DEFAULT_ML
|
||||
page : "പേജ്"
|
||||
pagination_previous : "തിരികെ"
|
||||
pagination_next : "മുന്നോട്ട്"
|
||||
breadcrumb_home_label : "ഹോം"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "ടോഗിൾ മെനു"
|
||||
search_label : "ടോഗിൾ സെർച്ച്"
|
||||
toc_label : "ഈ പേജിൽ"
|
||||
ext_link_label : "ലിങ്കിലേക് പോകാൻ"
|
||||
less_than : "ഏതാണ്ട്"
|
||||
minute_read : "മിനിറ്റ് ദൈർഖ്യം"
|
||||
share_on_label : "ഷെയർ ചെയ്യുവാൻ "
|
||||
meta_label :
|
||||
tags_label : "ടാഗുകൾ:"
|
||||
categories_label : "വിഭാഗങ്ങൾ:"
|
||||
date_label : "അവസാന മാറ്റം:"
|
||||
comments_label : "അഭിപ്രായം രേഖപ്പെടുത്തുക"
|
||||
comments_title : "അഭിപ്രായങ്ങൾ"
|
||||
more_label : "കൂടുതൽ അറിയുവാൻ"
|
||||
related_label : "നിങ്ങൾക് ഇതും ഇഷ്ടപ്പെട്ടേക്കാം"
|
||||
follow_label : "പിന്തുടരുക:"
|
||||
feed_label : "ഫീഡ്"
|
||||
powered_by : "പവേർഡ് ബൈ"
|
||||
website_label : "വെബ്സൈറ്റ്"
|
||||
email_label : "ഇ-മെയിൽ"
|
||||
recent_posts : "സമീപകാല പോസ്റ്റുകൾ"
|
||||
undefined_wpm : "Config.yml ലെ words_per_minute പരാമീറ്റർ നിർവചിച്ചിട്ടില്ല."
|
||||
comment_form_info : "നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിക്കില്ല. ആവശ്യമായ ഫീൽഡുകൾ അടയാളപ്പെടുത്തി."
|
||||
comment_form_comment_label : "കമന്റ്"
|
||||
comment_form_md_info : "Markdown സപ്പോർട്ട് ചെയ്യുന്നതാണ്."
|
||||
comment_form_name_label : "പേര്"
|
||||
comment_form_email_label : "ഇ-മെയിൽ"
|
||||
comment_form_website_label : "വെബ്സൈറ് (ഓപ്ഷണൽ)"
|
||||
comment_btn_submit : "അഭിപ്രായം രേഖപ്പെടുത്തുക"
|
||||
comment_btn_submitted : "രേഖപ്പെടുത്തി"
|
||||
comment_success_msg : "നിങ്ങളുടെ അഭിപ്രായത്തിന് നന്ദി! ഇത് അംഗീകരിച്ചുകഴിഞ്ഞാൽ ഇത് സൈറ്റിൽ പ്രദർശിപ്പിക്കും."
|
||||
comment_error_msg : "ക്ഷമിക്കണം, നിങ്ങളുടെ സമർപ്പണവുമായി ബന്ധപ്പെട്ട് ഒരു പിശകുണ്ടായിരുന്നു. ആവശ്യമായ എല്ലാ ഫീൽഡുകളും പൂർത്തിയായിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തുക, വീണ്ടും ശ്രമിക്കുക."
|
||||
loading_label : "ലോഡിംഗ്..."
|
||||
search_placeholder_text : "നിങ്ങളുടെ തിരയൽ പദം നൽകുക..."
|
||||
results_found : "ഫലം (കൾ) കണ്ടെത്തി"
|
||||
back_to_top : "മുകളിലേയ്ക്ക്"
|
||||
ml-IN:
|
||||
<<: *DEFAULT_ML
|
||||
|
||||
# Thailand
|
||||
# --------------
|
||||
th: &DEFAULT_TH
|
||||
page : "หน้า"
|
||||
pagination_previous : "ก่อนหน้า"
|
||||
pagination_next : "ถัดไป"
|
||||
breadcrumb_home_label : "หน้าแรก"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "พับเมนู"
|
||||
search_label : "พับการค้นหา"
|
||||
toc_label : "บนหน้านี้"
|
||||
ext_link_label : "ลิงก์โดยตรง"
|
||||
less_than : "น้อยกว่า"
|
||||
minute_read : "นาที ในการอ่าน"
|
||||
share_on_label : "แชร์ไปที่"
|
||||
meta_label :
|
||||
tags_label : "แท็ก:"
|
||||
categories_label : "หมวดหมู่:"
|
||||
date_label : "อัพเดตล่าสุด:"
|
||||
comments_label : "แสดงความคิดเห็น"
|
||||
comments_title : "ความคิดเห็น"
|
||||
more_label : "อ่านต่อ"
|
||||
related_label : "คุณอาจจะชอบสิ่งนี้"
|
||||
follow_label : "ติดตาม:"
|
||||
feed_label : "ฟืดข่าว"
|
||||
powered_by : "ขับเคลื่อนโดย"
|
||||
website_label : "เว็บไซต์"
|
||||
email_label : "อีเมล"
|
||||
recent_posts : "โพสล่าสุด"
|
||||
undefined_wpm : "ไม่สามารถระบุพารามิเตอร์ words_per_minute ได้ใน _config.yml"
|
||||
comment_form_info : "อีเมลของคุณไม่สามารถโพสสาธารณะได้ กรุณากรอกช่องที่ระบุด้วยเครื่องหมายดอกจันไว้"
|
||||
comment_form_comment_label : "แสดงความคิดเห็น"
|
||||
comment_form_md_info : "มาร์กดาวน์ได้รับการสนับสนุน"
|
||||
comment_form_name_label : "ชื่อ"
|
||||
comment_form_email_label : "ที่อยู่อีเมล"
|
||||
comment_form_website_label : "เว็บไซต์ (ตัวเลือก)"
|
||||
comment_btn_submit : "ส่งความคิดเห็น"
|
||||
comment_btn_submitted : "ส่งเรียบร้อยแล้ว"
|
||||
comment_success_msg : "ขอบคุณสำหรับการแสดงความคิดเห็น! ความคิดเห็นจะได้รับการแสดงหลังจากได้รับการยืนยัน"
|
||||
comment_error_msg : "ขออภัย, มีบางอย่างผิดพลาดจากการส่งแบบฟอร์ม กรุณาตรวจทานทุกช่อง และลองส่งใหม่อีกครั้ง"
|
||||
loading_label : "กำลังโหลด..."
|
||||
search_placeholder_text : "ใส่คำค้นหาของคุณ..."
|
||||
results_found : "ผลการค้นหา พบ"
|
||||
back_to_top : "กลับด้านบน"
|
||||
th-TH:
|
||||
<<: *DEFAULT_TH
|
||||
|
||||
# Hindi
|
||||
# -----------------
|
||||
hi: &DEFAULT_HI
|
||||
page : "पृष्ठ"
|
||||
pagination_previous : "पिछला"
|
||||
pagination_next : "अगला"
|
||||
breadcrumb_home_label : "घर"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "टॉगल मेनू"
|
||||
toc_label : "इस पृष्ठ पर"
|
||||
ext_link_label : "सीधा संपर्क"
|
||||
less_than : "से कम"
|
||||
minute_read : "मिनट में पढ़ सकते हैं"
|
||||
share_on_label : "साझा करें"
|
||||
meta_label :
|
||||
tags_label : "अंकितक:"
|
||||
categories_label : "श्रेणियाँ:"
|
||||
date_label : "अपडेट किया गया:"
|
||||
comments_label : "एक टिप्पणी छोड़ें"
|
||||
comments_title : "टिप्पणियाँ"
|
||||
more_label : "और अधिक जानें"
|
||||
related_label : "आप इसका भी आनंद ले सकते हैं"
|
||||
follow_label : "अनुसरण करे:"
|
||||
feed_label : "फ़ीड"
|
||||
powered_by : "द्वारा संचालित"
|
||||
website_label : "वेबसाइट"
|
||||
email_label : "ईमेल"
|
||||
recent_posts : "हाल के पोस्ट"
|
||||
undefined_wpm : "_config.yml पर अपरिभाषित पैरामीटर words_per_minute"
|
||||
comment_form_info : "आपका ईमेल पता प्रकाशित नहीं किया जाएगा। अपेक्षित स्थानों को रेखांकित कर दिया गया है"
|
||||
comment_form_comment_label : "टिप्पणी"
|
||||
comment_form_md_info : "मार्कडाउन की अनुमति है।"
|
||||
comment_form_name_label : "नाम"
|
||||
comment_form_email_label : "ईमेल पता"
|
||||
comment_form_website_label : "वेबसाइट (ऐच्छिक)"
|
||||
comment_btn_submit : "टिप्पणी भेजें"
|
||||
comment_btn_submitted : "प्रस्तुत"
|
||||
comment_success_msg : "आपके कमेंट के लिए धन्यवाद! इसे स्वीकृति मिलने के बाद साइट पर दिखाया जाएगा।"
|
||||
comment_error_msg : "क्षमा करें, आपके सबमिशन के साथ एक त्रुटि हुई थी। कृपया सुनिश्चित करें कि सभी आवश्यक फ़ील्ड पूरा हो गए हैं और पुनः प्रयास करें।"
|
||||
loading_label : "लोड हो रहा है..."
|
||||
search_placeholder_text : "अपना खोज शब्द दर्ज करें..."
|
||||
results_found : "परिणाम मिला/मिले"
|
||||
back_to_top : "शीर्ष पर वापस"
|
||||
hi-IN:
|
||||
<<: *DEFAULT_HI
|
||||
|
||||
# Another locale
|
||||
# --------------
|
||||
#
|
||||
|
||||
@@ -1,10 +1,7 @@
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', '{{ site.analytics.google.tracking_id }}', 'auto');
|
||||
ga('set', 'anonymizeIp', {{ site.analytics.google.anonymize_ip | default: false }})
|
||||
ga('send', 'pageview');
|
||||
window.ga=function(){ga.q.push(arguments)};ga.q=[];ga.l=+new Date;
|
||||
ga('create','{{ site.analytics.google.tracking_id }}','auto');
|
||||
ga('set', 'anonymizeIp', {{ site.analytics.google.anonymize_ip | default: false }});
|
||||
ga('send','pageview')
|
||||
</script>
|
||||
<script src="https://www.google-analytics.com/analytics.js" async></script>
|
||||
|
||||
@@ -97,14 +97,6 @@
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.google_plus %}
|
||||
<li>
|
||||
<a href="https://plus.google.com/{{ author.google_plus }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<i class="fab fa-fw fa-google-plus-square" aria-hidden="true"></i> Google+
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.linkedin %}
|
||||
<li>
|
||||
<a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
@@ -163,7 +155,7 @@
|
||||
|
||||
{% if author.stackoverflow %}
|
||||
<li>
|
||||
<a href="https://www.stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<a href="https://stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs" rel="nofollow noopener noreferrer">
|
||||
<i class="fab fa-fw fa-stack-overflow" aria-hidden="true"></i> Stack Overflow
|
||||
</a>
|
||||
</li>
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
<!-- Sort alphabetically regardless of case e.g. a B c d E -->
|
||||
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
|
||||
{% endcomment %}
|
||||
{% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}#{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}|{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% assign category_hashes = page_categories | split: ',' | sort %}
|
||||
|
||||
<p class="page__taxonomy">
|
||||
<strong><i class="fas fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong>
|
||||
<span itemprop="keywords">
|
||||
{% for hash in category_hashes %}
|
||||
{% assign keyValue = hash | split: '#' %}
|
||||
{% assign keyValue = hash | split: '|' %}
|
||||
{% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
|
||||
<a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,2 +0,0 @@
|
||||
<script async type="text/javascript" src="//apis.google.com/js/plusone.js?callback=gpcb"></script>
|
||||
<noscript>Please enable JavaScript to view the <a href="https://plus.google.com/">comments powered by Google+.</a></noscript>
|
||||
@@ -6,8 +6,6 @@
|
||||
{% include /comments-providers/discourse.html %}
|
||||
{% when "facebook" %}
|
||||
{% include /comments-providers/facebook.html %}
|
||||
{% when "google-plus" %}
|
||||
{% include /comments-providers/google-plus.html %}
|
||||
{% when "staticman" %}
|
||||
{% include /comments-providers/staticman.html %}
|
||||
{% when "staticman_v2" %}
|
||||
|
||||
@@ -10,21 +10,6 @@
|
||||
{% when "facebook" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section class="fb-comments" data-href="{{ page.url | absolute_url }}" data-mobile="true" data-num-posts="{{ site.comments.facebook.num_posts | default: 5 }}" data-width="100%" data-colorscheme="{{ site.comments.facebook.colorscheme | default: 'light' }}"></section>
|
||||
{% when "google-plus" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section id="g-comments" class="g-comments">Loading Google+ Comments ...</section>
|
||||
<script>
|
||||
function initComment() {
|
||||
gapi.comments.render("g-comments", {
|
||||
href: "{{ page.url | absolute_url }}",
|
||||
width: "624",
|
||||
first_party_property: "BLOGGER",
|
||||
view_type: "FILTERED_POSTMOD"
|
||||
})
|
||||
}
|
||||
</script>
|
||||
<script async type="text/javascript" src="https://apis.google.com/js/plusone.js" onload="initComment()" />
|
||||
<noscript>Please enable JavaScript to view the <a href="https://plus.google.com/">comments powered by Google+.</a></noscript>-->
|
||||
{% when "staticman_v2" %}
|
||||
<section id="static-comments">
|
||||
{% if site.repository and site.staticman.branch %}
|
||||
|
||||
+3
-3
@@ -7,6 +7,6 @@
|
||||
{% endif %}
|
||||
alt="{% if include.alt %}{{ include.alt }}{% endif %}">
|
||||
{% if include.caption %}
|
||||
<figcaption>{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}</figcaption>
|
||||
{% endif %}
|
||||
</figure>
|
||||
<figcaption>
|
||||
{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}
|
||||
</figcaption>{% endif %}</figure>
|
||||
|
||||
@@ -1,14 +1,16 @@
|
||||
{% if site.logo contains "://" %}
|
||||
{% capture logo_path %}{{ site.logo }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture logo_path %}{{ site.logo | relative_url }}{% endcapture %}
|
||||
{% capture logo_path %}{{ site.logo }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
<div class="masthead">
|
||||
<div class="masthead__inner-wrap">
|
||||
<div class="masthead__menu">
|
||||
<nav id="site-nav" class="greedy-nav">
|
||||
{% if logo_path %}<a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path }}"></a>{% endif %}
|
||||
{% unless logo_path == empty %}
|
||||
<a class="site-logo" href="{{ '/' | relative_url }}"><img src="{{ logo_path | relative_url }}" alt=""></a>
|
||||
{% endunless %}
|
||||
<a class="site-title" href="{{ '/' | relative_url }}">{{ site.masthead_title | default: site.title }}</a>
|
||||
<ul class="visible-links">
|
||||
{%- for link in site.data.navigation.main -%}
|
||||
|
||||
+12
-1
@@ -9,7 +9,7 @@
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<script src="{{ '/assets/js/main.min.js' | relative_url }}"></script>
|
||||
<script defer src="https://use.fontawesome.com/releases/v5.6.0/js/all.js" integrity="sha384-z9ZOvGHHo21RqN5De4rfJMoAxYpaVoiYhuJXPyVmSs8yn20IE3PmBM534CffwSJI" crossorigin="anonymous"></script>
|
||||
<script defer src="https://use.fontawesome.com/releases/v5.8.2/js/all.js" integrity="sha384-DJ25uNYET2XCl5ZF++U8eNxPWqcKohUUBUpKGlNLMchM7q4Wjg2CUpjHLaL8yYPH" crossorigin="anonymous"></script>
|
||||
{% endif %}
|
||||
|
||||
{% if site.search == true or page.layout == "search" %}
|
||||
@@ -26,3 +26,14 @@
|
||||
|
||||
{% include analytics.html %}
|
||||
{% include /comments-providers/scripts.html %}
|
||||
|
||||
{% if site.after_footer_scripts %}
|
||||
{% for script in site.after_footer_scripts %}
|
||||
{% if script contains "://" %}
|
||||
{% capture script_path %}{{ script }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture script_path %}{{ script | relative_url }}{% endcapture %}
|
||||
{% endif %}
|
||||
<script src="{{ script_path }}"></script>
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
{%- assign search_provider = site.search_provider | default: "lunr" -%}
|
||||
{%- case search_provider -%}
|
||||
{%- when "lunr" -%}
|
||||
<input type="text" id="search" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||
<input type="search" id="search" aria-placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||
<div id="results" class="results"></div>
|
||||
{%- when "google" -%}
|
||||
<form onsubmit="return googleCustomSearchExecute();" id="cse-search-box-form-id">
|
||||
<input type="text" id="cse-search-input-box-id" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||
<input type="search" id="cse-search-input-box-id" aria-placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" class="search-input" tabindex="-1" placeholder="{{ site.data.ui-text[site.locale].search_placeholder_text | default: 'Enter your search term...' }}" />
|
||||
</form>
|
||||
<div id="results" class="results">
|
||||
<gcse:searchresults-only></gcse:searchresults-only>
|
||||
|
||||
@@ -7,7 +7,5 @@
|
||||
|
||||
<a href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url | url_encode }}" class="btn btn--facebook" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fab fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
|
||||
|
||||
<a href="https://plus.google.com/share?url={{ page.url | absolute_url | url_encode }}" class="btn btn--google-plus" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Google Plus"><i class="fab fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
|
||||
|
||||
<a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url | url_encode }}" class="btn btn--linkedin" onclick="window.open(this.href, 'window', 'left=20,top=20,width=500,height=500,toolbar=1,resizable=0'); return false;" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fab fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
|
||||
</section>
|
||||
|
||||
@@ -10,14 +10,14 @@
|
||||
<!-- Sort alphabetically regardless of case e.g. a B c d E -->
|
||||
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
|
||||
{% endcomment %}
|
||||
{% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}#{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}|{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% assign tag_hashes = page_tags | split: ',' | sort %}
|
||||
|
||||
<p class="page__taxonomy">
|
||||
<strong><i class="fas fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong>
|
||||
<span itemprop="keywords">
|
||||
{% for hash in tag_hashes %}
|
||||
{% assign keyValue = hash | split: '#' %}
|
||||
{% assign keyValue = hash | split: '|' %}
|
||||
{% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
|
||||
<a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | relative_url }}" class="page__taxonomy-item" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
|
||||
{% endfor %}
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
---
|
||||
# Jekyll layout that compresses HTML
|
||||
# v3.0.2
|
||||
# v3.1.0
|
||||
# http://jch.penibelst.de/
|
||||
# © 2014–2015 Anatol Broder
|
||||
# MIT License
|
||||
---
|
||||
|
||||
{% capture _LINE_FEED %}
|
||||
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
|
||||
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
<!doctype html>
|
||||
<!--
|
||||
Minimal Mistakes Jekyll Theme 4.15.0 by Michael Rose
|
||||
Minimal Mistakes Jekyll Theme 4.16.4 by Michael Rose
|
||||
Copyright 2013-2019 Michael Rose - mademistakes.com | @mmistakes
|
||||
Free for personal and commercial use under the MIT license
|
||||
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*!
|
||||
* Minimal Mistakes Jekyll Theme 4.15.0 by Michael Rose
|
||||
* Minimal Mistakes Jekyll Theme 4.16.4 by Michael Rose
|
||||
* Copyright 2013-2019 Michael Rose - mademistakes.com | @mmistakes
|
||||
* Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE)
|
||||
*/
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
a::before {
|
||||
a[rel="permalink"]::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
|
||||
@@ -39,7 +39,6 @@
|
||||
(info, $info-color),
|
||||
(facebook, $facebook-color),
|
||||
(twitter, $twitter-color),
|
||||
(google-plus, $google-plus-color),
|
||||
(linkedin, $linkedin-color);
|
||||
|
||||
@each $buttoncolor, $color in $buttoncolors {
|
||||
|
||||
@@ -25,7 +25,7 @@ form {
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 5px / 2;
|
||||
margin-bottom: (5px / 2);
|
||||
}
|
||||
|
||||
ul {
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
font-family: $sans-serif-narrow;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
max-width: $max-width;
|
||||
}
|
||||
|
||||
nav {
|
||||
|
||||
@@ -514,7 +514,7 @@
|
||||
}
|
||||
|
||||
// Scrollspy marks toc items as .active when they are in focus
|
||||
.active {
|
||||
.active a {
|
||||
@include yiq-contrasted($active-color);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
animation-delay: 0.15s;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
max-width: $max-width;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
animation-delay: 0.15s;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
max-width: $max-width;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -103,6 +103,23 @@ body:hover .visually-hidden button {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
/*
|
||||
Task lists
|
||||
========================================================================== */
|
||||
|
||||
.task-list {
|
||||
padding:0;
|
||||
|
||||
li {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.task-list-item-checkbox {
|
||||
margin-right: 0.5em;
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Alignment
|
||||
========================================================================== */
|
||||
@@ -228,12 +245,6 @@ body:hover .visually-hidden button {
|
||||
color: $gitlab-color;
|
||||
}
|
||||
|
||||
.fa-google-plus,
|
||||
.fa-google-plus-square,
|
||||
.fa-google-plus-g {
|
||||
color: $google-plus-color;
|
||||
}
|
||||
|
||||
.fa-instagram {
|
||||
color: $instagram-color;
|
||||
}
|
||||
|
||||
@@ -85,7 +85,6 @@ $flickr-color: #ff0084 !default;
|
||||
$foursquare-color: #0072b1 !default;
|
||||
$github-color: #171516 !default;
|
||||
$gitlab-color: #e24329 !default;
|
||||
$google-plus-color: #dd4b39 !default;
|
||||
$instagram-color: #517fa4 !default;
|
||||
$lastfm-color: #d51007 !default;
|
||||
$linkedin-color: #007bb6 !default;
|
||||
@@ -137,6 +136,7 @@ $medium: 768px !default;
|
||||
$medium-wide: 900px !default;
|
||||
$large: 1024px !default;
|
||||
$x-large: 1280px !default;
|
||||
$max-width: $x-large !default;
|
||||
|
||||
/*
|
||||
Grid
|
||||
|
||||
+41
-62
@@ -5,13 +5,15 @@
|
||||
$(document).ready(function() {
|
||||
// Sticky footer
|
||||
var bumpIt = function() {
|
||||
$("body").css("margin-bottom", $(".page__footer").outerHeight(true));
|
||||
};
|
||||
$("body").css("margin-bottom", $(".page__footer").outerHeight(true));
|
||||
};
|
||||
|
||||
bumpIt();
|
||||
$(window).resize(jQuery.throttle(250, function() {
|
||||
bumpIt();
|
||||
}));
|
||||
$(window).resize(
|
||||
jQuery.throttle(250, function() {
|
||||
bumpIt();
|
||||
})
|
||||
);
|
||||
|
||||
// FitVids init
|
||||
$("#main").fitVids();
|
||||
@@ -43,6 +45,16 @@ $(document).ready(function() {
|
||||
$(".author__urls-wrapper button").toggleClass("open");
|
||||
});
|
||||
|
||||
// Close search screen with Esc key
|
||||
$(document).keyup(function(e) {
|
||||
if (e.keyCode === 27) {
|
||||
if ($(".initial-content").hasClass("is--hidden")) {
|
||||
$(".search-content").toggleClass("is--visible");
|
||||
$(".initial-content").toggleClass("is--hidden");
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Search toggle
|
||||
$(".search__toggle").on("click", function() {
|
||||
$(".search-content").toggleClass("is--visible");
|
||||
@@ -54,66 +66,33 @@ $(document).ready(function() {
|
||||
});
|
||||
|
||||
// Smooth scrolling
|
||||
var scroll = new SmoothScroll('a[href*="#"]', {
|
||||
offset: 20,
|
||||
speed: 400,
|
||||
speedAsDuration: true,
|
||||
durationMax: 500
|
||||
});
|
||||
|
||||
// Bind popstate event listener to support back/forward buttons.
|
||||
var smoothScrolling = false;
|
||||
$(window).bind("popstate", function (event) {
|
||||
$.smoothScroll({
|
||||
scrollTarget: location.hash,
|
||||
offset: -20,
|
||||
beforeScroll: function() { smoothScrolling = true; },
|
||||
afterScroll: function() { smoothScrolling = false; }
|
||||
// Gumshoe scroll spy init
|
||||
if($("nav.toc").length > 0) {
|
||||
var spy = new Gumshoe("nav.toc a", {
|
||||
// Active classes
|
||||
navClass: "active", // applied to the nav list item
|
||||
contentClass: "active", // applied to the content
|
||||
|
||||
// Nested navigation
|
||||
nested: false, // if true, add classes to parents of active link
|
||||
nestedClass: "active", // applied to the parent items
|
||||
|
||||
// Offset & reflow
|
||||
offset: 20, // how far from the top of the page to activate a content area
|
||||
reflow: true, // if true, listen for reflows
|
||||
|
||||
// Event support
|
||||
events: true // if true, emit custom events
|
||||
});
|
||||
});
|
||||
// Override clicking on links to smooth scroll
|
||||
$('a[href*="#"]').bind("click", function (event) {
|
||||
if (this.pathname === location.pathname && this.hash) {
|
||||
event.preventDefault();
|
||||
history.pushState(null, null, this.hash);
|
||||
$(window).trigger("popstate");
|
||||
}
|
||||
});
|
||||
// Smooth scroll on page load if there is a hash in the URL.
|
||||
if (location.hash) {
|
||||
$(window).trigger("popstate");
|
||||
}
|
||||
|
||||
// Scrollspy equivalent: update hash fragment while scrolling.
|
||||
$(window).scroll(jQuery.throttle(250, function() {
|
||||
// Don't run while smooth scrolling (from clicking on a link).
|
||||
if (smoothScrolling) return;
|
||||
var scrollTop = $(window).scrollTop() + 20 + 1; // 20 = offset
|
||||
var links = [];
|
||||
$("nav.toc a").each(function() {
|
||||
var link = $(this);
|
||||
var href = link.attr("href");
|
||||
if (href && href[0] == "#") {
|
||||
var element = $(href);
|
||||
links.push({
|
||||
link: link,
|
||||
href: href,
|
||||
top: element.offset().top
|
||||
});
|
||||
link.removeClass('active');
|
||||
}
|
||||
});
|
||||
for (var i = 0; i < links.length; i++) {
|
||||
var top = links[i].top;
|
||||
var bottom = (i < links.length - 1 ? links[i+1].top : Infinity);
|
||||
if (top <= scrollTop && scrollTop < bottom) {
|
||||
// Mark all ancestors as active
|
||||
links[i].link.parents("li").children("a").addClass('active');
|
||||
if (links[i].href !== location.hash) {
|
||||
history.replaceState(null, null, links[i].href);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
||||
if ('#' !== location.hash) {
|
||||
history.replaceState(null, null, '#');
|
||||
}
|
||||
}));
|
||||
|
||||
|
||||
// add lightbox class to all image links
|
||||
$(
|
||||
"a[href$='.jpg'],a[href$='.jpeg'],a[href$='.JPG'],a[href$='.png'],a[href$='.gif']"
|
||||
|
||||
+5
-5
File diff suppressed because one or more lines are too long
Vendored
+484
@@ -0,0 +1,484 @@
|
||||
/*!
|
||||
* gumshoejs v5.1.1
|
||||
* A simple, framework-agnostic scrollspy script.
|
||||
* (c) 2019 Chris Ferdinandi
|
||||
* MIT License
|
||||
* http://github.com/cferdinandi/gumshoe
|
||||
*/
|
||||
|
||||
(function (root, factory) {
|
||||
if ( typeof define === 'function' && define.amd ) {
|
||||
define([], (function () {
|
||||
return factory(root);
|
||||
}));
|
||||
} else if ( typeof exports === 'object' ) {
|
||||
module.exports = factory(root);
|
||||
} else {
|
||||
root.Gumshoe = factory(root);
|
||||
}
|
||||
})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) {
|
||||
|
||||
'use strict';
|
||||
|
||||
//
|
||||
// Defaults
|
||||
//
|
||||
|
||||
var defaults = {
|
||||
|
||||
// Active classes
|
||||
navClass: 'active',
|
||||
contentClass: 'active',
|
||||
|
||||
// Nested navigation
|
||||
nested: false,
|
||||
nestedClass: 'active',
|
||||
|
||||
// Offset & reflow
|
||||
offset: 0,
|
||||
reflow: false,
|
||||
|
||||
// Event support
|
||||
events: true
|
||||
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Methods
|
||||
//
|
||||
|
||||
/**
|
||||
* Merge two or more objects together.
|
||||
* @param {Object} objects The objects to merge together
|
||||
* @returns {Object} Merged values of defaults and options
|
||||
*/
|
||||
var extend = function () {
|
||||
var merged = {};
|
||||
Array.prototype.forEach.call(arguments, (function (obj) {
|
||||
for (var key in obj) {
|
||||
if (!obj.hasOwnProperty(key)) return;
|
||||
merged[key] = obj[key];
|
||||
}
|
||||
}));
|
||||
return merged;
|
||||
};
|
||||
|
||||
/**
|
||||
* Emit a custom event
|
||||
* @param {String} type The event type
|
||||
* @param {Node} elem The element to attach the event to
|
||||
* @param {Object} detail Any details to pass along with the event
|
||||
*/
|
||||
var emitEvent = function (type, elem, detail) {
|
||||
|
||||
// Make sure events are enabled
|
||||
if (!detail.settings.events) return;
|
||||
|
||||
// Create a new event
|
||||
var event = new CustomEvent(type, {
|
||||
bubbles: true,
|
||||
cancelable: true,
|
||||
detail: detail
|
||||
});
|
||||
|
||||
// Dispatch the event
|
||||
elem.dispatchEvent(event);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Get an element's distance from the top of the Document.
|
||||
* @param {Node} elem The element
|
||||
* @return {Number} Distance from the top in pixels
|
||||
*/
|
||||
var getOffsetTop = function (elem) {
|
||||
var location = 0;
|
||||
if (elem.offsetParent) {
|
||||
while (elem) {
|
||||
location += elem.offsetTop;
|
||||
elem = elem.offsetParent;
|
||||
}
|
||||
}
|
||||
return location >= 0 ? location : 0;
|
||||
};
|
||||
|
||||
/**
|
||||
* Sort content from first to last in the DOM
|
||||
* @param {Array} contents The content areas
|
||||
*/
|
||||
var sortContents = function (contents) {
|
||||
if(contents) {
|
||||
contents.sort((function (item1, item2) {
|
||||
var offset1 = getOffsetTop(item1.content);
|
||||
var offset2 = getOffsetTop(item2.content);
|
||||
if (offset1 < offset2) return -1;
|
||||
return 1;
|
||||
}));
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the offset to use for calculating position
|
||||
* @param {Object} settings The settings for this instantiation
|
||||
* @return {Float} The number of pixels to offset the calculations
|
||||
*/
|
||||
var getOffset = function (settings) {
|
||||
|
||||
// if the offset is a function run it
|
||||
if (typeof settings.offset === 'function') {
|
||||
return parseFloat(settings.offset());
|
||||
}
|
||||
|
||||
// Otherwise, return it as-is
|
||||
return parseFloat(settings.offset);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the document element's height
|
||||
* @private
|
||||
* @returns {Number}
|
||||
*/
|
||||
var getDocumentHeight = function () {
|
||||
return Math.max(
|
||||
document.body.scrollHeight, document.documentElement.scrollHeight,
|
||||
document.body.offsetHeight, document.documentElement.offsetHeight,
|
||||
document.body.clientHeight, document.documentElement.clientHeight
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine if an element is in view
|
||||
* @param {Node} elem The element
|
||||
* @param {Object} settings The settings for this instantiation
|
||||
* @param {Boolean} bottom If true, check if element is above bottom of viewport instead
|
||||
* @return {Boolean} Returns true if element is in the viewport
|
||||
*/
|
||||
var isInView = function (elem, settings, bottom) {
|
||||
var bounds = elem.getBoundingClientRect();
|
||||
var offset = getOffset(settings);
|
||||
if (bottom) {
|
||||
return parseInt(bounds.bottom, 10) < (window.innerHeight || document.documentElement.clientHeight);
|
||||
}
|
||||
return parseInt(bounds.top, 10) <= offset;
|
||||
};
|
||||
|
||||
/**
|
||||
* Check if at the bottom of the viewport
|
||||
* @return {Boolean} If true, page is at the bottom of the viewport
|
||||
*/
|
||||
var isAtBottom = function () {
|
||||
if (window.innerHeight + window.pageYOffset >= getDocumentHeight()) return true;
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Check if the last item should be used (even if not at the top of the page)
|
||||
* @param {Object} item The last item
|
||||
* @param {Object} settings The settings for this instantiation
|
||||
* @return {Boolean} If true, use the last item
|
||||
*/
|
||||
var useLastItem = function (item, settings) {
|
||||
if (isAtBottom() && isInView(item.content, settings, true)) return true;
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the active content
|
||||
* @param {Array} contents The content areas
|
||||
* @param {Object} settings The settings for this instantiation
|
||||
* @return {Object} The content area and matching navigation link
|
||||
*/
|
||||
var getActive = function (contents, settings) {
|
||||
var last = contents[contents.length-1];
|
||||
if (useLastItem(last, settings)) return last;
|
||||
for (var i = contents.length - 1; i >= 0; i--) {
|
||||
if (isInView(contents[i].content, settings)) return contents[i];
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Deactivate parent navs in a nested navigation
|
||||
* @param {Node} nav The starting navigation element
|
||||
* @param {Object} settings The settings for this instantiation
|
||||
*/
|
||||
var deactivateNested = function (nav, settings) {
|
||||
|
||||
// If nesting isn't activated, bail
|
||||
if (!settings.nested) return;
|
||||
|
||||
// Get the parent navigation
|
||||
var li = nav.parentNode.closest('li');
|
||||
if (!li) return;
|
||||
|
||||
// Remove the active class
|
||||
li.classList.remove(settings.nestedClass);
|
||||
|
||||
// Apply recursively to any parent navigation elements
|
||||
deactivateNested(li, settings);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Deactivate a nav and content area
|
||||
* @param {Object} items The nav item and content to deactivate
|
||||
* @param {Object} settings The settings for this instantiation
|
||||
*/
|
||||
var deactivate = function (items, settings) {
|
||||
|
||||
// Make sure their are items to deactivate
|
||||
if (!items) return;
|
||||
|
||||
// Get the parent list item
|
||||
var li = items.nav.closest('li');
|
||||
if (!li) return;
|
||||
|
||||
// Remove the active class from the nav and content
|
||||
li.classList.remove(settings.navClass);
|
||||
items.content.classList.remove(settings.contentClass);
|
||||
|
||||
// Deactivate any parent navs in a nested navigation
|
||||
deactivateNested(li, settings);
|
||||
|
||||
// Emit a custom event
|
||||
emitEvent('gumshoeDeactivate', li, {
|
||||
link: items.nav,
|
||||
content: items.content,
|
||||
settings: settings
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Activate parent navs in a nested navigation
|
||||
* @param {Node} nav The starting navigation element
|
||||
* @param {Object} settings The settings for this instantiation
|
||||
*/
|
||||
var activateNested = function (nav, settings) {
|
||||
|
||||
// If nesting isn't activated, bail
|
||||
if (!settings.nested) return;
|
||||
|
||||
// Get the parent navigation
|
||||
var li = nav.parentNode.closest('li');
|
||||
if (!li) return;
|
||||
|
||||
// Add the active class
|
||||
li.classList.add(settings.nestedClass);
|
||||
|
||||
// Apply recursively to any parent navigation elements
|
||||
activateNested(li, settings);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Activate a nav and content area
|
||||
* @param {Object} items The nav item and content to activate
|
||||
* @param {Object} settings The settings for this instantiation
|
||||
*/
|
||||
var activate = function (items, settings) {
|
||||
|
||||
// Make sure their are items to activate
|
||||
if (!items) return;
|
||||
|
||||
// Get the parent list item
|
||||
var li = items.nav.closest('li');
|
||||
if (!li) return;
|
||||
|
||||
// Add the active class to the nav and content
|
||||
li.classList.add(settings.navClass);
|
||||
items.content.classList.add(settings.contentClass);
|
||||
|
||||
// Activate any parent navs in a nested navigation
|
||||
activateNested(li, settings);
|
||||
|
||||
// Emit a custom event
|
||||
emitEvent('gumshoeActivate', li, {
|
||||
link: items.nav,
|
||||
content: items.content,
|
||||
settings: settings
|
||||
});
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Create the Constructor object
|
||||
* @param {String} selector The selector to use for navigation items
|
||||
* @param {Object} options User options and settings
|
||||
*/
|
||||
var Constructor = function (selector, options) {
|
||||
|
||||
//
|
||||
// Variables
|
||||
//
|
||||
|
||||
var publicAPIs = {};
|
||||
var navItems, contents, current, timeout, settings;
|
||||
|
||||
|
||||
//
|
||||
// Methods
|
||||
//
|
||||
|
||||
/**
|
||||
* Set variables from DOM elements
|
||||
*/
|
||||
publicAPIs.setup = function () {
|
||||
|
||||
// Get all nav items
|
||||
navItems = document.querySelectorAll(selector);
|
||||
|
||||
// Create contents array
|
||||
contents = [];
|
||||
|
||||
// Loop through each item, get it's matching content, and push to the array
|
||||
Array.prototype.forEach.call(navItems, (function (item) {
|
||||
|
||||
// Get the content for the nav item
|
||||
var content = document.getElementById(decodeURIComponent(item.hash.substr(1)));
|
||||
if (!content) return;
|
||||
|
||||
// Push to the contents array
|
||||
contents.push({
|
||||
nav: item,
|
||||
content: content
|
||||
});
|
||||
|
||||
}));
|
||||
|
||||
// Sort contents by the order they appear in the DOM
|
||||
sortContents(contents);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Detect which content is currently active
|
||||
*/
|
||||
publicAPIs.detect = function () {
|
||||
|
||||
// Get the active content
|
||||
var active = getActive(contents, settings);
|
||||
|
||||
// if there's no active content, deactivate and bail
|
||||
if (!active) {
|
||||
if (current) {
|
||||
deactivate(current, settings);
|
||||
current = null;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// If the active content is the one currently active, do nothing
|
||||
if (current && active.content === current.content) return;
|
||||
|
||||
// Deactivate the current content and activate the new content
|
||||
deactivate(current, settings);
|
||||
activate(active, settings);
|
||||
|
||||
// Update the currently active content
|
||||
current = active;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Detect the active content on scroll
|
||||
* Debounced for performance
|
||||
*/
|
||||
var scrollHandler = function (event) {
|
||||
|
||||
// If there's a timer, cancel it
|
||||
if (timeout) {
|
||||
window.cancelAnimationFrame(timeout);
|
||||
}
|
||||
|
||||
// Setup debounce callback
|
||||
timeout = window.requestAnimationFrame(publicAPIs.detect);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Update content sorting on resize
|
||||
* Debounced for performance
|
||||
*/
|
||||
var resizeHandler = function (event) {
|
||||
|
||||
// If there's a timer, cancel it
|
||||
if (timeout) {
|
||||
window.cancelAnimationFrame(timeout);
|
||||
}
|
||||
|
||||
// Setup debounce callback
|
||||
timeout = window.requestAnimationFrame((function () {
|
||||
sortContents(contents);
|
||||
publicAPIs.detect();
|
||||
}));
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Destroy the current instantiation
|
||||
*/
|
||||
publicAPIs.destroy = function () {
|
||||
|
||||
// Undo DOM changes
|
||||
if (current) {
|
||||
deactivate(current, settings);
|
||||
}
|
||||
|
||||
// Remove event listeners
|
||||
window.removeEventListener('scroll', scrollHandler, false);
|
||||
if (settings.reflow) {
|
||||
window.removeEventListener('resize', resizeHandler, false);
|
||||
}
|
||||
|
||||
// Reset variables
|
||||
contents = null;
|
||||
navItems = null;
|
||||
current = null;
|
||||
timeout = null;
|
||||
settings = null;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize the current instantiation
|
||||
*/
|
||||
var init = function () {
|
||||
|
||||
// Merge user options into defaults
|
||||
settings = extend(defaults, options || {});
|
||||
|
||||
// Setup variables based on the current DOM
|
||||
publicAPIs.setup();
|
||||
|
||||
// Find the currently active content
|
||||
publicAPIs.detect();
|
||||
|
||||
// Setup event listeners
|
||||
window.addEventListener('scroll', scrollHandler, false);
|
||||
if (settings.reflow) {
|
||||
window.addEventListener('resize', resizeHandler, false);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Initialize and return the public APIs
|
||||
//
|
||||
|
||||
init();
|
||||
return publicAPIs;
|
||||
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Return the Constructor
|
||||
//
|
||||
|
||||
return Constructor;
|
||||
|
||||
}));
|
||||
@@ -1,9 +0,0 @@
|
||||
/*!
|
||||
* jQuery Smooth Scroll - v2.2.0 - 2017-05-05
|
||||
* https://github.com/kswedberg/jquery-smooth-scroll
|
||||
* Copyright (c) 2017 Karl Swedberg
|
||||
* Licensed MIT
|
||||
*/
|
||||
|
||||
|
||||
!function(a){"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof module&&module.exports?require("jquery"):jQuery)}(function(a){var b={},c={exclude:[],excludeWithin:[],offset:0,direction:"top",delegateSelector:null,scrollElement:null,scrollTarget:null,autoFocus:!1,beforeScroll:function(){},afterScroll:function(){},easing:"swing",speed:400,autoCoefficient:2,preventDefault:!0},d=function(b){var c=[],d=!1,e=b.dir&&"left"===b.dir?"scrollLeft":"scrollTop";return this.each(function(){var b=a(this);if(this!==document&&this!==window)return!document.scrollingElement||this!==document.documentElement&&this!==document.body?void(b[e]()>0?c.push(this):(b[e](1),d=b[e]()>0,d&&c.push(this),b[e](0))):(c.push(document.scrollingElement),!1)}),c.length||this.each(function(){this===document.documentElement&&"smooth"===a(this).css("scrollBehavior")&&(c=[this]),c.length||"BODY"!==this.nodeName||(c=[this])}),"first"===b.el&&c.length>1&&(c=[c[0]]),c},e=/^([\-\+]=)(\d+)/;a.fn.extend({scrollable:function(a){var b=d.call(this,{dir:a});return this.pushStack(b)},firstScrollable:function(a){var b=d.call(this,{el:"first",dir:a});return this.pushStack(b)},smoothScroll:function(b,c){if("options"===(b=b||{}))return c?this.each(function(){var b=a(this),d=a.extend(b.data("ssOpts")||{},c);a(this).data("ssOpts",d)}):this.first().data("ssOpts");var d=a.extend({},a.fn.smoothScroll.defaults,b),e=function(b){var c=function(a){return a.replace(/(:|\.|\/)/g,"\\$1")},e=this,f=a(this),g=a.extend({},d,f.data("ssOpts")||{}),h=d.exclude,i=g.excludeWithin,j=0,k=0,l=!0,m={},n=a.smoothScroll.filterPath(location.pathname),o=a.smoothScroll.filterPath(e.pathname),p=location.hostname===e.hostname||!e.hostname,q=g.scrollTarget||o===n,r=c(e.hash);if(r&&!a(r).length&&(l=!1),g.scrollTarget||p&&q&&r){for(;l&&j<h.length;)f.is(c(h[j++]))&&(l=!1);for(;l&&k<i.length;)f.closest(i[k++]).length&&(l=!1)}else l=!1;l&&(g.preventDefault&&b.preventDefault(),a.extend(m,g,{scrollTarget:g.scrollTarget||r,link:e}),a.smoothScroll(m))};return null!==b.delegateSelector?this.off("click.smoothscroll",b.delegateSelector).on("click.smoothscroll",b.delegateSelector,e):this.off("click.smoothscroll").on("click.smoothscroll",e),this}});var f=function(a){var b={relative:""},c="string"==typeof a&&e.exec(a);return"number"==typeof a?b.px=a:c&&(b.relative=c[1],b.px=parseFloat(c[2])||0),b},g=function(b){var c=a(b.scrollTarget);b.autoFocus&&c.length&&(c[0].focus(),c.is(document.activeElement)||(c.prop({tabIndex:-1}),c[0].focus())),b.afterScroll.call(b.link,b)};a.smoothScroll=function(c,d){if("options"===c&&"object"==typeof d)return a.extend(b,d);var e,h,i,j,k=f(c),l={},m=0,n="offset",o="scrollTop",p={},q={};k.px?e=a.extend({link:null},a.fn.smoothScroll.defaults,b):(e=a.extend({link:null},a.fn.smoothScroll.defaults,c||{},b),e.scrollElement&&(n="position","static"===e.scrollElement.css("position")&&e.scrollElement.css("position","relative")),d&&(k=f(d))),o="left"===e.direction?"scrollLeft":o,e.scrollElement?(h=e.scrollElement,k.px||/^(?:HTML|BODY)$/.test(h[0].nodeName)||(m=h[o]())):h=a("html, body").firstScrollable(e.direction),e.beforeScroll.call(h,e),l=k.px?k:{relative:"",px:a(e.scrollTarget)[n]()&&a(e.scrollTarget)[n]()[e.direction]||0},p[o]=l.relative+(l.px+m+e.offset),i=e.speed,"auto"===i&&(j=Math.abs(p[o]-h[o]()),i=j/e.autoCoefficient),q={duration:i,easing:e.easing,complete:function(){g(e)}},e.step&&(q.step=e.step),h.length?h.stop().animate(p,q):g(e)},a.smoothScroll.version="2.2.0",a.smoothScroll.filterPath=function(a){return a=a||"",a.replace(/^\//,"").replace(/(?:index|default).[a-zA-Z]{3,4}$/,"").replace(/\/$/,"")},a.fn.smoothScroll.defaults=c});
|
||||
Vendored
+632
@@ -0,0 +1,632 @@
|
||||
/*!
|
||||
* smooth-scroll v15.2.1
|
||||
* Animate scrolling to anchor links
|
||||
* (c) 2019 Chris Ferdinandi
|
||||
* MIT License
|
||||
* http://github.com/cferdinandi/smooth-scroll
|
||||
*/
|
||||
|
||||
(function (root, factory) {
|
||||
if (typeof define === 'function' && define.amd) {
|
||||
define([], (function () {
|
||||
return factory(root);
|
||||
}));
|
||||
} else if (typeof exports === 'object') {
|
||||
module.exports = factory(root);
|
||||
} else {
|
||||
root.SmoothScroll = factory(root);
|
||||
}
|
||||
})(typeof global !== 'undefined' ? global : typeof window !== 'undefined' ? window : this, (function (window) {
|
||||
|
||||
'use strict';
|
||||
|
||||
//
|
||||
// Default settings
|
||||
//
|
||||
|
||||
var defaults = {
|
||||
|
||||
// Selectors
|
||||
ignore: '[data-scroll-ignore]',
|
||||
header: null,
|
||||
topOnEmptyHash: true,
|
||||
|
||||
// Speed & Duration
|
||||
speed: 500,
|
||||
speedAsDuration: false,
|
||||
durationMax: null,
|
||||
durationMin: null,
|
||||
clip: true,
|
||||
offset: 0,
|
||||
|
||||
// Easing
|
||||
easing: 'easeInOutCubic',
|
||||
customEasing: null,
|
||||
|
||||
// History
|
||||
updateURL: true,
|
||||
popstate: true,
|
||||
|
||||
// Custom Events
|
||||
emitEvents: true
|
||||
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Utility Methods
|
||||
//
|
||||
|
||||
/**
|
||||
* Check if browser supports required methods
|
||||
* @return {Boolean} Returns true if all required methods are supported
|
||||
*/
|
||||
var supports = function () {
|
||||
return (
|
||||
'querySelector' in document &&
|
||||
'addEventListener' in window &&
|
||||
'requestAnimationFrame' in window &&
|
||||
'closest' in window.Element.prototype
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Merge two or more objects together.
|
||||
* @param {Object} objects The objects to merge together
|
||||
* @returns {Object} Merged values of defaults and options
|
||||
*/
|
||||
var extend = function () {
|
||||
var merged = {};
|
||||
Array.prototype.forEach.call(arguments, (function (obj) {
|
||||
for (var key in obj) {
|
||||
if (!obj.hasOwnProperty(key)) return;
|
||||
merged[key] = obj[key];
|
||||
}
|
||||
}));
|
||||
return merged;
|
||||
};
|
||||
|
||||
/**
|
||||
* Check to see if user prefers reduced motion
|
||||
* @param {Object} settings Script settings
|
||||
*/
|
||||
var reduceMotion = function (settings) {
|
||||
if ('matchMedia' in window && window.matchMedia('(prefers-reduced-motion)').matches) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the height of an element.
|
||||
* @param {Node} elem The element to get the height of
|
||||
* @return {Number} The element's height in pixels
|
||||
*/
|
||||
var getHeight = function (elem) {
|
||||
return parseInt(window.getComputedStyle(elem).height, 10);
|
||||
};
|
||||
|
||||
/**
|
||||
* Escape special characters for use with querySelector
|
||||
* @author Mathias Bynens
|
||||
* @link https://github.com/mathiasbynens/CSS.escape
|
||||
* @param {String} id The anchor ID to escape
|
||||
*/
|
||||
var escapeCharacters = function (id) {
|
||||
|
||||
// Remove leading hash
|
||||
if (id.charAt(0) === '#') {
|
||||
id = id.substr(1);
|
||||
}
|
||||
|
||||
var string = String(id);
|
||||
var length = string.length;
|
||||
var index = -1;
|
||||
var codeUnit;
|
||||
var result = '';
|
||||
var firstCodeUnit = string.charCodeAt(0);
|
||||
while (++index < length) {
|
||||
codeUnit = string.charCodeAt(index);
|
||||
// Note: there’s no need to special-case astral symbols, surrogate
|
||||
// pairs, or lone surrogates.
|
||||
|
||||
// If the character is NULL (U+0000), then throw an
|
||||
// `InvalidCharacterError` exception and terminate these steps.
|
||||
if (codeUnit === 0x0000) {
|
||||
throw new InvalidCharacterError(
|
||||
'Invalid character: the input contains U+0000.'
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
// If the character is in the range [\1-\1F] (U+0001 to U+001F) or is
|
||||
// U+007F, […]
|
||||
(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||
|
||||
// If the character is the first character and is in the range [0-9]
|
||||
// (U+0030 to U+0039), […]
|
||||
(index === 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||
|
||||
// If the character is the second character and is in the range [0-9]
|
||||
// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]
|
||||
(
|
||||
index === 1 &&
|
||||
codeUnit >= 0x0030 && codeUnit <= 0x0039 &&
|
||||
firstCodeUnit === 0x002D
|
||||
)
|
||||
) {
|
||||
// http://dev.w3.org/csswg/cssom/#escape-a-character-as-code-point
|
||||
result += '\\' + codeUnit.toString(16) + ' ';
|
||||
continue;
|
||||
}
|
||||
|
||||
// If the character is not handled by one of the above rules and is
|
||||
// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or
|
||||
// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to
|
||||
// U+005A), or [a-z] (U+0061 to U+007A), […]
|
||||
if (
|
||||
codeUnit >= 0x0080 ||
|
||||
codeUnit === 0x002D ||
|
||||
codeUnit === 0x005F ||
|
||||
codeUnit >= 0x0030 && codeUnit <= 0x0039 ||
|
||||
codeUnit >= 0x0041 && codeUnit <= 0x005A ||
|
||||
codeUnit >= 0x0061 && codeUnit <= 0x007A
|
||||
) {
|
||||
// the character itself
|
||||
result += string.charAt(index);
|
||||
continue;
|
||||
}
|
||||
|
||||
// Otherwise, the escaped character.
|
||||
// http://dev.w3.org/csswg/cssom/#escape-a-character
|
||||
result += '\\' + string.charAt(index);
|
||||
|
||||
}
|
||||
|
||||
// Return sanitized hash
|
||||
return '#' + result;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate the easing pattern
|
||||
* @link https://gist.github.com/gre/1650294
|
||||
* @param {String} type Easing pattern
|
||||
* @param {Number} time Time animation should take to complete
|
||||
* @returns {Number}
|
||||
*/
|
||||
var easingPattern = function (settings, time) {
|
||||
var pattern;
|
||||
|
||||
// Default Easing Patterns
|
||||
if (settings.easing === 'easeInQuad') pattern = time * time; // accelerating from zero velocity
|
||||
if (settings.easing === 'easeOutQuad') pattern = time * (2 - time); // decelerating to zero velocity
|
||||
if (settings.easing === 'easeInOutQuad') pattern = time < 0.5 ? 2 * time * time : -1 + (4 - 2 * time) * time; // acceleration until halfway, then deceleration
|
||||
if (settings.easing === 'easeInCubic') pattern = time * time * time; // accelerating from zero velocity
|
||||
if (settings.easing === 'easeOutCubic') pattern = (--time) * time * time + 1; // decelerating to zero velocity
|
||||
if (settings.easing === 'easeInOutCubic') pattern = time < 0.5 ? 4 * time * time * time : (time - 1) * (2 * time - 2) * (2 * time - 2) + 1; // acceleration until halfway, then deceleration
|
||||
if (settings.easing === 'easeInQuart') pattern = time * time * time * time; // accelerating from zero velocity
|
||||
if (settings.easing === 'easeOutQuart') pattern = 1 - (--time) * time * time * time; // decelerating to zero velocity
|
||||
if (settings.easing === 'easeInOutQuart') pattern = time < 0.5 ? 8 * time * time * time * time : 1 - 8 * (--time) * time * time * time; // acceleration until halfway, then deceleration
|
||||
if (settings.easing === 'easeInQuint') pattern = time * time * time * time * time; // accelerating from zero velocity
|
||||
if (settings.easing === 'easeOutQuint') pattern = 1 + (--time) * time * time * time * time; // decelerating to zero velocity
|
||||
if (settings.easing === 'easeInOutQuint') pattern = time < 0.5 ? 16 * time * time * time * time * time : 1 + 16 * (--time) * time * time * time * time; // acceleration until halfway, then deceleration
|
||||
|
||||
// Custom Easing Patterns
|
||||
if (!!settings.customEasing) pattern = settings.customEasing(time);
|
||||
|
||||
return pattern || time; // no easing, no acceleration
|
||||
};
|
||||
|
||||
/**
|
||||
* Determine the document's height
|
||||
* @returns {Number}
|
||||
*/
|
||||
var getDocumentHeight = function () {
|
||||
return Math.max(
|
||||
document.body.scrollHeight, document.documentElement.scrollHeight,
|
||||
document.body.offsetHeight, document.documentElement.offsetHeight,
|
||||
document.body.clientHeight, document.documentElement.clientHeight
|
||||
);
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate how far to scroll
|
||||
* Clip support added by robjtede - https://github.com/cferdinandi/smooth-scroll/issues/405
|
||||
* @param {Element} anchor The anchor element to scroll to
|
||||
* @param {Number} headerHeight Height of a fixed header, if any
|
||||
* @param {Number} offset Number of pixels by which to offset scroll
|
||||
* @param {Boolean} clip If true, adjust scroll distance to prevent abrupt stops near the bottom of the page
|
||||
* @returns {Number}
|
||||
*/
|
||||
var getEndLocation = function (anchor, headerHeight, offset, clip) {
|
||||
var location = 0;
|
||||
if (anchor.offsetParent) {
|
||||
do {
|
||||
location += anchor.offsetTop;
|
||||
anchor = anchor.offsetParent;
|
||||
} while (anchor);
|
||||
}
|
||||
location = Math.max(location - headerHeight - offset, 0);
|
||||
if (clip) {
|
||||
location = Math.min(location, getDocumentHeight() - window.innerHeight);
|
||||
}
|
||||
return location;
|
||||
};
|
||||
|
||||
/**
|
||||
* Get the height of the fixed header
|
||||
* @param {Node} header The header
|
||||
* @return {Number} The height of the header
|
||||
*/
|
||||
var getHeaderHeight = function (header) {
|
||||
return !header ? 0 : (getHeight(header) + header.offsetTop);
|
||||
};
|
||||
|
||||
/**
|
||||
* Calculate the speed to use for the animation
|
||||
* @param {Number} distance The distance to travel
|
||||
* @param {Object} settings The plugin settings
|
||||
* @return {Number} How fast to animate
|
||||
*/
|
||||
var getSpeed = function (distance, settings) {
|
||||
var speed = settings.speedAsDuration ? settings.speed : Math.abs(distance / 1000 * settings.speed);
|
||||
if (settings.durationMax && speed > settings.durationMax) return settings.durationMax;
|
||||
if (settings.durationMin && speed < settings.durationMin) return settings.durationMin;
|
||||
return parseInt(speed, 10);
|
||||
};
|
||||
|
||||
var setHistory = function (options) {
|
||||
|
||||
// Make sure this should run
|
||||
if (!history.replaceState || !options.updateURL || history.state) return;
|
||||
|
||||
// Get the hash to use
|
||||
var hash = window.location.hash;
|
||||
hash = hash ? hash : '';
|
||||
|
||||
// Set a default history
|
||||
history.replaceState(
|
||||
{
|
||||
smoothScroll: JSON.stringify(options),
|
||||
anchor: hash ? hash : window.pageYOffset
|
||||
},
|
||||
document.title,
|
||||
hash ? hash : window.location.href
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Update the URL
|
||||
* @param {Node} anchor The anchor that was scrolled to
|
||||
* @param {Boolean} isNum If true, anchor is a number
|
||||
* @param {Object} options Settings for Smooth Scroll
|
||||
*/
|
||||
var updateURL = function (anchor, isNum, options) {
|
||||
|
||||
// Bail if the anchor is a number
|
||||
if (isNum) return;
|
||||
|
||||
// Verify that pushState is supported and the updateURL option is enabled
|
||||
if (!history.pushState || !options.updateURL) return;
|
||||
|
||||
// Update URL
|
||||
history.pushState(
|
||||
{
|
||||
smoothScroll: JSON.stringify(options),
|
||||
anchor: anchor.id
|
||||
},
|
||||
document.title,
|
||||
anchor === document.documentElement ? '#top' : '#' + anchor.id
|
||||
);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Bring the anchored element into focus
|
||||
* @param {Node} anchor The anchor element
|
||||
* @param {Number} endLocation The end location to scroll to
|
||||
* @param {Boolean} isNum If true, scroll is to a position rather than an element
|
||||
*/
|
||||
var adjustFocus = function (anchor, endLocation, isNum) {
|
||||
|
||||
// Is scrolling to top of page, blur
|
||||
if (anchor === 0) {
|
||||
document.body.focus();
|
||||
}
|
||||
|
||||
// Don't run if scrolling to a number on the page
|
||||
if (isNum) return;
|
||||
|
||||
// Otherwise, bring anchor element into focus
|
||||
anchor.focus();
|
||||
if (document.activeElement !== anchor) {
|
||||
anchor.setAttribute('tabindex', '-1');
|
||||
anchor.focus();
|
||||
anchor.style.outline = 'none';
|
||||
}
|
||||
window.scrollTo(0 , endLocation);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Emit a custom event
|
||||
* @param {String} type The event type
|
||||
* @param {Object} options The settings object
|
||||
* @param {Node} anchor The anchor element
|
||||
* @param {Node} toggle The toggle element
|
||||
*/
|
||||
var emitEvent = function (type, options, anchor, toggle) {
|
||||
if (!options.emitEvents || typeof window.CustomEvent !== 'function') return;
|
||||
var event = new CustomEvent(type, {
|
||||
bubbles: true,
|
||||
detail: {
|
||||
anchor: anchor,
|
||||
toggle: toggle
|
||||
}
|
||||
});
|
||||
document.dispatchEvent(event);
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// SmoothScroll Constructor
|
||||
//
|
||||
|
||||
var SmoothScroll = function (selector, options) {
|
||||
|
||||
//
|
||||
// Variables
|
||||
//
|
||||
|
||||
var smoothScroll = {}; // Object for public APIs
|
||||
var settings, anchor, toggle, fixedHeader, eventTimeout, animationInterval;
|
||||
|
||||
|
||||
//
|
||||
// Methods
|
||||
//
|
||||
|
||||
/**
|
||||
* Cancel a scroll-in-progress
|
||||
*/
|
||||
smoothScroll.cancelScroll = function (noEvent) {
|
||||
cancelAnimationFrame(animationInterval);
|
||||
animationInterval = null;
|
||||
if (noEvent) return;
|
||||
emitEvent('scrollCancel', settings);
|
||||
};
|
||||
|
||||
/**
|
||||
* Start/stop the scrolling animation
|
||||
* @param {Node|Number} anchor The element or position to scroll to
|
||||
* @param {Element} toggle The element that toggled the scroll event
|
||||
* @param {Object} options
|
||||
*/
|
||||
smoothScroll.animateScroll = function (anchor, toggle, options) {
|
||||
|
||||
// Cancel any in progress scrolls
|
||||
smoothScroll.cancelScroll();
|
||||
|
||||
// Local settings
|
||||
var _settings = extend(settings || defaults, options || {}); // Merge user options with defaults
|
||||
|
||||
// Selectors and variables
|
||||
var isNum = Object.prototype.toString.call(anchor) === '[object Number]' ? true : false;
|
||||
var anchorElem = isNum || !anchor.tagName ? null : anchor;
|
||||
if (!isNum && !anchorElem) return;
|
||||
var startLocation = window.pageYOffset; // Current location on the page
|
||||
if (_settings.header && !fixedHeader) {
|
||||
// Get the fixed header if not already set
|
||||
fixedHeader = document.querySelector(_settings.header);
|
||||
}
|
||||
var headerHeight = getHeaderHeight(fixedHeader);
|
||||
var endLocation = isNum ? anchor : getEndLocation(anchorElem, headerHeight, parseInt((typeof _settings.offset === 'function' ? _settings.offset(anchor, toggle) : _settings.offset), 10), _settings.clip); // Location to scroll to
|
||||
var distance = endLocation - startLocation; // distance to travel
|
||||
var documentHeight = getDocumentHeight();
|
||||
var timeLapsed = 0;
|
||||
var speed = getSpeed(distance, _settings);
|
||||
var start, percentage, position;
|
||||
|
||||
/**
|
||||
* Stop the scroll animation when it reaches its target (or the bottom/top of page)
|
||||
* @param {Number} position Current position on the page
|
||||
* @param {Number} endLocation Scroll to location
|
||||
* @param {Number} animationInterval How much to scroll on this loop
|
||||
*/
|
||||
var stopAnimateScroll = function (position, endLocation) {
|
||||
|
||||
// Get the current location
|
||||
var currentLocation = window.pageYOffset;
|
||||
|
||||
// Check if the end location has been reached yet (or we've hit the end of the document)
|
||||
if (position == endLocation || currentLocation == endLocation || ((startLocation < endLocation && window.innerHeight + currentLocation) >= documentHeight)) {
|
||||
|
||||
// Clear the animation timer
|
||||
smoothScroll.cancelScroll(true);
|
||||
|
||||
// Bring the anchored element into focus
|
||||
adjustFocus(anchor, endLocation, isNum);
|
||||
|
||||
// Emit a custom event
|
||||
emitEvent('scrollStop', _settings, anchor, toggle);
|
||||
|
||||
// Reset start
|
||||
start = null;
|
||||
animationInterval = null;
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Loop scrolling animation
|
||||
*/
|
||||
var loopAnimateScroll = function (timestamp) {
|
||||
if (!start) { start = timestamp; }
|
||||
timeLapsed += timestamp - start;
|
||||
percentage = speed === 0 ? 0 : (timeLapsed / speed);
|
||||
percentage = (percentage > 1) ? 1 : percentage;
|
||||
position = startLocation + (distance * easingPattern(_settings, percentage));
|
||||
window.scrollTo(0, Math.floor(position));
|
||||
if (!stopAnimateScroll(position, endLocation)) {
|
||||
animationInterval = window.requestAnimationFrame(loopAnimateScroll);
|
||||
start = timestamp;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Reset position to fix weird iOS bug
|
||||
* @link https://github.com/cferdinandi/smooth-scroll/issues/45
|
||||
*/
|
||||
if (window.pageYOffset === 0) {
|
||||
window.scrollTo(0, 0);
|
||||
}
|
||||
|
||||
// Update the URL
|
||||
updateURL(anchor, isNum, _settings);
|
||||
|
||||
// Emit a custom event
|
||||
emitEvent('scrollStart', _settings, anchor, toggle);
|
||||
|
||||
// Start scrolling animation
|
||||
smoothScroll.cancelScroll(true);
|
||||
window.requestAnimationFrame(loopAnimateScroll);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* If smooth scroll element clicked, animate scroll
|
||||
*/
|
||||
var clickHandler = function (event) {
|
||||
|
||||
// Don't run if the user prefers reduced motion
|
||||
if (reduceMotion(settings)) return;
|
||||
|
||||
// Don't run if right-click or command/control + click
|
||||
if (event.button !== 0 || event.metaKey || event.ctrlKey) return;
|
||||
|
||||
// Check if event.target has closest() method
|
||||
// By @totegi - https://github.com/cferdinandi/smooth-scroll/pull/401/
|
||||
if(!('closest' in event.target))return;
|
||||
|
||||
// Check if a smooth scroll link was clicked
|
||||
toggle = event.target.closest(selector);
|
||||
if (!toggle || toggle.tagName.toLowerCase() !== 'a' || event.target.closest(settings.ignore)) return;
|
||||
|
||||
// Only run if link is an anchor and points to the current page
|
||||
if (toggle.hostname !== window.location.hostname || toggle.pathname !== window.location.pathname || !/#/.test(toggle.href)) return;
|
||||
|
||||
// Get an escaped version of the hash
|
||||
var hash = escapeCharacters(toggle.hash);
|
||||
|
||||
// Get the anchored element
|
||||
var anchor = settings.topOnEmptyHash && hash === '#' ? document.documentElement : document.querySelector(hash);
|
||||
anchor = !anchor && hash === '#top' ? document.documentElement : anchor;
|
||||
|
||||
// If anchored element exists, scroll to it
|
||||
if (!anchor) return;
|
||||
event.preventDefault();
|
||||
setHistory(settings);
|
||||
smoothScroll.animateScroll(anchor, toggle);
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Animate scroll on popstate events
|
||||
*/
|
||||
var popstateHandler = function (event) {
|
||||
|
||||
// Stop if history.state doesn't exist (ex. if clicking on a broken anchor link).
|
||||
// fixes `Cannot read property 'smoothScroll' of null` error getting thrown.
|
||||
if (history.state === null) return;
|
||||
|
||||
// Only run if state is a popstate record for this instantiation
|
||||
if (!history.state.smoothScroll || history.state.smoothScroll !== JSON.stringify(settings)) return;
|
||||
|
||||
// Only run if state includes an anchor
|
||||
|
||||
// if (!history.state.anchor && history.state.anchor !== 0) return;
|
||||
|
||||
// Get the anchor
|
||||
var anchor = history.state.anchor;
|
||||
if (typeof anchor === 'string' && anchor) {
|
||||
anchor = document.querySelector(escapeCharacters(history.state.anchor));
|
||||
if (!anchor) return;
|
||||
}
|
||||
|
||||
// Animate scroll to anchor link
|
||||
smoothScroll.animateScroll(anchor, null, {updateURL: false});
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Destroy the current initialization.
|
||||
*/
|
||||
smoothScroll.destroy = function () {
|
||||
|
||||
// If plugin isn't already initialized, stop
|
||||
if (!settings) return;
|
||||
|
||||
// Remove event listeners
|
||||
document.removeEventListener('click', clickHandler, false);
|
||||
window.removeEventListener('popstate', popstateHandler, false);
|
||||
|
||||
// Cancel any scrolls-in-progress
|
||||
smoothScroll.cancelScroll();
|
||||
|
||||
// Reset variables
|
||||
settings = null;
|
||||
anchor = null;
|
||||
toggle = null;
|
||||
fixedHeader = null;
|
||||
eventTimeout = null;
|
||||
animationInterval = null;
|
||||
|
||||
};
|
||||
|
||||
/**
|
||||
* Initialize Smooth Scroll
|
||||
* @param {Object} options User settings
|
||||
*/
|
||||
smoothScroll.init = function (options) {
|
||||
|
||||
// feature test
|
||||
if (!supports()) throw 'Smooth Scroll: This browser does not support the required JavaScript methods and browser APIs.';
|
||||
|
||||
// Destroy any existing initializations
|
||||
smoothScroll.destroy();
|
||||
|
||||
// Selectors and variables
|
||||
settings = extend(defaults, options || {}); // Merge user options with defaults
|
||||
fixedHeader = settings.header ? document.querySelector(settings.header) : null; // Get the fixed header
|
||||
|
||||
// When a toggle is clicked, run the click handler
|
||||
document.addEventListener('click', clickHandler, false);
|
||||
|
||||
// If updateURL and popState are enabled, listen for pop events
|
||||
if (settings.updateURL && settings.popstate) {
|
||||
window.addEventListener('popstate', popstateHandler, false);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
//
|
||||
// Initialize plugin
|
||||
//
|
||||
|
||||
smoothScroll.init(options);
|
||||
|
||||
|
||||
//
|
||||
// Public APIs
|
||||
//
|
||||
|
||||
return smoothScroll;
|
||||
|
||||
};
|
||||
|
||||
return SmoothScroll;
|
||||
|
||||
}));
|
||||
-2
File diff suppressed because one or more lines are too long
+10598
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -24,7 +24,7 @@ masthead_title : # overrides the website title displayed in the masthe
|
||||
# breadcrumbs : false # true, false (default)
|
||||
words_per_minute : 200
|
||||
comments:
|
||||
provider : "false" # false (default), "disqus", "discourse", "facebook", "google-plus", "staticman_v2", "staticman", "utterances", "custom"
|
||||
provider : "false" # false (default), "disqus", "discourse", "facebook", "staticman_v2", "staticman", "utterances", "custom"
|
||||
disqus:
|
||||
shortname :
|
||||
discourse:
|
||||
@@ -93,7 +93,7 @@ social:
|
||||
name : # If the user or organization name differs from the site's name
|
||||
links: # An array of links to social media profiles
|
||||
- "https://twitter.com/mmistakes"
|
||||
- "https://facebook.com/michaelrose"
|
||||
- "https://www.facebook.com/michaelrose"
|
||||
|
||||
# Analytics
|
||||
analytics:
|
||||
|
||||
+17
-7
@@ -2,17 +2,27 @@
|
||||
|
||||
Billy Rick:
|
||||
name : "Billy Rick"
|
||||
uri : "http://thewhip.com"
|
||||
email : "billy@rick.com"
|
||||
bio : "What do you want, jewels? I am a very extravagant man."
|
||||
avatar : "/assets/images/bio-photo-2.jpg"
|
||||
twitter : "extravagantman"
|
||||
google_plus : "BillyRick"
|
||||
links:
|
||||
- label: "Email"
|
||||
icon: "fas fa-fw fa-envelope-square"
|
||||
url: "mailto:billyrick@rick.com"
|
||||
- label: "Website"
|
||||
icon: "fas fa-fw fa-link"
|
||||
url: "https://thewhip.com"
|
||||
- label: "Twitter"
|
||||
icon: "fab fa-fw fa-twitter-square"
|
||||
url: "https://twitter.com/extravagantman"
|
||||
|
||||
Cornelius Fiddlebone:
|
||||
name : "Cornelius Fiddlebone"
|
||||
email : "cornelius@thewhip.com"
|
||||
bio : "I ordered what?"
|
||||
avatar : "/assets/images/bio-photo.jpg"
|
||||
twitter : "rhymeswithsackit"
|
||||
google_plus : "CorneliusFiddlebone"
|
||||
links:
|
||||
- label: "Email"
|
||||
icon: "fas fa-fw fa-envelope-square"
|
||||
url: "mailto:cornelius@thewhip.com"
|
||||
- label: "Twitter"
|
||||
icon: "fab fa-fw fa-twitter-square"
|
||||
url: "https://twitter.com/rhymeswithsackit"
|
||||
+163
-11
@@ -141,7 +141,7 @@ fr: &DEFAULT_FR
|
||||
comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez."
|
||||
loading_label : "Chargement..."
|
||||
search_placeholder_text : "Entrez votre recherche..."
|
||||
results_found : "Aucun résultat trouvé"
|
||||
results_found : "Résultat(s) trouvé(s)"
|
||||
back_to_top : "Retour en haut"
|
||||
fr-FR:
|
||||
<<: *DEFAULT_FR
|
||||
@@ -245,23 +245,23 @@ pt-BR:
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
search_label :
|
||||
search_label : "Buscar"
|
||||
toc_label : "Nesta página"
|
||||
ext_link_label : "Link direto"
|
||||
less_than : "menos que"
|
||||
minute_read : "minuto(s) de leitura"
|
||||
share_on_label : "Compartilhe em"
|
||||
share_on_label : "Compartilhe: "
|
||||
meta_label :
|
||||
tags_label : "Tags:"
|
||||
categories_label : "Categorias:"
|
||||
date_label : "Atualizado em:"
|
||||
comments_label : "Deixe um comentário"
|
||||
comments_title :
|
||||
comments_title : "Comentários"
|
||||
more_label : "Aprenda mais"
|
||||
related_label : "Talvez você goste também"
|
||||
follow_label : "Acompanhe em"
|
||||
related_label : "Talvez você também goste"
|
||||
follow_label : "Acompanhe no"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Feito com"
|
||||
powered_by : "Desenvolvido com"
|
||||
website_label : "Site"
|
||||
email_label : "Email"
|
||||
recent_posts : "Postagens recentes"
|
||||
@@ -277,6 +277,8 @@ pt-BR:
|
||||
comment_success_msg : "Obrigado pelo seu comentário! Ele aparecerá no site assim que for aprovado."
|
||||
comment_error_msg : "Desculpe, ocorreu um erro no envio. Por favor verifique se todos os campos obrigatórios foram preenchidos e tente novamente."
|
||||
loading_label : "Carregando..."
|
||||
back_to_top : "Voltar para o topo"
|
||||
search_placeholder_text : "Pesquisar..."
|
||||
|
||||
# Italian
|
||||
# -------
|
||||
@@ -366,6 +368,9 @@ zh: &DEFAULT_ZH_HANS
|
||||
comment_success_msg : "感谢您的评论!被批准后它会立即在此站点展示。"
|
||||
comment_error_msg : "很抱歉,您的提交存在错误。请确保所有必填字段都已填写正确,然后再试一次。"
|
||||
loading_label : "正在加载..."
|
||||
search_placeholder_text : "输入您要搜索的关键词..."
|
||||
results_found : "条记录匹配"
|
||||
back_to_top : "返回顶部"
|
||||
zh-CN:
|
||||
<<: *DEFAULT_ZH_HANS
|
||||
zh-SG:
|
||||
@@ -701,8 +706,8 @@ sv: &DEFAULT_SV
|
||||
pagination_next : "Nästa"
|
||||
breadcrumb_home_label : "Hem"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "Meny ridå"
|
||||
search_label :
|
||||
menu_label : "Växla menyläge"
|
||||
search_label : "Växla sökläge"
|
||||
toc_label : "På denna sida"
|
||||
ext_link_label : "Direkt länk"
|
||||
less_than : "mindre än"
|
||||
@@ -725,15 +730,18 @@ sv: &DEFAULT_SV
|
||||
undefined_wpm : "Odefinerade parametrar words_per_minute i _config.yml"
|
||||
comment_form_info : "Din e-post adress kommer inte att publiceras. Obligatoriska fält är markerade."
|
||||
comment_form_comment_label : "Kommentar"
|
||||
comment_form_md_info : "Använd Markdown för text-formateringen."
|
||||
comment_form_md_info : "Stöd för Markdown finns."
|
||||
comment_form_name_label : "Namn"
|
||||
comment_form_email_label : "E-post adress"
|
||||
comment_form_website_label : "Webdsida (valfritt)"
|
||||
comment_btn_submit : "Skicka en kommentar"
|
||||
comment_btn_submitted : "Kommentaren har tagits emot"
|
||||
comment_success_msg : "Tack för din kommentar! Den kommer att visas på sidan så fort den har godkännts."
|
||||
comment_error_msg : "Tyvärr det har blivit något fel i en av fälten, se till att du fyller i alla rutor och försök igen."
|
||||
comment_error_msg : "Tyvärr det har blivit något fel i ett av fälten, se till att du fyllt i alla obligatoriska fält och försök igen."
|
||||
loading_label : "Laddar..."
|
||||
search_placeholder_text : "Fyll i sökterm..."
|
||||
results_found : "Resultat funna"
|
||||
back_to_top : "Tillbaka till toppen"
|
||||
sv-SE:
|
||||
<<: *DEFAULT_SV
|
||||
sv-FI:
|
||||
@@ -870,6 +878,9 @@ vi: &DEFAULT_VI
|
||||
comment_success_msg : "Cảm ơn bạn đã bình luận! Bình luận sẽ xuất hiện sau khi được duyệt."
|
||||
comment_error_msg : "Rất tiếc, có lỗi trong việc gửi bình luận. Hãy đảm bảo toàn bộ các phần bắt buộc đã được điền đầy đủ và thử lại."
|
||||
loading_label : "Đang tải..."
|
||||
search_placeholder_text : "Nhập từ khóa cần tìm..."
|
||||
results_found : "Kết quả tìm được"
|
||||
back_to_top : "Lên đầu trang"
|
||||
vi-VN:
|
||||
<<: *DEFAULT_VI
|
||||
|
||||
@@ -1244,6 +1255,147 @@ fa: &DEFAULT_FA
|
||||
fa-IR:
|
||||
<<: *DEFAULT_FA
|
||||
|
||||
|
||||
# Malayalam
|
||||
# -----------------
|
||||
ml: &DEFAULT_ML
|
||||
page : "പേജ്"
|
||||
pagination_previous : "തിരികെ"
|
||||
pagination_next : "മുന്നോട്ട്"
|
||||
breadcrumb_home_label : "ഹോം"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "ടോഗിൾ മെനു"
|
||||
search_label : "ടോഗിൾ സെർച്ച്"
|
||||
toc_label : "ഈ പേജിൽ"
|
||||
ext_link_label : "ലിങ്കിലേക് പോകാൻ"
|
||||
less_than : "ഏതാണ്ട്"
|
||||
minute_read : "മിനിറ്റ് ദൈർഖ്യം"
|
||||
share_on_label : "ഷെയർ ചെയ്യുവാൻ "
|
||||
meta_label :
|
||||
tags_label : "ടാഗുകൾ:"
|
||||
categories_label : "വിഭാഗങ്ങൾ:"
|
||||
date_label : "അവസാന മാറ്റം:"
|
||||
comments_label : "അഭിപ്രായം രേഖപ്പെടുത്തുക"
|
||||
comments_title : "അഭിപ്രായങ്ങൾ"
|
||||
more_label : "കൂടുതൽ അറിയുവാൻ"
|
||||
related_label : "നിങ്ങൾക് ഇതും ഇഷ്ടപ്പെട്ടേക്കാം"
|
||||
follow_label : "പിന്തുടരുക:"
|
||||
feed_label : "ഫീഡ്"
|
||||
powered_by : "പവേർഡ് ബൈ"
|
||||
website_label : "വെബ്സൈറ്റ്"
|
||||
email_label : "ഇ-മെയിൽ"
|
||||
recent_posts : "സമീപകാല പോസ്റ്റുകൾ"
|
||||
undefined_wpm : "Config.yml ലെ words_per_minute പരാമീറ്റർ നിർവചിച്ചിട്ടില്ല."
|
||||
comment_form_info : "നിങ്ങളുടെ ഇമെയിൽ വിലാസം പ്രസിദ്ധീകരിക്കില്ല. ആവശ്യമായ ഫീൽഡുകൾ അടയാളപ്പെടുത്തി."
|
||||
comment_form_comment_label : "കമന്റ്"
|
||||
comment_form_md_info : "Markdown സപ്പോർട്ട് ചെയ്യുന്നതാണ്."
|
||||
comment_form_name_label : "പേര്"
|
||||
comment_form_email_label : "ഇ-മെയിൽ"
|
||||
comment_form_website_label : "വെബ്സൈറ് (ഓപ്ഷണൽ)"
|
||||
comment_btn_submit : "അഭിപ്രായം രേഖപ്പെടുത്തുക"
|
||||
comment_btn_submitted : "രേഖപ്പെടുത്തി"
|
||||
comment_success_msg : "നിങ്ങളുടെ അഭിപ്രായത്തിന് നന്ദി! ഇത് അംഗീകരിച്ചുകഴിഞ്ഞാൽ ഇത് സൈറ്റിൽ പ്രദർശിപ്പിക്കും."
|
||||
comment_error_msg : "ക്ഷമിക്കണം, നിങ്ങളുടെ സമർപ്പണവുമായി ബന്ധപ്പെട്ട് ഒരു പിശകുണ്ടായിരുന്നു. ആവശ്യമായ എല്ലാ ഫീൽഡുകളും പൂർത്തിയായിട്ടുണ്ടെന്ന് ഉറപ്പുവരുത്തുക, വീണ്ടും ശ്രമിക്കുക."
|
||||
loading_label : "ലോഡിംഗ്..."
|
||||
search_placeholder_text : "നിങ്ങളുടെ തിരയൽ പദം നൽകുക..."
|
||||
results_found : "ഫലം (കൾ) കണ്ടെത്തി"
|
||||
back_to_top : "മുകളിലേയ്ക്ക്"
|
||||
ml-IN:
|
||||
<<: *DEFAULT_ML
|
||||
|
||||
# Thailand
|
||||
# --------------
|
||||
th: &DEFAULT_TH
|
||||
page : "หน้า"
|
||||
pagination_previous : "ก่อนหน้า"
|
||||
pagination_next : "ถัดไป"
|
||||
breadcrumb_home_label : "หน้าแรก"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "พับเมนู"
|
||||
search_label : "พับการค้นหา"
|
||||
toc_label : "บนหน้านี้"
|
||||
ext_link_label : "ลิงก์โดยตรง"
|
||||
less_than : "น้อยกว่า"
|
||||
minute_read : "นาที ในการอ่าน"
|
||||
share_on_label : "แชร์ไปที่"
|
||||
meta_label :
|
||||
tags_label : "แท็ก:"
|
||||
categories_label : "หมวดหมู่:"
|
||||
date_label : "อัพเดตล่าสุด:"
|
||||
comments_label : "แสดงความคิดเห็น"
|
||||
comments_title : "ความคิดเห็น"
|
||||
more_label : "อ่านต่อ"
|
||||
related_label : "คุณอาจจะชอบสิ่งนี้"
|
||||
follow_label : "ติดตาม:"
|
||||
feed_label : "ฟืดข่าว"
|
||||
powered_by : "ขับเคลื่อนโดย"
|
||||
website_label : "เว็บไซต์"
|
||||
email_label : "อีเมล"
|
||||
recent_posts : "โพสล่าสุด"
|
||||
undefined_wpm : "ไม่สามารถระบุพารามิเตอร์ words_per_minute ได้ใน _config.yml"
|
||||
comment_form_info : "อีเมลของคุณไม่สามารถโพสสาธารณะได้ กรุณากรอกช่องที่ระบุด้วยเครื่องหมายดอกจันไว้"
|
||||
comment_form_comment_label : "แสดงความคิดเห็น"
|
||||
comment_form_md_info : "มาร์กดาวน์ได้รับการสนับสนุน"
|
||||
comment_form_name_label : "ชื่อ"
|
||||
comment_form_email_label : "ที่อยู่อีเมล"
|
||||
comment_form_website_label : "เว็บไซต์ (ตัวเลือก)"
|
||||
comment_btn_submit : "ส่งความคิดเห็น"
|
||||
comment_btn_submitted : "ส่งเรียบร้อยแล้ว"
|
||||
comment_success_msg : "ขอบคุณสำหรับการแสดงความคิดเห็น! ความคิดเห็นจะได้รับการแสดงหลังจากได้รับการยืนยัน"
|
||||
comment_error_msg : "ขออภัย, มีบางอย่างผิดพลาดจากการส่งแบบฟอร์ม กรุณาตรวจทานทุกช่อง และลองส่งใหม่อีกครั้ง"
|
||||
loading_label : "กำลังโหลด..."
|
||||
search_placeholder_text : "ใส่คำค้นหาของคุณ..."
|
||||
results_found : "ผลการค้นหา พบ"
|
||||
back_to_top : "กลับด้านบน"
|
||||
th-TH:
|
||||
<<: *DEFAULT_TH
|
||||
|
||||
# Hindi
|
||||
# -----------------
|
||||
hi: &DEFAULT_HI
|
||||
page : "पृष्ठ"
|
||||
pagination_previous : "पिछला"
|
||||
pagination_next : "अगला"
|
||||
breadcrumb_home_label : "घर"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "टॉगल मेनू"
|
||||
toc_label : "इस पृष्ठ पर"
|
||||
ext_link_label : "सीधा संपर्क"
|
||||
less_than : "से कम"
|
||||
minute_read : "मिनट में पढ़ सकते हैं"
|
||||
share_on_label : "साझा करें"
|
||||
meta_label :
|
||||
tags_label : "अंकितक:"
|
||||
categories_label : "श्रेणियाँ:"
|
||||
date_label : "अपडेट किया गया:"
|
||||
comments_label : "एक टिप्पणी छोड़ें"
|
||||
comments_title : "टिप्पणियाँ"
|
||||
more_label : "और अधिक जानें"
|
||||
related_label : "आप इसका भी आनंद ले सकते हैं"
|
||||
follow_label : "अनुसरण करे:"
|
||||
feed_label : "फ़ीड"
|
||||
powered_by : "द्वारा संचालित"
|
||||
website_label : "वेबसाइट"
|
||||
email_label : "ईमेल"
|
||||
recent_posts : "हाल के पोस्ट"
|
||||
undefined_wpm : "_config.yml पर अपरिभाषित पैरामीटर words_per_minute"
|
||||
comment_form_info : "आपका ईमेल पता प्रकाशित नहीं किया जाएगा। अपेक्षित स्थानों को रेखांकित कर दिया गया है"
|
||||
comment_form_comment_label : "टिप्पणी"
|
||||
comment_form_md_info : "मार्कडाउन की अनुमति है।"
|
||||
comment_form_name_label : "नाम"
|
||||
comment_form_email_label : "ईमेल पता"
|
||||
comment_form_website_label : "वेबसाइट (ऐच्छिक)"
|
||||
comment_btn_submit : "टिप्पणी भेजें"
|
||||
comment_btn_submitted : "प्रस्तुत"
|
||||
comment_success_msg : "आपके कमेंट के लिए धन्यवाद! इसे स्वीकृति मिलने के बाद साइट पर दिखाया जाएगा।"
|
||||
comment_error_msg : "क्षमा करें, आपके सबमिशन के साथ एक त्रुटि हुई थी। कृपया सुनिश्चित करें कि सभी आवश्यक फ़ील्ड पूरा हो गए हैं और पुनः प्रयास करें।"
|
||||
loading_label : "लोड हो रहा है..."
|
||||
search_placeholder_text : "अपना खोज शब्द दर्ज करें..."
|
||||
results_found : "परिणाम मिला/मिले"
|
||||
back_to_top : "शीर्ष पर वापस"
|
||||
hi-IN:
|
||||
<<: *DEFAULT_HI
|
||||
|
||||
# Another locale
|
||||
# --------------
|
||||
#
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: "Quick-Start Guide"
|
||||
permalink: /docs/quick-start-guide/
|
||||
excerpt: "How to quickly install and setup Minimal Mistakes for use with GitHub Pages."
|
||||
last_modified_at: 2018-11-25T22:21:33-05:00
|
||||
last_modified_at: 2019-04-18T15:53:52-04:00
|
||||
redirect_from:
|
||||
- /theme-setup/
|
||||
toc: true
|
||||
@@ -74,10 +74,13 @@ To install as a remote theme:
|
||||
bundle
|
||||
```
|
||||
|
||||
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.15.0"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
||||
4. Add `remote_theme: "mmistakes/minimal-mistakes@4.16.4"` to your `_config.yml` file. Remove any other `theme:` or `remote_theme:` entry.
|
||||
|
||||
You may also optionally specify a branch, [tag](https://github.com/mmistakes/minimal-mistakes/tags), or commit to use by appending an @ and the Git ref (e.g., `mmistakes/minimal-mistakes@4.9.0` or `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). This is useful when rolling back to older versions of the theme. If you don't specify a Git ref, the latest on `master` will be used.
|
||||
|
||||
**Looking for an example?** Fork the [Minimal Mistakes remote theme starter](https://github.com/mmistakes/mm-github-pages-starter) for the quickest method of getting a GitHub Pages hosted site up and running. Replace sample content with your own and configure as needed.
|
||||
{: .notice--info}
|
||||
|
||||
---
|
||||
|
||||
**Note:** Your Jekyll site should be viewable immediately at <http://USERNAME.github.io>. If it's not, you can force a rebuild by **Customizing Your Site** (see below for more details).
|
||||
|
||||
@@ -12,7 +12,7 @@ To check which version you are currently using, view the source of your built si
|
||||
|
||||
```
|
||||
<!--
|
||||
Minimal Mistakes Jekyll Theme 4.15.0 by Michael Rose
|
||||
Minimal Mistakes Jekyll Theme 4.16.4 by Michael Rose
|
||||
Copyright 2013-2018 Michael Rose - mademistakes.com | @mmistakes
|
||||
Free for personal and commercial use under the MIT license
|
||||
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
|
||||
@@ -28,14 +28,14 @@ Simply run `bundle update` if you're using Bundler (have a `Gemfile`) or `gem up
|
||||
When using Bundler you can downgrade or lock the theme to a specific release ([tag](https://github.com/mmistakes/minimal-mistakes/tags)), branch, or commit. Instead of `gem "minimal-mistakes-jekyll"` you'd add the following to your `Gemfile`:
|
||||
|
||||
```ruby
|
||||
gem "minimal-mistakes-jekyll", :git => "https://github.com/mmistakes/minimal-mistakes.git", :tag => "4.15.0"
|
||||
gem "minimal-mistakes-jekyll", :git => "https://github.com/mmistakes/minimal-mistakes.git", :tag => "4.16.4"
|
||||
```
|
||||
|
||||
For more information on [installing gems from git repositories](http://bundler.io/v1.16/guides/git.html) consult Bundler's documentation.
|
||||
|
||||
## Remote theme
|
||||
|
||||
When setting `remote_theme: "mmistakes/minimal-mistakes@4.15.0"` in your `_config.yml` you may also optionally specify a branch, [tag](https://github.com/mmistakes/minimal-mistakes/tags), or commit to use by appending an @ and the Git ref.
|
||||
When setting `remote_theme: "mmistakes/minimal-mistakes@4.16.4"` in your `_config.yml` you may also optionally specify a branch, [tag](https://github.com/mmistakes/minimal-mistakes/tags), or commit to use by appending an @ and the Git ref.
|
||||
|
||||
For example you can roll back to release 4.8.1 with `mmistakes/minimal-mistakes@4.8.1` or a specific commit with `mmistakes/minimal-mistakes@bbf3cbc5fd64a3e1885f3f99eb90ba92af84063d`). For a complete list of theme versions consult the [releases page](https://github.com/mmistakes/minimal-mistakes/releases).
|
||||
|
||||
|
||||
@@ -281,14 +281,13 @@ To disable reading time for a post, add `read_time: false` its YAML Front Matter
|
||||
|
||||
### Comments
|
||||
|
||||
[**Disqus**](https://disqus.com/), [**Discourse**](https://www.discourse.org/), [**Facebook**](https://developers.facebook.com/docs/plugins/comments), **Google+**, [**utterances**](https://utteranc.es/), and static-based commenting via [**Staticman**](https://staticman.net/) are built into the theme. First set the comment provider you'd like to use:
|
||||
[**Disqus**](https://disqus.com/), [**Discourse**](https://www.discourse.org/), [**Facebook**](https://developers.facebook.com/docs/plugins/comments), [**utterances**](https://utteranc.es/), and static-based commenting via [**Staticman**](https://staticman.net/) are built into the theme. First set the comment provider you'd like to use:
|
||||
|
||||
| Name | Comment Provider |
|
||||
| ---------------- | ------------------------- |
|
||||
| **disqus** | Disqus |
|
||||
| **discourse** | Discourse |
|
||||
| **facebook** | Facebook Comments |
|
||||
| **google-plus** | Google+ Comments |
|
||||
| **staticman_v2** | Staticman v2 |
|
||||
| **staticman** | Staticman v1 (deprecated) |
|
||||
| **utterances** | utterances |
|
||||
@@ -392,7 +391,19 @@ Transform user comments into `_data` files that live inside of your GitHub repos
|
||||
|
||||
###### Staticman v3
|
||||
|
||||
Due to the support for GitLab, the URL scheme has been changed. Bewteen `v3` and `/entry`, one needs to input a Git service provider (either `github` or `gitlab`). Apart from that, the setup for GitHub remains the same.
|
||||
Due to the [support for GitLab](https://github.com/eduardoboucas/staticman/pull/219), the URL scheme has been changed. Between `v3/entry/` and `/{your Git username}`, one needs to input a Git service provider (either `github` or `gitlab`). For example
|
||||
|
||||
https://{your Staticman v3 API}/v3/entry/github/{your Git username}/{your repository name}/...
|
||||
|
||||
```yaml
|
||||
# _config.yml (defaults)
|
||||
repository : # Git username/repo-name e.g. "mmistakes/minimal-mistakes"
|
||||
comments:
|
||||
provider : "staticman_v2"
|
||||
staticman:
|
||||
branch : "master"
|
||||
endpoint : https://{your Staticman v3 API}/v3/entry/github/
|
||||
```
|
||||
|
||||
###### Staticman v2
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: "UI Text"
|
||||
permalink: /docs/ui-text/
|
||||
excerpt: "Text for customizing user interface elements found in the theme."
|
||||
last_modified_at: 2018-06-04T12:04:02-04:00
|
||||
last_modified_at: 2019-01-23T20:22:49-05:00
|
||||
---
|
||||
|
||||
Text for UI elements, `_layouts`, and `_includes` grouped together as a set of translation keys. This is by no means a full-on i18n solution, but it does help make customizing theme text a bit easier.
|
||||
@@ -21,6 +21,7 @@ The English[^yaml-anchors] main keys in [`_data/ui-text.yml`](https://github.com
|
||||
- Italian (Italiano)
|
||||
- Korean
|
||||
- Japanese
|
||||
- Malayalam
|
||||
- Nepali (Nepalese)
|
||||
- Polish
|
||||
- Persian (فارسی)
|
||||
@@ -29,6 +30,7 @@ The English[^yaml-anchors] main keys in [`_data/ui-text.yml`](https://github.com
|
||||
- Slovak
|
||||
- Spanish (Español)
|
||||
- Swedish
|
||||
- Thai
|
||||
- Turkish (Türkçe)
|
||||
- Vietnamese
|
||||
|
||||
|
||||
@@ -564,7 +564,7 @@ author:
|
||||
url: "https://instagram.com/mmistakes"
|
||||
```
|
||||
|
||||
**Note:** Depending on the icon and theme skin used, colors may not be used. Popular social networks like Twitter, Facebook, Instagram, Google+, etc. have the appropriate brand color set in CSS. To change or add missing colors edit [`_utilities.scss`](https://github.com/mmistakes/minimal-mistakes/blob/master/_sass/minimal-mistakes/_utilities.scss) in `<site root>/_sass/minimal-mistakes/`.
|
||||
**Note:** Depending on the icon and theme skin used, colors may not be used. Popular social networks like Twitter, Facebook, Instagram, etc. have the appropriate brand color set in CSS. To change or add missing colors edit [`_utilities.scss`](https://github.com/mmistakes/minimal-mistakes/blob/master/_sass/minimal-mistakes/_utilities.scss) in `<site root>/_sass/minimal-mistakes/`.
|
||||
{: .notice--info}
|
||||
|
||||
For example, to color a Reddit icon, simply add a `color` declaration and the corresponding hex code like so:
|
||||
@@ -701,7 +701,7 @@ defaults:
|
||||
|
||||
## Social sharing links
|
||||
|
||||
The `single` layout has an option to enable social links at the bottom of posts for sharing on Twitter, Facebook, Google+, and LinkedIn. Similar to the links found in the author sidebar, the theme ships with defaults for the most common social networks.
|
||||
The `single` layout has an option to enable social links at the bottom of posts for sharing on Twitter, Facebook, and LinkedIn. Similar to the links found in the author sidebar, the theme ships with defaults for the most common social networks.
|
||||
|
||||

|
||||
|
||||
@@ -709,7 +709,7 @@ To enable these links add `share: true` to a post or page's YAML Front Matter or
|
||||
|
||||
If you'd like to add, remove, or change the order of these default links you can do so by editing [`_includes/social-share.html`](https://github.com/mmistakes/minimal-mistakes/blob/master/_includes/social-share.html).
|
||||
|
||||
Let's say you wanted to replace the Google+ button with a Reddit one. Simply replace the HTML with the following:
|
||||
Let's say you wanted to replace the LinkedIn button with a Reddit one. Simply replace the HTML with the following:
|
||||
|
||||
```html
|
||||
{% raw %}<a href="https://www.reddit.com/submit?url={{ page.url | absolute_url | url_encode }}&title={{ page.title }}" class="btn" title="{{ site.data.ui-text[site.locale].share_on_label }} Reddit"><i class="fab fa-fw fa-reddit" aria-hidden="true"></i><span> Reddit</span></a>{% endraw %}
|
||||
@@ -732,7 +732,6 @@ Under the `$social` color map in `assets/_scss/_buttons.scss` simply add a name
|
||||
$social:
|
||||
(facebook, $facebook-color),
|
||||
(twitter, $twitter-color),
|
||||
(google-plus, $google-plus-color),
|
||||
(linkedin, $linkedin-color);
|
||||
(reddit, #ff4500;)
|
||||
```
|
||||
|
||||
@@ -199,6 +199,9 @@ header:
|
||||
provider: youtube
|
||||
```
|
||||
|
||||
**Tip:** if you'd like to start the video at a particular timestamp, you can append `?start=110` (for instance) to the video `id` in order to have the video start at 1:50.
|
||||
{: .notice--info }
|
||||
|
||||
### Vimeo
|
||||
|
||||
To embed the following Vimeo video at url `https://vimeo.com/212731897` into a post or page's main content you'd use:
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
title: "JavaScript"
|
||||
permalink: /docs/javascript/
|
||||
excerpt: "Instructions for customizing and building the theme's scripts."
|
||||
last_modified_at: 2018-01-03T19:12:35-05:00
|
||||
last_modified_at: 2019-05-02T08:55:27-04:00
|
||||
---
|
||||
|
||||
The theme's `assets/js/main.min.js` script is built from several vendor, jQuery plugins, and other scripts found in [`assets/js/`](https://github.com/mmistakes/minimal-mistakes/tree/master/assets/js).
|
||||
@@ -12,15 +12,17 @@ minimal mistakes
|
||||
├── assets
|
||||
| ├── js
|
||||
| | ├── plugins
|
||||
| | | ├── jquery.fitvids.js # fluid width video embeds
|
||||
| | | ├── jquery.greedy-navigation.js # priority plus navigation
|
||||
| | | ├── jquery.magnific-popup.js # responsive lightbox
|
||||
| | | └── jquery.smooth-scroll.min.js # make same-page links scroll smoothly
|
||||
| | | ├── gumshoe.js # simple scrollspy
|
||||
| | | ├── jquery.ba-throttle-debounce.js # rate-limit functions
|
||||
| | | ├── jquery.fitvids.js # fluid width video embeds
|
||||
| | | ├── jquery.greedy-navigation.js # priority plus navigation
|
||||
| | | ├── jquery.magnific-popup.js # responsive lightbox
|
||||
| | | └── smooth-scroll.js # make same-page links scroll smoothly
|
||||
| | ├── vendor
|
||||
| | | └── jquery
|
||||
| | | └── jquery-3.3.1.min.js
|
||||
| | ├── _main.js # jQuery plugin settings and other scripts
|
||||
| | └── main.min.js # concatenated and minified scripts
|
||||
| | | └── jquery-3.4.1.js
|
||||
| | ├── _main.js # jQuery plugin settings and other scripts
|
||||
| | └── main.min.js # concatenated and minified theme script
|
||||
```
|
||||
|
||||
## Customizing
|
||||
@@ -39,6 +41,8 @@ head_scripts:
|
||||
- /assets/js/your-custom-head-script.js
|
||||
footer_scripts:
|
||||
- /assets/js/your-custom-footer-script.js
|
||||
after_footer_scripts:
|
||||
- /assets/js/custom-script-loads-after-footer.js
|
||||
```
|
||||
|
||||
**Note:** If you assign `footer_scripts` the theme's `/assets/js/main.min.js` file will be deactivated. This script includes jQuery and various other plugins that you'll need to find replacements for and include separately.
|
||||
|
||||
@@ -1,13 +1,104 @@
|
||||
---
|
||||
title: "History"
|
||||
classes: wide
|
||||
permalink: /docs/history/
|
||||
excerpt: "Change log of enhancements and bug fixes made to the theme."
|
||||
sidebar:
|
||||
nav: docs
|
||||
last_modified_at: 2019-01-16T08:24:36-05:00
|
||||
toc: true
|
||||
last_modified_at: 2019-05-26T20:46:18-04:00
|
||||
toc: false
|
||||
---
|
||||
|
||||
## [4.16.4](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.4)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Update Brazilian Portuguese localized UI text strings. [#2162](https://github.com/mmistakes/minimal-mistakes/pull/2162)
|
||||
- Update Font Awesome to v5.8.2. [#2150](https://github.com/mmistakes/minimal-mistakes/pull/2150)
|
||||
- Add missing Spanish localized UI text strings. [#2149](https://github.com/mmistakes/minimal-mistakes/pull/2149)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix arithmetic in `_form.scss` partial. [#2169](https://github.com/mmistakes/minimal-mistakes/pull/2169)
|
||||
- Fix pound symbol not displaying properly for post categories and tags. [#2156](https://github.com/mmistakes/minimal-mistakes/issues/2156)
|
||||
- Fix permalink stacking order and click-able area in archives.
|
||||
|
||||
## [4.16.3](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.3)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Update jQuery to v3.4.1. [#2137](https://github.com/mmistakes/minimal-mistakes/issues/2137)
|
||||
- Update Gumshoe to v5.1.1. [#2140](https://github.com/mmistakes/minimal-mistakes/issues/2140)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix JavaScript error when resizing pages with table of contents. [#2140](https://github.com/mmistakes/minimal-mistakes/issues/2140)
|
||||
|
||||
## [4.16.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.2)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Revert jQuery back to version v3.3.1, v.3.4.0 causes issues with other plugins that haven't been updated. [#2137](https://github.com/mmistakes/minimal-mistakes/issues/2137)
|
||||
|
||||
## [4.16.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.1)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Update [`compress` layout](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#compress-layout) to v3.1.0. [#2128](https://github.com/mmistakes/minimal-mistakes/pull/2128)
|
||||
- Update jQuery to v3.4.0. [#2129](https://github.com/mmistakes/minimal-mistakes/pull/2129)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix Gumshoe related JavaScript error on pages without a table of contents. [#2124](https://github.com/mmistakes/minimal-mistakes/pull/2124)
|
||||
|
||||
## [4.16.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.0)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Improve search `input` semantics for Lunr and Google search providers. [#2123](https://github.com/mmistakes/minimal-mistakes/pull/2123)
|
||||
- Allow adding JavaScript files after those bundled in the theme. [#2110](https://github.com/mmistakes/minimal-mistakes/issues/2110) [#2116](https://github.com/mmistakes/minimal-mistakes/pull/2116)
|
||||
- Add `$max-width` Sass variable for adjusting page content's maximum width. [#2093](https://github.com/mmistakes/minimal-mistakes/pull/2093)
|
||||
- Add Thai localized UI text strings. [#2111](https://github.com/mmistakes/minimal-mistakes/pull/2111)
|
||||
- Update Font Awesome to [v5.8.1](https://github.com/FortAwesome/Font-Awesome/releases/tag/5.8.1). [#2102](https://github.com/mmistakes/minimal-mistakes/pull/2102)
|
||||
- Add missing Vietnamese localized UI text strings. [#2097](https://github.com/mmistakes/minimal-mistakes/pull/2097)
|
||||
- Replace jQuery Smooth Scroll with Smooth Scroll + Gumshoe. [#2082](https://github.com/mmistakes/minimal-mistakes/pull/2082)
|
||||
- Add styling for [GFM task lists](https://help.github.com/en/articles/about-task-lists#creating-task-lists). [#2092](https://github.com/mmistakes/minimal-mistakes/issues/2092)
|
||||
- Update Google Universal Analytics to load async. [#2079](https://github.com/mmistakes/minimal-mistakes/pull/2079)
|
||||
- Remove Google+ social sharing button, comment provider, and author link configs from theme.
|
||||
- Add missing Chinese text strings. [#2072](https://github.com/mmistakes/minimal-mistakes/pull/2072)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix table of contents active link styling.
|
||||
- Add missing Hindi localized UI text strings. [#2105](https://github.com/mmistakes/minimal-mistakes/pull/2105) [#2106](https://github.com/mmistakes/minimal-mistakes/pull/2106)
|
||||
- Fix Brazilian Portuguese text strings. [#2098](https://github.com/mmistakes/minimal-mistakes/pull/2098)
|
||||
- Fix typo in French `results_found` text string. [#2096](https://github.com/mmistakes/minimal-mistakes/pull/2096)
|
||||
- Fix figures inside of list elements. [#2094](https://github.com/mmistakes/minimal-mistakes/pull/2094)
|
||||
- Remove Font Awesome `data-search-pseudo-elements` attribute as it degrades smooth scroll performance. [#2075](https://github.com/mmistakes/minimal-mistakes/issues/2075#issuecomment-472437014)
|
||||
- Fix footnote links incompatibility with smooth scroll plugin. [#2075](https://github.com/mmistakes/minimal-mistakes/issues/2075)
|
||||
- Loosen Bundler dependency in ruby gem.
|
||||
|
||||
## [4.15.2](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.2)
|
||||
|
||||
### Enhancements
|
||||
|
||||
- Close search overlay with <kbd>Esc</kbd>. [#2055](https://github.com/mmistakes/minimal-mistakes/pull/2055)
|
||||
- Update Swedish localized UI text strings. [#2056](https://github.com/mmistakes/minimal-mistakes/pull/2056)
|
||||
- Update Font Awesome to 5.7.1 and add `data-search-pseudo-elements` attribute. [#2053](https://github.com/mmistakes/minimal-mistakes/pull/2053)
|
||||
- Add Malayalam localized UI text strings. [#2037](https://github.com/mmistakes/minimal-mistakes/pull/2037)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix table of contents errors with non-English chracters in the headings. [#2042](https://github.com/mmistakes/minimal-mistakes/pull/2042)
|
||||
- Fix `site.logo` false positives. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026#issuecomment-455770730)
|
||||
- Add empty `alt` attribute to `site.logo` image. [#2035](https://github.com/mmistakes/minimal-mistakes/pull/2035)
|
||||
|
||||
## [4.15.1](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.1)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- Fix empty `<img>` when `site_logo` is not assigned. [#2026](https://github.com/mmistakes/minimal-mistakes/pull/2026#issuecomment-454809876)
|
||||
|
||||
## [4.15.0](https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.0)
|
||||
|
||||
### Enhancements
|
||||
@@ -58,7 +149,7 @@ toc: true
|
||||
- Add Punjabi localized UI text strings. [#1962](https://github.com/mmistakes/minimal-mistakes/pull/1962)
|
||||
- Add Hindi localized UI text strings. [#1888](https://github.com/mmistakes/minimal-mistakes/pull/1888)
|
||||
- Update Lunr to `2.3.3`. [#1885](https://github.com/mmistakes/minimal-mistakes/pull/1885)
|
||||
- Cache "static" includes to improve build performance. **Note:** The theme uses the [jekyll-include-cache](https://github.com/benbalter/jekyll-include-cache) plugin which will need to be installed in your `Gemfile` and added to the `plugins` array of `_config.yml`. Otherwise you'll throw `Unknown tag 'include_cached'` errors at build. [#1874]
|
||||
- Cache "static" includes to improve build performance. **Note:** The theme uses the [jekyll-include-cache](https://github.com/benbalter/jekyll-include-cache) plugin which will need to be installed in your `Gemfile` and added to the `plugins` array of `_config.yml`. Otherwise you'll throw `Unknown tag 'include_cached'` errors at build. [#1874](https://github.com/mmistakes/minimal-mistakes/pull/1874)
|
||||
- Make entire feature and archive items "clickable". [#1864](https://github.com/mmistakes/minimal-mistakes/pull/1864)
|
||||
- Allow custom Staticman endpoints. [#1842](https://github.com/mmistakes/minimal-mistakes/issues/1842)
|
||||
- Remove `type="text/css"` from Algolia script includes. [#1836](https://github.com/mmistakes/minimal-mistakes/pull/1836)
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
<!doctype html>
|
||||
<!--
|
||||
Minimal Mistakes Jekyll Theme 4.15.0 by Michael Rose
|
||||
Minimal Mistakes Jekyll Theme 4.16.4 by Michael Rose
|
||||
Copyright 2013-2019 Michael Rose - mademistakes.com | @mmistakes
|
||||
Free for personal and commercial use under the MIT license
|
||||
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE
|
||||
|
||||
@@ -12,7 +12,7 @@ layouts_gallery:
|
||||
- url: /assets/images/mm-layout-archive.png
|
||||
image_path: /assets/images/mm-layout-archive.png
|
||||
alt: "archive layout example"
|
||||
last_modified_at: 2018-11-21T14:49:33-05:00
|
||||
last_modified_at: 2019-04-03T15:15:09-04:00
|
||||
toc: true
|
||||
---
|
||||
|
||||
@@ -31,9 +31,9 @@ Minimal Mistakes is a flexible two-column Jekyll theme. Perfect for hosting your
|
||||
- Several responsive layout options (single, archive index, search, splash, and paginated home page).
|
||||
- Optimized for search engines with support for [Twitter Cards](https://dev.twitter.com/cards/overview) and [Open Graph](http://ogp.me/) data
|
||||
- Optional [header images](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#headers), [custom sidebars](https://mmistakes.github.io/minimal-mistakes/docs/layouts/#sidebars), [table of contents](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#table-of-contents), [galleries](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#gallery), related posts, [breadcrumb links](https://mmistakes.github.io/minimal-mistakes/docs/configuration/#breadcrumb-navigation-beta), [navigation lists](https://mmistakes.github.io/minimal-mistakes/docs/helpers/#navigation-list), and more.
|
||||
- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), Google+, [Discourse](https://www.discourse.org/), [utterances](https://utteranc.es/), static-based via [Staticman v1 and v2](https://staticman.net/), and custom).
|
||||
- Commenting support (powered by [Disqus](https://disqus.com/), [Facebook](https://developers.facebook.com/docs/plugins/comments), [Discourse](https://www.discourse.org/), [utterances](https://utteranc.es/), static-based via [Staticman v1 and v2](https://staticman.net/), and custom).
|
||||
- [Google Analytics](https://www.google.com/analytics/) support.
|
||||
- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Chinese, Danish, Dutch, French (Français), German (Deutsch), Greek, Hindi (हिंदी), Hungarian, Indonesian, Italian (Italiano), Japanese, Korean, Nepali (Nepalese), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Turkish (Türkçe), and Vietnamese.
|
||||
- UI localized text in English (default), Brazilian Portuguese (Português brasileiro), Chinese, Danish, Dutch, French (Français), German (Deutsch), Greek, Hindi (हिंदी), Hungarian, Indonesian, Italian (Italiano), Japanese, Korean, Malayalam, Nepali (Nepalese), Persian (فارسی), Polish, Punjabi (ਪੰਜਾਬੀ), Romanian, Russian, Slovak, Spanish (Español), Swedish, Thai, Turkish (Türkçe), and Vietnamese.
|
||||
|
||||
## Demo Pages
|
||||
|
||||
|
||||
+1
-1
@@ -9,7 +9,7 @@ header:
|
||||
url: "/docs/quick-start-guide/"
|
||||
excerpt: >
|
||||
A flexible two-column Jekyll theme. Perfect for building personal sites, blogs, and portfolios.<br />
|
||||
<small><a href="https://github.com/mmistakes/minimal-mistakes/releases/tag/4.15.0">Latest release v4.15.0</a></small>
|
||||
<small><a href="https://github.com/mmistakes/minimal-mistakes/releases/tag/4.16.4">Latest release v4.16.4</a></small>
|
||||
feature_row:
|
||||
- image_path: /assets/images/mm-customizable-feature.png
|
||||
alt: "customizable"
|
||||
|
||||
@@ -19,10 +19,10 @@ Nested and mixed lists are an interesting beast. It's a corner case to make sure
|
||||
|
||||
1. ordered item
|
||||
2. ordered item
|
||||
* **unordered**
|
||||
* **unordered**
|
||||
1. ordered item
|
||||
2. ordered item
|
||||
* **unordered**
|
||||
* **unordered**
|
||||
1. ordered item
|
||||
2. ordered item
|
||||
3. ordered item
|
||||
4. ordered item
|
||||
|
||||
@@ -30,10 +30,10 @@ Nested and mixed lists are an interesting beast. It's a corner case to make sure
|
||||
|
||||
1. ordered item
|
||||
2. ordered item
|
||||
* **unordered**
|
||||
* **unordered**
|
||||
* unordered item
|
||||
* unordered item
|
||||
* **unordered**
|
||||
* **unordered**
|
||||
* unordered item
|
||||
* unordered item
|
||||
3. ordered item
|
||||
4. ordered item
|
||||
|
||||
@@ -43,8 +43,8 @@ Nested and mixed lists are an interesting beast. It's a corner case to make sure
|
||||
* unordered item
|
||||
1. ordered
|
||||
2. ordered
|
||||
* unordered item
|
||||
* unordered item
|
||||
* unordered item
|
||||
* unordered item
|
||||
* unordered item
|
||||
* unordered item
|
||||
|
||||
@@ -57,4 +57,10 @@ Nested and mixed lists are an interesting beast. It's a corner case to make sure
|
||||
1. **ordered item**
|
||||
2. **ordered item**
|
||||
* unordered item
|
||||
* unordered item
|
||||
* unordered item
|
||||
|
||||
### Task Lists
|
||||
|
||||
- [x] Finish my changes
|
||||
- [ ] Push my commits to GitHub
|
||||
- [ ] Open a pull request
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
title: "Layout: More Tag"
|
||||
excerpt_separator: <!--more-->
|
||||
categories:
|
||||
- Layout
|
||||
- Uncategorized
|
||||
@@ -11,7 +12,7 @@ tags:
|
||||
|
||||
This content is before the [excerpt separator tag](http://jekyllrb.com/docs/posts/#post-excerpts).
|
||||
|
||||
Right after this sentence there should be a **continue reading** link of some sort in archive-index pages.
|
||||
Additional content before the more tag.
|
||||
|
||||
<!--more-->
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
Gem::Specification.new do |spec|
|
||||
spec.name = "minimal-mistakes-jekyll"
|
||||
spec.version = "4.15.0"
|
||||
spec.version = "4.16.4"
|
||||
spec.authors = ["Michael Rose"]
|
||||
|
||||
spec.summary = %q{A flexible two-column Jekyll theme.}
|
||||
@@ -24,6 +24,6 @@ Gem::Specification.new do |spec|
|
||||
spec.add_runtime_dependency "jemoji", "~> 0.10"
|
||||
spec.add_runtime_dependency "jekyll-include-cache", "~> 0.1"
|
||||
|
||||
spec.add_development_dependency "bundler", "~> 1.15"
|
||||
spec.add_development_dependency "bundler"
|
||||
spec.add_development_dependency "rake", "~> 10.0"
|
||||
end
|
||||
|
||||
Generated
+1
-1
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "minimal-mistakes",
|
||||
"version": "4.14.1",
|
||||
"version": "4.16.4",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "minimal-mistakes",
|
||||
"version": "4.15.0",
|
||||
"version": "4.16.4",
|
||||
"description": "Minimal Mistakes 2 column Jekyll theme.",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
@@ -26,7 +26,7 @@
|
||||
"uglify-js": "^3.4.9"
|
||||
},
|
||||
"scripts": {
|
||||
"uglify": "uglifyjs assets/js/vendor/jquery/jquery-3.3.1.min.js assets/js/plugins/jquery.fitvids.js assets/js/plugins/jquery.greedy-navigation.js assets/js/plugins/jquery.magnific-popup.js assets/js/plugins/jquery.smooth-scroll.min.js assets/js/plugins/jquery.ba-throttle-debounce.js assets/js/_main.js -c -m -o assets/js/main.min.js",
|
||||
"uglify": "uglifyjs assets/js/vendor/jquery/jquery-3.4.1.js assets/js/plugins/jquery.fitvids.js assets/js/plugins/jquery.greedy-navigation.js assets/js/plugins/jquery.magnific-popup.js assets/js/plugins/jquery.ba-throttle-debounce.js assets/js/plugins/smooth-scroll.js assets/js/plugins/gumshoe.js assets/js/_main.js -c -m -o assets/js/main.min.js",
|
||||
"add-banner": "node banner.js",
|
||||
"watch:js": "onchange \"assets/js/**/*.js\" -e \"assets/js/main.min.js\" -- npm run build:js",
|
||||
"build:js": "npm run uglify && npm run add-banner"
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ masthead_title : "Custom Title" # overrides the website title displaye
|
||||
# breadcrumbs : false # true, false (default)
|
||||
words_per_minute : 200
|
||||
comments:
|
||||
provider : # false (default), "disqus", "discourse", "facebook", "google-plus", "staticman", "utterances", "custom"
|
||||
provider : # false (default), "disqus", "discourse", "facebook", "staticman", "utterances", "custom"
|
||||
disqus:
|
||||
shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-
|
||||
discourse:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: "Posts by Category"
|
||||
layout: categories
|
||||
permalink: /categories-archive/
|
||||
permalink: /categories/
|
||||
author_profile: true
|
||||
---
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: "Posts by Tag"
|
||||
permalink: /tags-archive/
|
||||
permalink: /tags/
|
||||
layout: tags
|
||||
author_profile: true
|
||||
---
|
||||
|
||||
@@ -57,4 +57,10 @@ Nested and mixed lists are an interesting beast. It's a corner case to make sure
|
||||
1. **ordered item**
|
||||
2. **ordered item**
|
||||
* unordered item
|
||||
* unordered item
|
||||
* unordered item
|
||||
|
||||
### Task Lists
|
||||
|
||||
- [x] Finish my changes
|
||||
- [ ] Push my commits to GitHub
|
||||
- [ ] Open a pull request
|
||||
@@ -44,6 +44,8 @@ tags:
|
||||
- Unseen
|
||||
- video
|
||||
- YouTube
|
||||
- U:R:COOL
|
||||
- C#
|
||||
---
|
||||
|
||||
This post has many tags.
|
||||
@@ -1,5 +1,6 @@
|
||||
---
|
||||
title: "Layout: More Tag"
|
||||
excerpt_separator: <!--more-->
|
||||
categories:
|
||||
- Layout
|
||||
- Uncategorized
|
||||
@@ -11,7 +12,7 @@ tags:
|
||||
|
||||
This content is before the [excerpt separator tag](http://jekyllrb.com/docs/posts/#post-excerpts).
|
||||
|
||||
Right after this sentence there should be a **continue reading** link of some sort in archive-index pages.
|
||||
Additional content before the more tag.
|
||||
|
||||
<!--more-->
|
||||
|
||||
|
||||
@@ -10,7 +10,9 @@ tags:
|
||||
|
||||
You'll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in [many different ways](https://jekyllrb.com/docs/usage/), but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
|
||||
|
||||
To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
|
||||
To add new posts, simply add a file in the `_posts`[^posts] directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
|
||||
|
||||
[^posts]: Footnote test.
|
||||
|
||||
Jekyll also offers powerful support for code snippets:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user