Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix sticky titles - performant version #3572

Closed
wants to merge 12 commits into from
8 changes: 4 additions & 4 deletions core/ui/ViewToolbar/more-tiddler-actions.tid
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ description: {{$:/language/Buttons/More/Hint}}
\define config-title()
$:/config/ViewToolbarButtons/Visibility/$(listItem)$
\end
<$button popup=<<qualify "$:/state/popup/more">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected">
<$button popupTitle={{{ [[$:/state/popup/more/]addsuffix<currentTiddler>] }}} tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass="tc-selected">
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/down-arrow}}
</$list>
Expand All @@ -18,7 +18,7 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$
</span>
</$list>
</$button>
<$reveal state=<<qualify "$:/state/popup/more">> type="popup" position="belowleft" animate="yes">
<$reveal stateTitle={{{ [[$:/state/popup/more/]addsuffix<currentTiddler>] }}} type="popup" position="belowleft" animate="yes">

<div class="tc-drop-down">

Expand All @@ -30,7 +30,7 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$

<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]" variable="listItem">

<$reveal type="match" state=<<config-title>> text="hide">
<$reveal type="match" stateTitle=<<config-title>> text="hide">

<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">

Expand All @@ -50,4 +50,4 @@ $:/config/ViewToolbarButtons/Visibility/$(listItem)$

</div>

</$reveal>
</$reveal>
58 changes: 58 additions & 0 deletions core/wiki/macros/CSS.tid
Original file line number Diff line number Diff line change
Expand Up @@ -74,3 +74,61 @@ column-count: $columns$;
\define if-background-attachment(text)
<$reveal state="$:/themes/tiddlywiki/vanilla/settings/backgroundimage" type="nomatch" text="">$text$</$reveal>
\end

\define create-data-tag()
\rules only
$(classesBefore)$[$(tagName)$$(tagSelector)$"$(escapedTagValue)$"]$(classesAfter)$ {
$(tagStyles)$
}
\end

\define assign-css-to-data-tag(tagName:"data-tiddler-title",tagSelector:"=",tagValue:"",tagStyles:"",classesBefore:"",classesAfter:"")
\whitespace trim
<$vars escapedTagValue={{{ [<__tagValue__>escapecss[]] }}} tagStyles=<<__tagStyles__>> tagName=<<__tagName__>> tagSelector=<<__tagSelector__>> classesBefore=<<__classesBefore__>> classesAfter=<<__classesAfter__>>>
<<create-data-tag>>
</$vars>
\end

\define get-full-zindex-list()
$(zIndexFilter)$ $(tiddlerList)$
\end

\define sticky-z-index()
z-index: $(zIndex)$;
\end

\define sticky-titles()
\whitespace trim
<$reveal state="$:/themes/tiddlywiki/vanilla/options/stickytitles" type="match" text="yes">
``
.tc-tiddler-title {
position: -webkit-sticky;
position: -moz-sticky;
position: -o-sticky;
position: -ms-sticky;
position: sticky;
top: 0px;
background: ``<<colour tiddler-background>>``;
z-index: 500;
}
``
<$set name="morePopupTiddler" value={{{ [all[tiddlers]removeprefix[$:/state/popup/more/]] }}}>
<$macrocall $name="assign-css-to-data-tag" tagValue=<<morePopupTiddler>> tagStyles="z-index: 520;" classesAfter=" .tc-tiddler-title"/>
<$set name="tiddlerList" filter="[list[$:/StoryList]allafter<morePopupTiddler>limit[20]]">
<$list filter="[enlist<tiddlerList>]" variable="zIndexTiddler">
<$set name="zIndexFilter" filter="[range[1,500]addsuffix<zIndexTiddler>]">
<$set name="zIndexList" value=<<get-full-zindex-list>>>
<$set name="tiddlerIndex" value={{{ [list[$:/StoryList]allafter<morePopupTiddler>limit[20]] +[allbefore<zIndexTiddler>] [<morePopupTiddler>] +[count[]] }}}>
<$set name="reversedTiddler" value={{{ [enlist<tiddlerList>reverse[]nth<tiddlerIndex>] }}}>
<$set name="zIndex" value={{{ [enlist<zIndexList>] +[allbefore<reversedTiddler>count[]] }}}>
<$macrocall $name="assign-css-to-data-tag" tagValue=<<zIndexTiddler>> tagStyles=<<sticky-z-index>> classesAfter=" .tc-tiddler-title"/>
</$set>
</$set>
</$set>
</$set>
</$set>
</$list>
</$set>
</$set>
</$reveal>
\end
2 changes: 0 additions & 2 deletions themes/tiddlywiki/vanilla/base.tid
Original file line number Diff line number Diff line change
Expand Up @@ -845,8 +845,6 @@ button.tc-untagged-label {
border: 1px solid <<colour tiddler-border>>;
}

{{$:/themes/tiddlywiki/vanilla/sticky}}

.tc-tiddler-info {
padding: 14px 42px 14px 42px;
background-color: <<colour tiddler-info-background>>;
Expand Down
16 changes: 2 additions & 14 deletions themes/tiddlywiki/vanilla/sticky.tid
Original file line number Diff line number Diff line change
@@ -1,16 +1,4 @@
title: $:/themes/tiddlywiki/vanilla/sticky
tags: $:/tags/Stylesheet

<$reveal state="$:/themes/tiddlywiki/vanilla/options/stickytitles" type="match" text="yes">
``
.tc-tiddler-title {
position: -webkit-sticky;
position: -moz-sticky;
position: -o-sticky;
position: -ms-sticky;
position: sticky;
top: 0px;
background: ``<<colour tiddler-background>>``;
z-index: 500;
}
``
</$reveal>
<<sticky-titles>>