1+ title: WikiList/edit-tags-template
2+
3+ \import [[$:/core/ui/EditTemplate/tags]]
4+ \define tag-button(classes)
5+ <$let button-classes='tc-btn-invisible $classes$' currentTiddler=<<tag>>>
6+ {{||$:/core/ui/TagPickerTagTemplate}}
7+ </$let>
8+ \end
9+ \define tagsAutoComplete()
10+ <$list filter=<<tagsAutoCompleteFilter>> emptyMessage=<<tagsAutoCompleteEmptyMessage>> variable="listItem">
11+ <$list filter=<<tagsFilter>> variable="tag">
12+ <$list
13+ filter="[<tag>addsuffix<suffix>] -[<tagSelectionState>get[text]]"
14+ emptyMessage=<<tag-button 'tc-tag-button-selected'>>
15+ variable="ignore"
16+ >
17+ <<tag-button>>
18+ </$list>
19+ </$list>
20+ </$list>
21+ \end
22+ \define tag-picker-inner(actions,tagField:"tags")
23+ \whitespace trim
24+ <$let
25+ newTagNameInputTiddlerQualified=<<qualify "$:/temp/NewTagName/input">>
26+ newTagNameSelectionTiddlerQualified=<<qualify "$:/temp/NewTagName/selected-item">>
27+ fallbackTarget={{$(palette)$##tag-background}}
28+ colourA={{$(palette)$##foreground}}
29+ colourB={{$(palette)$##background}}
30+ storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}}
31+ tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}
32+ refreshTitle=<<qualify "$:/temp/NewTagName/refresh">>
33+ nonSystemTagsFilter="[tags[]] $(tagListFilter)$ +[!is[system]] -[<storyTiddler>tags[]] :filter[search:title<userInput>]+[sort[]]"
34+ systemTagsFilter="[tags[]] $(tagListFilter)$ +[is[system]] -[<storyTiddler>tags[]] :filter[search:title<userInput>]+[sort[]]"
35+ displayTagsPopup="[all[tiddlers]subfilter<systemTagsFilter>][all[tiddlers]subfilter<nonSystemTagsFilter>] +[limit[1]]"
36+ >
37+ <div class="tc-edit-add-tag">
38+ <div>
39+ <span class="tc-add-tag-name tc-small-gap-right">
40+ <$macrocall $name="keyboard-driven-input"
41+ tiddler=<<newTagNameTiddler>>
42+ storeTitle=<<storeTitle>>
43+ refreshTitle=<<refreshTitle>>
44+ selectionStateTitle=<<tagSelectionState>>
45+ inputAcceptActions="<$macrocall $name='add-tag-actions'
46+ actions=<<__actions__>>
47+ tagField=<<__tagField__>>/>"
48+ inputCancelActions=<<clear-tags-actions>>
49+ tag="input"
50+ placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}
51+ focusPopup=<<qualify "$:/state/popup/tags-auto-complete">>
52+ class="tc-edit-texteditor tc-popup-handle"
53+ tabindex=<<tabIndex>>
54+ focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}
55+ filterMinLength={{$:/config/Tags/MinLength}}
56+ cancelPopups=<<cancelPopups>>
57+ configTiddlerFilter="[[$:/core/macros/tag-picker]]"
58+ />
59+ </span>
60+ <$button
61+ popup=<<qualify "$:/state/popup/tags-auto-complete">>
62+ class="tc-btn-invisible tc-btn-dropdown"
63+ tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}}
64+ aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}
65+ >
66+ {{$:/core/images/down-arrow}}
67+ </$button>
68+ <$reveal state=<<storeTitle>> type="nomatch" text="">
69+ <$button
70+ class="tc-btn-invisible tc-small-gap tc-btn-dropdown"
71+ tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}}
72+ aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}
73+ actions=<<delete-tag-state-tiddlers>>
74+ >
75+ {{$:/core/images/close-button}}
76+ </$button>
77+ </$reveal>
78+ <span class="tc-add-tag-button tc-small-gap-left">
79+ <$let tag={{{ [<newTagNameTiddler>get[text]] }}} currentTiddlerCSSEscaped={{{ [<saveTiddler>escapecss[]] }}}>
80+ <$button set=<<newTagNameTiddler>> setTo="">
81+ <$action-listops $tiddler=<<saveTiddler>> $field=<<__tagField__>> $subfilter="[<tag>trim[]]"/>
82+ $actions$
83+ <<delete-tag-state-tiddlers>>
84+ <$action-sendmessage $message="tm-focus-selector" $param=<<get-tagpicker-focus-selector>>/>
85+ {{$:/language/EditTemplate/Tags/Add/Button}}
86+ </$button>
87+ </$let>
88+ </span>
89+ </div>
90+ <$reveal
91+ class="tc-block-dropdown tc-block-tags-dropdown tc-block-dropdown-wrapper"
92+ default={{{ [subfilter<displayTagsPopup>then[]else[hide]] }}}
93+ state=<<qualify "$:/state/popup/tags-auto-complete">>
94+ tag={{{ [subfilter<displayTagsPopup>then[div]else[template]] }}}
95+ text=""
96+ type="nomatch"
97+ >
98+ <$let
99+ actions=<<__actions__>>
100+ currentTiddler=<<tag>>
101+ tagField=<<__tagField__>>
102+ userInput={{{ [<storeTitle>get[text]] }}}
103+ tagsAutoCompleteFilter="[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]"
104+ tagsAutoCompleteEmptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>"
105+ >
106+ <$let tagsFilter=<<nonSystemTagsFilter>> suffix="-primaryList"><<tagsAutoComplete>></$let>
107+ <hr>
108+ <$let tagsFilter=<<systemTagsFilter>> suffix="-secondaryList"><<tagsAutoComplete>></$let>
109+ </$let>
110+ </$reveal>
111+ </div>
112+ </$let>
113+ \end
114+
115+ <$let saveTiddler=<<currentTiddler>> tagListFilter="+[all[tiddlers]tag[wikilist]addprefix[$:/TiddlyDesktop/Config/wiki-tags/]tags[]]">
116+ <$macrocall $name="edit-tags-template" tagField=<<tagField>>/>
117+ </$let>
0 commit comments