Is it possible to use the <$reveal> widget to animate an accordion slider menu just like in classic?
I really miss the animated part of that feature.
Is it possible to use the <$reveal> widget to animate an accordion slider menu just like in classic?
I really miss the animated part of that feature.
I believe so, only you need to also provide a button to toggle the state.
Although perhaps without animation, you may be able to add it back (I dont know how) after using one of the following;
You can use the html details tag (state set but not saved) or obtain the $details plugin Plugins — Utilities for TiddlyWiki
This is a common request and many solutions abound so search a bit before you choose.
I made a wikitext macro for you that emulate the old TW classic slider macro :

Accordion macro.json (1.3 KB)
Backup your wiki (just in case), then drag and drop it into your tiddlywiki to install it. Let me know if it works ![]()
Thanks. Works just like the original.
I have been playing around with this, and I am wondering if there is a way to assign an open/close class to the button.
I would like to do something like this in the CSS:
.open::after { content: "-" }
.close::after { content: "+" }
I’m asking this out of courisity.
Sure : we can use a filtered transclusion to set the class of the button widget.
\define slider(content:"Content",field:"accordion",label:"More",tooltip:"Show more")
<$let stateTitle={{{ $:/state/[{!!title}][<qualify>]+[join[]] }}}>
@@.slider
<$button class={{{ "toggle" [<stateTitle>get[$field$]] +[join[ ]]}}} tooltip="$tooltip$" actions='<$action-listops $tiddler=<<stateTitle>> $field="$field$" $subfilter="+[toggle[open],[close]]">'>$label$</$button>
<$reveal text="open" default="close" type="match" stateTitle=<<stateTitle>> stateField="$field$" retain="yes" animate="yes" tag="div">
$content$
</$reveal>
@@
</$let>
\end
Here’s the updated version (I also fixed an issue where the slider will not animate on the first click, because it was refreshing the whole node tree) :
SliderMacro.json (1.6 KB)
UPDATE: To keep things more semantic, I made a version using the html details element, as suggested by @TW_Tones. The options are now as follow :
DetailsMacro.json (1.8 KB)
Thanks for sharing @telumire;
Personally I am not always keen on content in a parameter especially if it is multi-line.
So I turned the content into a macro which can be used in a parameter now
content:"<<content2>>"\define content2()
It also works //with ''wikitext''//!
* one
* two
\end
<<details content:"<<content2>>" field:"details2" summary:"And me too!" tooltip:"Click for more info">>
This is because the macro is parsed inline, to fix this issue insert a line break before and after your content, that way it will force the block parsing :
You can also encapsulate the content into a div (but it looks like a line break is still required at the start) :
\define content2()
<div>
It also works //with ''wikitext''//!
* one
* two
</div>
\end
Thanks. Works even better now. Looks like I have a lot to learn about TW5.