From 151063d74b955510e3f46fb02a66de42dba77893 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=93scar?= Date: Thu, 24 Aug 2023 14:27:33 +0200 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8feat(shortcode):=20add=20spoiler=20sho?= =?UTF-8?q?rtcode=20(#113)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- content/blog/shortcodes.ca.md | 25 ++++++++++----- content/blog/shortcodes.es.md | 23 +++++++++++--- content/blog/shortcodes.md | 22 ++++++++++--- sass/main.scss | 3 +- sass/parts/_spoiler.scss | 53 +++++++++++++++++++++++++++++++ templates/shortcodes/spoiler.html | 13 ++++++++ 6 files changed, 120 insertions(+), 19 deletions(-) create mode 100644 sass/parts/_spoiler.scss create mode 100644 templates/shortcodes/spoiler.html diff --git a/content/blog/shortcodes.ca.md b/content/blog/shortcodes.ca.md index 6210c14..7a9daa9 100644 --- a/content/blog/shortcodes.ca.md +++ b/content/blog/shortcodes.ca.md @@ -1,7 +1,7 @@ +++ title = "Shortcodes personalitzats" date = 2023-02-19 -updated = 2023-08-11 +updated = 2023-08-24 description = "Aquest tema inclou alguns shortcodes personalitzats útils que pots utilitzar per millorar les teves publicacions. Ja sigui per mostrar imatges que s'adapten als temes clar i fosc, o per donar format a una secció de referències amb un aspecte professional, aquests shortcodes personalitzats t'ajudaran." [taxonomies] @@ -88,7 +88,7 @@ Tots els altres shortcodes d'imatges poden utilizar l'amplada completa assignant {{/* full_width_image(src="img/amsterdam_by_oskerwyld.webp", alt="Fotografia d'un canal a Àmsterdam") */}} ``` -## Cites +## Shortcodes de text ### Cites multillenguatge @@ -102,9 +102,7 @@ Aquest shortcode permet mostrar una cita traduïda i en el llenguatge original: {{/* multilingual_quote(original="Die Logik ist zwar unerschütterlich, aber einem Menschen, der leben will, widersteht sie nicht.", translated="La lògica, encara que inquebrantable, no resisteix a un home que vol viure.", author="Franz Kafka") */}} ``` -## Referències - -### Sagnat invertit +### Referències amb sagnat invertit Aquest shortcode formata una secció de referència amb un sagnat invertit de la següent manera: @@ -134,6 +132,20 @@ Cada una en una nova línia. Es renderitzarà el Markdown (enllaços, cursiva… {%/* end */%} ``` +### Spoiler + +Aquest shortcode amaga el text fins que l'usuari fa clic per revelar-lo. Per exemple: A l'antiga Roma, el *vomitorium* era {{ spoiler(text="l'entrada a través de la qual les multituds entraven i sortien d'un estadi, no un espai especial utilitzat per a vomitar durant els àpats. Sí, [de debó](https://ca.wikipedia.org/wiki/Vomitori).") }} + +Com veus, el Markdown es renderitza. + +Aquest shortcode té l'opció `fixed_blur` per difuminar el text "SPOILER", en lloc de difuminar el contingut real. Per exemple: és {{ spoiler(text="innecessari", fixed_blur=true)}} esperar 24 hores abans de denunciar la desaparició d'una persona. + +#### Ús + +``` +{{/* spoiler(text="text a amagar", fixed_blur=false) */}} +``` + ## Contenidors ### Contenidor ample @@ -161,6 +173,3 @@ El Markdown, per suposat, serà interpretat. {%/* end */%} ``` -""" - -¡Espero que esto sea lo que buscabas! diff --git a/content/blog/shortcodes.es.md b/content/blog/shortcodes.es.md index 5bce387..8ab4ab3 100644 --- a/content/blog/shortcodes.es.md +++ b/content/blog/shortcodes.es.md @@ -1,7 +1,7 @@ +++ title = "Shortcodes personalizados" date = 2023-02-19 -updated = 2023-08-11 +updated = 2023-08-24 description = "Este tema incluye algunos shortcodes personalizados útiles que puedes utilizar para mejorar tus publicaciones. Puedes mostrar imágenes que se adapten a los temas claro y oscuro, dar formato a una sección de referencias con un aspecto profesional, y más." [taxonomies] @@ -89,7 +89,7 @@ Todos los otros shortcodes de imágenes pueden usar el ancho completo asignando {{/* full_width_image(src="img/amsterdam_by_oskerwyld.webp", alt="Fotografía de un canal en Ámsterdam") */}} ``` -## Citas +## Shortcodes de texto ### Citas multilenguaje @@ -103,9 +103,7 @@ Este shortcode permite mostrar una cita traducida y en su lenguaje original: {{/* multilingual_quote(original="Ce qui est terrible, ce n’est pas de souffrir ni de mourir, mais de mourir en vain.", translated="Lo terrible no es sufrir o morir, sino morir en vano.", author="Jean-Paul Sartre") */}} ``` -## Referencias - -### Sangría francesa +### Referencias con sangría francesa Este shortcode formatea una sección de referencias con sangría francesa de la siguiente manera: @@ -135,6 +133,21 @@ Cada una en una línea nueva. Se renderizará Markdown (enlaces, cursivas…). {%/* end */%} ``` +### Spoilers + +Este shortcode permite ocultar texto que se revelará al hacer clic. Por ejemplo: las galletas de la fortuna tiene su origen en {{ spoiler(text="Japón. Sí, [en serio](https://es.wikipedia.org/wiki/Galleta_de_la_suerte#Historia_y_origen).") }} + +Como ves, el Markdown se renderiza. + +Este shortcode tiene la opción `fixed_blur` para difuminar el texto "SPOILER", en lugar de difuminar el contenido real. Por ejemplo: es {{ spoiler(text="innecesario", fixed_blur=true)}} esperar 24 horas antes de denunciar la desaparición de una persona. + + +#### Uso + +``` +{{/* spoiler(text="texto que ocultar", fixed_blur=false) */}} +``` + ## Contenedores ### Contenedor ancho diff --git a/content/blog/shortcodes.md b/content/blog/shortcodes.md index 91cda3c..f26d6b0 100644 --- a/content/blog/shortcodes.md +++ b/content/blog/shortcodes.md @@ -1,7 +1,7 @@ +++ title = "Custom shortcodes" date = 2023-02-19 -updated = 2023-08-11 +updated = 2023-08-24 description = "This theme includes some useful custom shortcodes that you can use to enhance your posts. Whether you want to display images that adapt to light and dark themes, or format a professional-looking reference section, these custom shortcodes have got you covered." [taxonomies] @@ -88,7 +88,7 @@ All other image shortcodes can be made into full-width by setting the optional p {{/* full_width_image(src="img/amsterdam_by_oskerwyld.webp", alt="Photograph of a canal in Amsterdam") */}} ``` -## Quotes +## Text shortcodes ### Multilingual quotes @@ -102,9 +102,7 @@ This shortcode allows you to display both the translated and original text for a {{/* multilingual_quote(original="Qué sosiego, ir por la vida en silencio, saludando sólo a los amigos.", translated="What tranquility, to go through life in silence, greeting only friends.", author="Francisco Umbral") */}} ``` -## References - -### Hanging indent +### References with hanging indent This shortcode formats a reference section with a hanging indent like so: @@ -134,6 +132,20 @@ Each in a new line. Markdown (links, italics…) will be rendered. {%/* end */%} ``` +### Spoiler + +This shortcode allows you to blur text until the user clicks on it. Like this: Goldfish have a memory span of a few {{ spoiler(text="months. Yes, [really](https://en.wikipedia.org/wiki/Goldfish#Cognitive_abilities).") }} + +As you can see, Markdown is rendered. You can even add newlines with `
`. + +This shortcode has the optional flag `fixed_blur` to blur a fixed placeholder ("SPOILER"), instead of blurring the actual contents. Like this: it is {{ spoiler(text="not necessary", fixed_blur=true)}} to wait 24 hours before filing a missing person report. + +#### Usage + +``` +{{/* spoiler(text="text to hide", fixed_blur=false) */}} +``` + ## Containers ### Wide container diff --git a/sass/main.scss b/sass/main.scss index 48ea751..8e8f29c 100644 --- a/sass/main.scss +++ b/sass/main.scss @@ -6,13 +6,14 @@ @use 'parts/_header-anchor.scss'; @use 'parts/_header.scss'; @use 'parts/_home-banner.scss'; -@use 'parts/_image-toggler.scss'; @use 'parts/_image-hover.scss'; +@use 'parts/_image-toggler.scss'; @use 'parts/_image.scss'; @use 'parts/_misc.scss'; @use 'parts/_multilingual_quote.scss'; @use 'parts/_pagination.scss'; @use 'parts/_posts_list.scss'; +@use 'parts/_spoiler.scss'; @use 'parts/_table.scss'; @use 'parts/_tags.scss'; @use 'parts/_theme-switch.scss'; diff --git a/sass/parts/_spoiler.scss b/sass/parts/_spoiler.scss new file mode 100644 index 0000000..c914243 --- /dev/null +++ b/sass/parts/_spoiler.scss @@ -0,0 +1,53 @@ +.spoiler-toggle { + display: none; // Hide the checkbox. +} + +.spoiler-content { + cursor: help; // Indicate interactive element. + display: inline-block; // Allow content to only take up its own width. + + .spoiler-hidden { + filter: blur(6px); + user-select: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + + a { + pointer-events: none; // Make links unclickable. + } + } +} + +.spoiler-toggle:checked + .spoiler-content { + .spoiler-hidden { + filter: none; + user-select: auto; + + a { + pointer-events: auto; // Enable clicking on links when revealed. + } + } +} + +.spoiler-container.fixed-blur { + .spoiler-content:before { + content: 'SPOILER'; // Display the word "SPOILER". + filter: blur(6px); + display: inline-block; // Block display within the inline flow. + } + + .spoiler-content .spoiler-hidden { + display: none; // Completely hide the actual content. + } + + .spoiler-toggle:checked + .spoiler-content { + &:before { + content: none; // Hide the word "SPOILER". + } + + .spoiler-hidden { + display: inline; // Reveal the actual content. + } + } +} diff --git a/templates/shortcodes/spoiler.html b/templates/shortcodes/spoiler.html new file mode 100644 index 0000000..ff9e695 --- /dev/null +++ b/templates/shortcodes/spoiler.html @@ -0,0 +1,13 @@ +{# The `random_id` ensures that each instance of the shortcode has a "unique" id #} +{# allowing individual interactive elements (like toggles) to function correctly. #} +{# This avoids conflicts when multiple instances of the shortcode are used. #} +{# More context: https://github.com/welpo/tabi/issues/82 #} +{%- set random_id = get_random(end=100000) -%} +{%- set fixed_blur = fixed_blur | default(value=false) -%} + +