✨feat(shortcode): add spoiler shortcode (#113)
parent
3822f00d3e
commit
151063d74b
@ -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.
|
||||
}
|
||||
}
|
||||
}
|
@ -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) -%}
|
||||
|
||||
<label class="spoiler-container{% if fixed_blur %} fixed-blur{% endif %}">
|
||||
<input type="checkbox" id="spoiler-{{random_id}}" class="spoiler-toggle" role="button" aria-pressed="false" />
|
||||
<span class="spoiler-content" title="reveal spoiler" tabindex="0">
|
||||
<span class="spoiler-hidden">{{ text | markdown | trim_start_matches(pat="<p>") | trim_start_matches(pat="</p>") | safe }}</span>
|
||||
</span>
|
||||
</label>
|
Loading…
Reference in New Issue