diff --git a/core/language/en-GB/Buttons.multids b/core/language/en-GB/Buttons.multids index 2fa732fd9a2..06b91864117 100644 --- a/core/language/en-GB/Buttons.multids +++ b/core/language/en-GB/Buttons.multids @@ -187,6 +187,7 @@ Stamp/Caption/New: Add your own Stamp/Hint: Insert a preconfigured snippet of text Stamp/New/Title: Name as shown in menu Stamp/New/Text: Text of snippet. (Remember to add a descriptive title in the caption field). +StoryFilter/Hint: Filter the story river Strikethrough/Caption: strikethrough Strikethrough/Hint: Apply strikethrough formatting to selection Subscript/Caption: subscript diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index 7adf4aa04b1..b98ca4d2c4b 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -175,6 +175,10 @@ Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description: Update addres Settings/PerformanceInstrumentation/Caption: Performance Instrumentation Settings/PerformanceInstrumentation/Hint: Displays performance statistics in the browser developer console. Requires reload to take effect Settings/PerformanceInstrumentation/Description: Enable performance instrumentation +Settings/StoryFilterFields/Caption: Story Filter Fields +Settings/StoryFilterFields/Hint: The fields for the `search` filter of the story river +Settings/StoryFilterFlags/Caption: Story Filter Flags +Settings/StoryFilterFlags/Hint: The flags for the `search` filter of the story river Settings/ToolbarButtonStyle/Caption: Toolbar Button Style Settings/ToolbarButtonStyle/Hint: Choose the style for toolbar buttons: Settings/ToolbarButtonStyle/Styles/Borderless: Borderless diff --git a/core/ui/ControlPanel/Settings/StoryFilterFields.tid b/core/ui/ControlPanel/Settings/StoryFilterFields.tid new file mode 100644 index 00000000000..09838a4a732 --- /dev/null +++ b/core/ui/ControlPanel/Settings/StoryFilterFields.tid @@ -0,0 +1,13 @@ +title: $:/core/ui/ControlPanel/Settings/StoryFilterFields +tags: $:/tags/ControlPanel/Settings +caption: {{$:/language/ControlPanel/Settings/StoryFilterFields/Caption}} + +\whitespace trim +\define lingo-base() $:/language/ControlPanel/Settings/StoryFilterFields/ + +<$link to="$:/config/StoryFilter/fields" class="tc-control-panel-item"> + <> + + +<$edit-text tag="input" tiddler="$:/config/StoryFilter/fields" default=""/>
+ diff --git a/core/ui/ControlPanel/Settings/StoryFilterFlags.tid b/core/ui/ControlPanel/Settings/StoryFilterFlags.tid new file mode 100644 index 00000000000..df90129516a --- /dev/null +++ b/core/ui/ControlPanel/Settings/StoryFilterFlags.tid @@ -0,0 +1,13 @@ +title: $:/core/ui/ControlPanel/Settings/StoryFilterFlags +tags: $:/tags/ControlPanel/Settings +caption: {{$:/language/ControlPanel/Settings/StoryFilterFlags/Caption}} + +\whitespace trim +\define lingo-base() $:/language/ControlPanel/Settings/StoryFilterFlags/ + +<$link to="$:/config/StoryFilter/flags" class="tc-control-panel-item"> + <> + + +<$edit-text tag="input" tiddler="$:/config/StoryFilter/flags" default=""/>
+ diff --git a/core/ui/KeyboardShortcuts/filter-river.tid b/core/ui/KeyboardShortcuts/filter-river.tid new file mode 100644 index 00000000000..d8a20f82187 --- /dev/null +++ b/core/ui/KeyboardShortcuts/filter-river.tid @@ -0,0 +1,9 @@ +title: $:/core/ui/KeyboardShortcuts/filter-river +tags: $:/tags/KeyboardShortcut +key: ((filter-river)) + +<%if [{$:/state/story-river/filter}!match[yes]] %> + <$action-setfield $tiddler="$:/state/story-river/filter" text="yes"/> +<% else %> + <$action-deletetiddler $tiddler="$:/state/story-river/filter"/> +<% endif %> \ No newline at end of file diff --git a/core/ui/PageTemplate/story.tid b/core/ui/PageTemplate/story.tid index 38e7238357e..4ec7aef9f26 100644 --- a/core/ui/PageTemplate/story.tid +++ b/core/ui/PageTemplate/story.tid @@ -14,7 +14,7 @@ tags: $:/tags/PageTemplate -<$list filter="[list[$:/StoryList]]" history="$:/HistoryList" template="$:/core/ui/StoryTiddlerTemplate" storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/> +<$list filter=<> history="$:/HistoryList" template="$:/core/ui/StoryTiddlerTemplate" storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>
diff --git a/core/ui/SideBarSegments/search.tid b/core/ui/SideBarSegments/search.tid index 690210307b7..dd9872a6e37 100644 --- a/core/ui/SideBarSegments/search.tid +++ b/core/ui/SideBarSegments/search.tid @@ -62,6 +62,14 @@ tags: $:/tags/SideBarSegment +<$button tooltip={{$:/language/Buttons/StoryFilter/Hint}} class={{{ [{$:/state/story-river/filter}match[yes]then[tc-selected]] tc-filter-story-btn tc-btn-invisible +[join[ ]] }}}> +<%if [{$:/state/story-river/filter}!match[yes]] %> +<$action-setfield $tiddler="$:/state/story-river/filter" text="yes"/> +<% else %> +<$action-deletetiddler $tiddler="$:/state/story-river/filter"/> +<% endif %> +{{$:/core/images/github}} + <$reveal state=<> type="nomatch" text=""> <$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class="tc-btn-invisible"> <> diff --git a/core/wiki/config/ShortcutInfo.multids b/core/wiki/config/ShortcutInfo.multids index b2c843f35d9..b6a39874aaa 100644 --- a/core/wiki/config/ShortcutInfo.multids +++ b/core/wiki/config/ShortcutInfo.multids @@ -8,6 +8,7 @@ cancel-edit-tiddler: {{$:/language/Buttons/Cancel/Hint}} change-sidebar-layout: {{$:/language/Shortcuts/SidebarLayout/Hint}} delete-field: {{$:/language/EditTemplate/Field/Remove/Hint}} excise: {{$:/language/Buttons/Excise/Hint}} +filter-river: {{$:/language/Buttons/StoryFilter/Hint}} heading-1: {{$:/language/Buttons/Heading1/Hint}} heading-2: {{$:/language/Buttons/Heading2/Hint}} heading-3: {{$:/language/Buttons/Heading3/Hint}} diff --git a/core/wiki/config/StoryFilterFields.tid b/core/wiki/config/StoryFilterFields.tid new file mode 100644 index 00000000000..5a9f56dfe8c --- /dev/null +++ b/core/wiki/config/StoryFilterFields.tid @@ -0,0 +1,3 @@ +title: $:/config/StoryFilter/fields + +* \ No newline at end of file diff --git a/core/wiki/config/StoryFilterFlags.tid b/core/wiki/config/StoryFilterFlags.tid new file mode 100644 index 00000000000..0b66a384ba1 --- /dev/null +++ b/core/wiki/config/StoryFilterFlags.tid @@ -0,0 +1,3 @@ +title: $:/config/StoryFilter/flags + +words \ No newline at end of file diff --git a/core/wiki/config/shortcuts/shortcuts.multids b/core/wiki/config/shortcuts/shortcuts.multids index 470988a9aff..d9b5b39534e 100644 --- a/core/wiki/config/shortcuts/shortcuts.multids +++ b/core/wiki/config/shortcuts/shortcuts.multids @@ -7,7 +7,7 @@ cancel-edit-tiddler: escape change-sidebar-layout: shift-alt-Down delete-field: shift-alt-D excise: ctrl-E -sidebar-search: ctrl-shift-F +filter-river: alt-F heading-1: ctrl-1 heading-2: ctrl-2 heading-3: ctrl-3 @@ -34,6 +34,7 @@ preview: alt-P quote: ctrl-Q save-tiddler: ctrl+enter save-wiki: ctrl-S +sidebar-search: ctrl-shift-F stamp: ctrl-S strikethrough: ctrl-T subscript: ctrl-shift-B diff --git a/core/wiki/functions/search.tid b/core/wiki/functions/search.tid new file mode 100644 index 00000000000..b100e0c04c1 --- /dev/null +++ b/core/wiki/functions/search.tid @@ -0,0 +1,13 @@ +title: $:/core/wiki/functions/search +tags: $:/tags/Global + +\procedure prefix.bracket() [ +\procedure suffix.bracket() ] + +\function tf.story-river.subfilter() [[{$:/state/story-river/filter}]addprefix[$(prefix.bracket)$]substitute[]addsuffix[match]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[yes]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[then!is]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[draft]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[search:]addsuffix{$:/config/StoryFilter/fields}addsuffix[:]addsuffix{$:/config/StoryFilter/flags}addsuffix[{$:/temp/search/input}]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[ ~]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[is]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[draft]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[$(suffix.bracket)$]substitute[]] + +\function tf.story-river.filter() [[list]addprefix[$(prefix.bracket)$]substitute[]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[$:/StoryList]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[ :filter]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[subfilter]addsuffix[else{$:/state/story-river/filter}!match]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[yes]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[then]addsuffix[$(suffix.bracket)$]substitute[]] + +\function tf.story-river.subfilter.match() [[{$:/state/story-river/filter}]addprefix[$(prefix.bracket)$]substitute[]addsuffix[match]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[yes]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[thensearch:]addsuffix{$:/config/StoryFilter/fields}addsuffix[:]addsuffix{$:/config/StoryFilter/flags}addsuffix[{$:/temp/search/input}]addsuffix[$(suffix.bracket)$]substitute[]] + +\function tf.story-river.filter.match() [[list]addprefix[$(prefix.bracket)$]substitute[]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[$:/StoryList]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[ :filter]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[subfilter]addsuffix[else{$:/state/story-river/filter}!match]addsuffix[$(prefix.bracket)$]substitute[]addsuffix[yes]addsuffix[$(suffix.bracket)$]substitute[]addsuffix[then]addsuffix[$(suffix.bracket)$]substitute[]] diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index c13b69f9bd3..0d086c7aaca 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -1275,7 +1275,8 @@ button.tc-btn-invisible.tc-remove-tag-button { } .tc-tiddler-controls button.tc-selected svg, -.tc-page-controls button.tc-selected svg { +.tc-page-controls button.tc-selected svg, +button.tc-filter-story-btn.tc-selected svg { fill: <>; } diff --git a/themes/tiddlywiki/vanilla/filter.tid b/themes/tiddlywiki/vanilla/filter.tid new file mode 100644 index 00000000000..dc63b8cef73 --- /dev/null +++ b/themes/tiddlywiki/vanilla/filter.tid @@ -0,0 +1,35 @@ +title: $:/themes/tiddlywiki/vanilla/filter +tags: $:/tags/Stylesheet + +\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock conditional html + +<%if [{$:/state/story-river/filter}match[yes]] %> + + .tc-story-river { + min-height: 50vh; + background: repeating-linear-gradient( + to right, + <>, + <> 10px, + <> 10px, + <> 20px + ); + } + + <%if [{$:/temp/search/input}!is[blank]] %> + + <$list filter=<> variable="filteredTiddler"> + + <$set name="CSSEscapedTitle" value={{{ [escapecss[]] }}}> + + [data-tiddler-title="<>"].tc-tiddler-frame { + outline: 2px solid <>; + } + + + + + + <% endif %> + +<% endif %>