mirror of
https://github.com/Jermolene/TiddlyWiki5
synced 2025-02-04 05:09:10 +00:00
Merge branch 'master' into multi-wiki-support
This commit is contained in:
commit
51cdca6841
@ -202,7 +202,7 @@ Extended filter operators to manipulate the current list.
|
|||||||
}
|
}
|
||||||
if(resultsIndex !== -1) {
|
if(resultsIndex !== -1) {
|
||||||
i = i + step;
|
i = i + step;
|
||||||
nextOperandIndex = (i < opLength ? i : i - opLength);
|
nextOperandIndex = (i < opLength ? i : i % opLength);
|
||||||
if(operands.length > 1) {
|
if(operands.length > 1) {
|
||||||
results.splice(resultsIndex,1,operands[nextOperandIndex]);
|
results.splice(resultsIndex,1,operands[nextOperandIndex]);
|
||||||
} else {
|
} else {
|
||||||
|
@ -81,6 +81,8 @@ exports.startup = function() {
|
|||||||
deferredChanges = Object.create(null);
|
deferredChanges = Object.create(null);
|
||||||
$tw.hooks.invokeHook("th-page-refreshed");
|
$tw.hooks.invokeHook("th-page-refreshed");
|
||||||
}
|
}
|
||||||
|
var throttledRefresh = $tw.perf.report("throttledRefresh",refresh);
|
||||||
|
|
||||||
// Add the change event handler
|
// Add the change event handler
|
||||||
$tw.wiki.addEventListener("change",$tw.perf.report("mainRefresh",function(changes) {
|
$tw.wiki.addEventListener("change",$tw.perf.report("mainRefresh",function(changes) {
|
||||||
// Check if only tiddlers that are throttled have changed
|
// Check if only tiddlers that are throttled have changed
|
||||||
@ -101,7 +103,7 @@ exports.startup = function() {
|
|||||||
if(isNaN(timeout)) {
|
if(isNaN(timeout)) {
|
||||||
timeout = THROTTLE_REFRESH_TIMEOUT;
|
timeout = THROTTLE_REFRESH_TIMEOUT;
|
||||||
}
|
}
|
||||||
timerId = setTimeout(refresh,timeout);
|
timerId = setTimeout(throttledRefresh,timeout);
|
||||||
$tw.utils.extend(deferredChanges,changes);
|
$tw.utils.extend(deferredChanges,changes);
|
||||||
} else {
|
} else {
|
||||||
$tw.utils.extend(deferredChanges,changes);
|
$tw.utils.extend(deferredChanges,changes);
|
||||||
|
@ -56,7 +56,7 @@ exports.startup = function() {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Initialise the document
|
// Initialise the document
|
||||||
srcDocument.write("<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>");
|
srcDocument.write("<!DOCTYPE html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>");
|
||||||
srcDocument.close();
|
srcDocument.close();
|
||||||
srcDocument.title = windowTitle;
|
srcDocument.title = windowTitle;
|
||||||
srcWindow.addEventListener("beforeunload",function(event) {
|
srcWindow.addEventListener("beforeunload",function(event) {
|
||||||
|
5
core/ui/KeyboardShortcuts/refresh.tid
Normal file
5
core/ui/KeyboardShortcuts/refresh.tid
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
title: $:/core/ui/KeyboardShortcuts/refresh
|
||||||
|
tags: $:/tags/KeyboardShortcut
|
||||||
|
key: ((refresh))
|
||||||
|
|
||||||
|
<$action-sendmessage $message="tm-browser-refresh"/>
|
@ -1,16 +1,14 @@
|
|||||||
title: $:/core/ui/PageTemplate/pagecontrols
|
title: $:/core/ui/PageTemplate/pagecontrols
|
||||||
|
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
\define config-title() $:/config/PageControlButtons/Visibility/$(listItem)$
|
\function config-title() [[$:/config/PageControlButtons/Visibility/$(listItem)$]substitute[]]
|
||||||
|
|
||||||
<div class="tc-page-controls">
|
<div class="tc-page-controls">
|
||||||
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">
|
<$list filter="[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]" variable="listItem">
|
||||||
<$set name="hidden" value=<<config-title>>>
|
<$list filter="[<config-title>!text[hide]]" storyview="pop" variable="ignore">
|
||||||
<$list filter="[<hidden>!text[hide]]" storyview="pop" variable="ignore">
|
<$let tv-config-toolbar-class={{{ [enlist<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]] +[join[ ]] }}}>
|
||||||
<$set name="tv-config-toolbar-class" filter="[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]">
|
<$transclude $tiddler=<<listItem>> $mode="inline"/>
|
||||||
<$transclude tiddler=<<listItem>> mode="inline"/>
|
</$let>
|
||||||
</$set>
|
</$list>
|
||||||
</$list>
|
|
||||||
</$set>
|
|
||||||
</$list>
|
</$list>
|
||||||
</div>
|
</div>
|
@ -35,6 +35,7 @@ new-tiddler: {{$:/language/Buttons/NewTiddler/Hint}}
|
|||||||
picture: {{$:/language/Buttons/Picture/Hint}}
|
picture: {{$:/language/Buttons/Picture/Hint}}
|
||||||
preview: {{$:/language/Buttons/Preview/Hint}}
|
preview: {{$:/language/Buttons/Preview/Hint}}
|
||||||
quote: {{$:/language/Buttons/Quote/Hint}}
|
quote: {{$:/language/Buttons/Quote/Hint}}
|
||||||
|
refresh: {{$:/language/Buttons/Refresh/Hint}}
|
||||||
save-tiddler: {{$:/language/Buttons/Save/Hint}}
|
save-tiddler: {{$:/language/Buttons/Save/Hint}}
|
||||||
save-wiki: {{$:/language/Buttons/SaveWiki/Hint}}
|
save-wiki: {{$:/language/Buttons/SaveWiki/Hint}}
|
||||||
sidebar-search: {{$:/language/Buttons/SidebarSearch/Hint}}
|
sidebar-search: {{$:/language/Buttons/SidebarSearch/Hint}}
|
||||||
|
@ -6,4 +6,5 @@ underline: meta-U
|
|||||||
new-image: ctrl-I
|
new-image: ctrl-I
|
||||||
new-journal: ctrl-J
|
new-journal: ctrl-J
|
||||||
new-tiddler: ctrl-N
|
new-tiddler: ctrl-N
|
||||||
|
refresh: meta-R
|
||||||
save-wiki: meta-S
|
save-wiki: meta-S
|
||||||
|
@ -6,3 +6,4 @@ underline: ctrl-U
|
|||||||
new-image: alt-I
|
new-image: alt-I
|
||||||
new-journal: alt-J
|
new-journal: alt-J
|
||||||
new-tiddler: alt-N
|
new-tiddler: alt-N
|
||||||
|
refresh: ctrl-R
|
||||||
|
@ -1,167 +1,182 @@
|
|||||||
title: $:/core/macros/tag-picker
|
title: $:/core/macros/tag-picker
|
||||||
tags: $:/tags/Macro $:/tags/Global
|
tags: tags: $:/tags/Macro $:/tags/Global
|
||||||
first-search-filter: [tags[]!is[system]search:title<userInput>sort[]]
|
first-search-filter: [subfilter<tagListFilter>!is[system]search:title<userInput>sort[]]
|
||||||
second-search-filter: [tags[]is[system]search:title<userInput>sort[]]
|
second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>sort[]]
|
||||||
|
|
||||||
\procedure get-tagpicker-focus-selector()
|
<!-- first-search-filter and second-search-filter fields are not used here in the code, but they are defined as parameters for keyboard-driven-input macro -->
|
||||||
\function currentTiddlerCSSEscaped() [<saveTiddler>escapecss[]]
|
|
||||||
[data-tiddler-title=`$(currentTiddlerCSSEscaped)$`] .tc-add-tag-name input
|
\whitespace trim
|
||||||
|
|
||||||
|
<!-- tf.tagpicker-dropdown-id is needed if several tap-pickers are shown in one tiddler -->
|
||||||
|
\function tf.tagpicker-dropdown-id()
|
||||||
|
[<qualify $:/state/popup/tags-auto-complete>]
|
||||||
|
[[$(saveTiddler)$-[$(tagField)$-$(tagListFilter)$]substitute[]sha256[]] +[join[/]]
|
||||||
\end
|
\end
|
||||||
|
|
||||||
\procedure delete-tag-state-tiddlers() <$action-deletetiddler $filter="[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]"/>
|
\function tf.tagpicker-dropdown-class() [<tf.tagpicker-dropdown-id>sha256[]addprefix[tc-]]
|
||||||
|
\function tf.get-tagpicker-focus-selector() [<tf.tagpicker-dropdown-class>addprefix[.]] .tc-popup-handle +[join[ ]]
|
||||||
|
|
||||||
|
<!-- clean up temporary tiddlers, so the next "pick" starts with a clean input -->
|
||||||
|
<!-- This could probably be optimized / removed if we would use different temp-tiddlers
|
||||||
|
(future improvement because keeping track is comlex for humans)
|
||||||
|
-->
|
||||||
|
\procedure delete-tag-state-tiddlers()
|
||||||
|
<$action-deletetiddler $filter="[<newTagNameTiddler>] [<storeTitle>] [<tagSelectionState>]"/>
|
||||||
|
\end
|
||||||
|
|
||||||
|
<!-- trigger __toggle tag__ by keyboard -->
|
||||||
\procedure add-tag-actions()
|
\procedure add-tag-actions()
|
||||||
\whitespace trim
|
<$let tag=<<_tf.getTag>> >
|
||||||
<$let tag=<<tag>>>
|
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter='+[toggle<tag>trim[]]'/>
|
||||||
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter='+[toggle<tag>trim[]]'/>
|
<% if [<tag>] :intersection[<saveTiddler>get<tagField>enlist-input[]] %>
|
||||||
<$list
|
<!-- tag has been removed - do nothing -->
|
||||||
filter="[<tag>] :intersection[<saveTiddler>get<tagField>enlist-input[]]"
|
<% else %>
|
||||||
variable="ignore"
|
<<actions>>
|
||||||
emptyMessage="<<actions>>"
|
<% endif %>
|
||||||
/>
|
|
||||||
</$let>
|
|
||||||
<<delete-tag-state-tiddlers>>
|
|
||||||
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
|
|
||||||
\end
|
|
||||||
|
|
||||||
\procedure clear-tags-actions-inner()
|
|
||||||
\whitespace trim
|
|
||||||
<$list
|
|
||||||
filter="[<storeTitle>has[text]] ~[<newTagNameTiddler>has[text]]"
|
|
||||||
variable="ignore"
|
|
||||||
emptyMessage="<<cancel-delete-tiddler-actions 'cancel'>>"
|
|
||||||
>
|
|
||||||
<<delete-tag-state-tiddlers>>
|
<<delete-tag-state-tiddlers>>
|
||||||
</$list>
|
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
|
||||||
|
</$let>
|
||||||
|
\end
|
||||||
|
<!-- <$action-log /> -->
|
||||||
|
|
||||||
|
<!-- ESC key removes the text from the input
|
||||||
|
The second ESC tries to close the "draft tiddler"
|
||||||
|
-->
|
||||||
|
\procedure clear-tags-actions-inner()
|
||||||
|
<% if [<storeTitle>has[text]] ~[<newTagNameTiddler>has[text]] %>
|
||||||
|
<<delete-tag-state-tiddlers>>
|
||||||
|
<% else %>
|
||||||
|
<<cancel-delete-tiddler-actions "cancel">>
|
||||||
|
<% endif %>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
|
<!-- triggered by keyboard only -->
|
||||||
\procedure clear-tags-actions()
|
\procedure clear-tags-actions()
|
||||||
\whitespace trim
|
<$let userInput=<<_tf.getUserInput>> >
|
||||||
<$let userInput=<<userInput>>>
|
<!-- this list __cannot__ be transformed to conditional IF. The list variable is used! -->
|
||||||
<$list
|
<$list filter="[<newTagNameTiddler>get[text]!match<userInput>]" >
|
||||||
filter="[<newTagNameTiddler>get[text]!match<userInput>]"
|
<$list-empty>
|
||||||
emptyMessage="<<clear-tags-actions-inner>>"
|
<<clear-tags-actions-inner>>
|
||||||
>
|
</$list-empty>
|
||||||
<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/>
|
<$action-setfield $tiddler=<<newTagNameTiddler>> text=<<userInput>>/>
|
||||||
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
|
<$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
|
||||||
</$list>
|
</$list>
|
||||||
</$let>
|
</$let>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
|
<!-- similar to add-tag-actions __but__ add-only -->
|
||||||
\procedure add-button-actions()
|
\procedure add-button-actions()
|
||||||
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter="[<tag>trim[]]"/>
|
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter="[<tag>trim[]]"/>
|
||||||
<<actions>>
|
<<actions>>
|
||||||
<<delete-tag-state-tiddlers>>
|
<<delete-tag-state-tiddlers>>
|
||||||
<$action-sendmessage $message="tm-focus-selector" $param=<<get-tagpicker-focus-selector>>/>
|
<$action-sendmessage $message="tm-focus-selector" $param=<<tf.get-tagpicker-focus-selector>>/>
|
||||||
\end
|
\end
|
||||||
|
<!-- <$action-log /> -->
|
||||||
|
|
||||||
\procedure list-tags(filter, suffix)
|
<!-- create dropdown list -->
|
||||||
\whitespace trim
|
\procedure tag-picker-listTags(filter, suffix)
|
||||||
<$list
|
<$let userInput=<<_tf.getUserInput>> >
|
||||||
filter="[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]"
|
<$list filter="[<userInput>minlength{$:/config/Tags/MinLength}limit[1]]"
|
||||||
emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem"
|
emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem"
|
||||||
>
|
>
|
||||||
<$list filter=<<filter>> variable="tag">
|
<$list filter=<<filter>> variable="tag">
|
||||||
<$let
|
<!-- The buttonClasses filter is used to define tc-tag-button-selected state -->
|
||||||
button-classes=`tc-btn-invisible ${ [<tag>addsuffix<suffix>] -[<tagSelectionState>get[text]] :then[[]] ~tc-tag-button-selected }$`
|
<!-- tf.get-tagpicker-focus-selector has to be resolved for $:/core/ui/TagPickerTagTemplate,
|
||||||
currentTiddler=<<tag>>
|
othwerwise qualify in tf.tagpicker-dropdown-id causes problems -->
|
||||||
>
|
<$let currentTiddler=<<tag>>
|
||||||
{{||$:/core/ui/TagPickerTagTemplate}}
|
button-classes=`tc-btn-invisible ${[<tag>addsuffix<suffix>] -[<tagSelectionState>get[text]] :then[[]] ~tc-tag-button-selected }$`
|
||||||
</$let>
|
get-tagpicker-focus-selector=`${[<tf.get-tagpicker-focus-selector>]}$`
|
||||||
|
>
|
||||||
|
{{||$:/core/ui/TagPickerTagTemplate}}
|
||||||
|
</$let>
|
||||||
|
</$list>
|
||||||
</$list>
|
</$list>
|
||||||
</$list>
|
</$let>
|
||||||
\end
|
\end
|
||||||
|
|
||||||
|
<!-- tag-picker-inner is the main function -->
|
||||||
\procedure tag-picker-inner()
|
\procedure tag-picker-inner()
|
||||||
\whitespace trim
|
<div class={{{ [[tc-edit-add-tag]] [<tf.tagpicker-dropdown-class>] +[join[ ]] }}}>
|
||||||
|
<div class="tc-edit-add-tag-ui">
|
||||||
|
<span class="tc-add-tag-name tc-small-gap-right">
|
||||||
|
<$macrocall $name="keyboard-driven-input"
|
||||||
|
tiddler=<<newTagNameTiddler>>
|
||||||
|
storeTitle=<<storeTitle>>
|
||||||
|
refreshTitle=<<refreshTitle>>
|
||||||
|
selectionStateTitle=<<tagSelectionState>>
|
||||||
|
inputAcceptActions=<<add-tag-actions>>
|
||||||
|
inputCancelActions=<<clear-tags-actions>>
|
||||||
|
tag="input"
|
||||||
|
placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}
|
||||||
|
focusPopup=<<tf.tagpicker-dropdown-id>>
|
||||||
|
class="tc-edit-texteditor tc-popup-handle"
|
||||||
|
tabindex=<<tabIndex>>
|
||||||
|
focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}
|
||||||
|
filterMinLength={{$:/config/Tags/MinLength}}
|
||||||
|
cancelPopups=<<cancelPopups>>
|
||||||
|
configTiddlerFilter="[[$:/core/macros/tag-picker]]"
|
||||||
|
/>
|
||||||
|
</span>
|
||||||
|
<$button popup=<<tf.tagpicker-dropdown-id>> class="tc-btn-invisible tc-btn-dropdown"
|
||||||
|
tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}
|
||||||
|
>
|
||||||
|
{{$:/core/images/down-arrow}}
|
||||||
|
</$button>
|
||||||
|
<% if [<storeTitle>has[text]] %>
|
||||||
|
<$button actions=<<delete-tag-state-tiddlers>> class="tc-btn-invisible tc-small-gap tc-btn-dropdown"
|
||||||
|
tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}} aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}
|
||||||
|
>
|
||||||
|
{{$:/core/images/close-button}}
|
||||||
|
</$button>
|
||||||
|
<% endif %>
|
||||||
|
<span class="tc-add-tag-button tc-small-gap-left">
|
||||||
|
<$let tag=<<_tf.getTag>>>
|
||||||
|
<$button set=<<newTagNameTiddler>> actions=<<add-button-actions>> >
|
||||||
|
{{$:/language/EditTemplate/Tags/Add/Button}}
|
||||||
|
</$button>
|
||||||
|
</$let>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
<div class="tc-block-dropdown-wrapper">
|
||||||
|
<% if [<tf.tagpicker-dropdown-id>has[text]] %>
|
||||||
|
<div class="tc-block-dropdown tc-block-tags-dropdown">
|
||||||
|
<$macrocall $name="tag-picker-listTags" filter=<<nonSystemTagsFilter>> suffix="-primaryList" />
|
||||||
|
<hr>
|
||||||
|
<$macrocall $name="tag-picker-listTags" filter=<<systemTagsFilter>> suffix="-secondaryList" />
|
||||||
|
</div>
|
||||||
|
<% endif %>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
\end
|
||||||
|
|
||||||
|
<!-- prepare all variables for tag-picker keyboard handling -->
|
||||||
|
\procedure tag-picker(actions, tagField:"tags", tiddler, tagListFilter:"[tags[]]")
|
||||||
|
|
||||||
|
\function _tf.getUserInput() [<storeTitle>get[text]]
|
||||||
|
\function _tf.getTag() [<newTagNameTiddler>get[text]]
|
||||||
|
|
||||||
|
<!-- keep those variables because they may "blead" into macros using old syntax -->
|
||||||
<$let
|
<$let
|
||||||
newTagNameInputTiddlerQualified=<<qualify "$:/temp/NewTagName/input">>
|
palette={{$:/palette}}
|
||||||
newTagNameSelectionTiddlerQualified=<<qualify "$:/temp/NewTagName/selected-item">>
|
|
||||||
fallbackTarget={{{ [<palette>getindex[tag-background]] }}}
|
|
||||||
colourA={{{ [<palette>getindex[foreground]] }}}
|
colourA={{{ [<palette>getindex[foreground]] }}}
|
||||||
colourB={{{ [<palette>getindex[background]] }}}
|
colourB={{{ [<palette>getindex[background]] }}}
|
||||||
|
fallbackTarget={{{ [<palette>getindex[tag-background]] }}}
|
||||||
|
|
||||||
storeTitle={{{ [<newTagNameInputTiddler>!match[]] ~[<newTagNameInputTiddlerQualified>] }}}
|
saveTiddler={{{ [<tiddler>is[blank]then<currentTiddler>else<tiddler>] }}}
|
||||||
|
|
||||||
|
newTagNameTiddler={{{ [[$:/temp/NewTagName]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]] }}}
|
||||||
|
storeTitle={{{ [[$:/temp/NewTagName/input]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]] }}}
|
||||||
|
|
||||||
|
newTagNameSelectionTiddlerQualified=<<qualify "$:/temp/NewTagName/selected-item">>
|
||||||
tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}
|
tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}}
|
||||||
tagAutoComplete=<<qualify "$:/state/popup/tags-auto-complete">>
|
|
||||||
|
|
||||||
refreshTitle=<<qualify "$:/temp/NewTagName/refresh">>
|
refreshTitle=<<qualify "$:/temp/NewTagName/refresh">>
|
||||||
nonSystemTagsFilter="[tags[]!is[system]search:title<userInput>sort[]]"
|
|
||||||
systemTagsFilter="[tags[]is[system]search:title<userInput>sort[]]"
|
|
||||||
>
|
|
||||||
<div class="tc-edit-add-tag">
|
|
||||||
<div>
|
|
||||||
<span class="tc-add-tag-name tc-small-gap-right">
|
|
||||||
<$transclude
|
|
||||||
$variable="keyboard-driven-input"
|
|
||||||
tiddler=<<newTagNameTiddler>>
|
|
||||||
storeTitle=<<storeTitle>>
|
|
||||||
refreshTitle=<<refreshTitle>>
|
|
||||||
selectionStateTitle=<<tagSelectionState>>
|
|
||||||
inputAcceptActions=<<add-tag-actions>>
|
|
||||||
inputCancelActions=<<clear-tags-actions>>
|
|
||||||
tag="input"
|
|
||||||
placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}}
|
|
||||||
focusPopup=<<tagAutoComplete>>
|
|
||||||
class="tc-edit-texteditor tc-popup-handle"
|
|
||||||
tabindex=<<tabIndex>>
|
|
||||||
focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}
|
|
||||||
filterMinLength={{$:/config/Tags/MinLength}}
|
|
||||||
cancelPopups=<<cancelPopups>>
|
|
||||||
configTiddlerFilter="[[$:/core/macros/tag-picker]]"
|
|
||||||
/>
|
|
||||||
</span>
|
|
||||||
<$button popup=<<tagAutoComplete>>
|
|
||||||
class="tc-btn-invisible tc-btn-dropdown"
|
|
||||||
tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}}
|
|
||||||
aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}
|
|
||||||
>
|
|
||||||
{{$:/core/images/down-arrow}}
|
|
||||||
</$button>
|
|
||||||
<$reveal state=<<storeTitle>> type="nomatch" text="">
|
|
||||||
<$button actions=<<delete-tag-state-tiddlers>>
|
|
||||||
class="tc-btn-invisible tc-small-gap tc-btn-dropdown"
|
|
||||||
tooltip={{$:/language/EditTemplate/Tags/ClearInput/Hint}}
|
|
||||||
aria-label={{$:/language/EditTemplate/Tags/ClearInput/Caption}}
|
|
||||||
>
|
|
||||||
{{$:/core/images/close-button}}
|
|
||||||
</$button>
|
|
||||||
</$reveal>
|
|
||||||
<span class="tc-add-tag-button tc-small-gap-left">
|
|
||||||
<$let tag=<<tag>>>
|
|
||||||
<$button set=<<newTagNameTiddler>> setTo=""
|
|
||||||
actions=<<add-button-actions>>
|
|
||||||
>
|
|
||||||
{{$:/language/EditTemplate/Tags/Add/Button}}
|
|
||||||
</$button>
|
|
||||||
</$let>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
<div class="tc-block-dropdown-wrapper">
|
|
||||||
<$reveal state=<<tagAutoComplete>> type="nomatch" text="">
|
|
||||||
<div class="tc-block-dropdown tc-block-tags-dropdown">
|
|
||||||
<$let userInput=<<userInput>>>
|
|
||||||
<$transclude $variable="list-tags" filter=<<nonSystemTagsFilter>> suffix="-primaryList" />
|
|
||||||
<hr>
|
|
||||||
<$transclude $variable="list-tags" filter=<<systemTagsFilter>> suffix="-secondaryList" />
|
|
||||||
</$let>
|
|
||||||
</div>
|
|
||||||
</$reveal>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</$let>
|
|
||||||
\end
|
|
||||||
|
|
||||||
\procedure tag-picker(actions, tagField:"tags")
|
nonSystemTagsFilter="[subfilter<tagListFilter>!is[system]search:title<userInput>sort[]]"
|
||||||
\function userInput() [<storeTitle>get[text]]
|
systemTagsFilter="[subfilter<tagListFilter>is[system]search:title<userInput>sort[]]"
|
||||||
\function tag() [<newTagNameTiddler>get[text]]
|
|
||||||
\whitespace trim
|
cancelPopups="yes"
|
||||||
<$let
|
|
||||||
saveTiddler=<<currentTiddler>>
|
|
||||||
palette={{$:/palette}}
|
|
||||||
qualified=<<qualify "$:/temp/NewTagName">>
|
|
||||||
newTagNameTiddler={{{ [<newTagNameTiddler>!match[]] ~[<qualified>] }}}
|
|
||||||
>
|
>
|
||||||
<$transclude $variable="tag-picker-inner" />
|
<$macrocall $name="tag-picker-inner"/>
|
||||||
</$let>
|
</$let>
|
||||||
\end
|
\end
|
@ -21,7 +21,9 @@ color:$(foregroundColor)$;
|
|||||||
>
|
>
|
||||||
<<__actions__>>
|
<<__actions__>>
|
||||||
<$transclude tiddler=<<__icon__>>/>
|
<$transclude tiddler=<<__icon__>>/>
|
||||||
<$view tiddler=<<__tag__>> field="title" format="text" />
|
<span class={{{ [<__tag__>is[missing]then[tc-tag-missing]else[tc-tag-exists]] }}}>
|
||||||
|
<$view tiddler=<<__tag__>> field="title" format="text" />
|
||||||
|
</span>
|
||||||
</$element-tag$>
|
</$element-tag$>
|
||||||
</$let>
|
</$let>
|
||||||
\end
|
\end
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
title: Macros/unusedtitle/basic-draft-exists
|
||||||
|
description: test <<unusedtitle>> with basic macro parameters but they are empty
|
||||||
|
type: text/vnd.tiddlywiki-multiple
|
||||||
|
tags: [[$:/tags/wiki-test-spec]]
|
||||||
|
|
||||||
|
title: Draft of 'test'
|
||||||
|
draft.of: test
|
||||||
|
draft.title: test
|
||||||
|
|
||||||
|
+
|
||||||
|
title: Draft of 'asdf 0'
|
||||||
|
draft.of: asdf 0
|
||||||
|
draft.title: asdf 0
|
||||||
|
|
||||||
|
+
|
||||||
|
title: Output
|
||||||
|
|
||||||
|
<!-- hanled in wiki.js -->
|
||||||
|
<<unusedtitle baseName:"test">>
|
||||||
|
|
||||||
|
<!-- handled in unusedtitle.js -->
|
||||||
|
<<unusedtitle baseName:"asdf" separator:" " template:"$basename$$separator$$count:1$">>
|
||||||
|
|
||||||
|
+
|
||||||
|
title: ExpectedResult
|
||||||
|
|
||||||
|
<p>test 1</p><p>asdf 1</p>
|
@ -0,0 +1,23 @@
|
|||||||
|
title: Macros/unusedtitle/basic-params-empty-tiddler-exists
|
||||||
|
description: test <<unusedtitle>> with basic macro parameters but they are empty
|
||||||
|
type: text/vnd.tiddlywiki-multiple
|
||||||
|
tags: [[$:/tags/wiki-test-spec]]
|
||||||
|
|
||||||
|
title: New Tiddler
|
||||||
|
|
||||||
|
+
|
||||||
|
title: Output
|
||||||
|
|
||||||
|
<!-- hanled in wiki.js -->
|
||||||
|
<<unusedtitle separator:"">>
|
||||||
|
|
||||||
|
<!-- handled in unusedtitle.js -->
|
||||||
|
<<unusedtitle baseName:"">>
|
||||||
|
|
||||||
|
<!-- handled in wiki.js -->
|
||||||
|
<<unusedtitle template:"">>
|
||||||
|
|
||||||
|
+
|
||||||
|
title: ExpectedResult
|
||||||
|
|
||||||
|
<p>New Tiddler 1</p><p>New Tiddler 1</p><p>New Tiddler 1</p>
|
@ -0,0 +1,20 @@
|
|||||||
|
title: Macros/unusedtitle/basic-params-empty
|
||||||
|
description: test <<unusedtitle>> with basic macro parameters but they are empty
|
||||||
|
type: text/vnd.tiddlywiki-multiple
|
||||||
|
tags: [[$:/tags/wiki-test-spec]]
|
||||||
|
|
||||||
|
title: Output
|
||||||
|
|
||||||
|
<!-- hanled in wiki.js -->
|
||||||
|
<<unusedtitle separator:"">>
|
||||||
|
|
||||||
|
<!-- handled in unusedtitle.js -->
|
||||||
|
<<unusedtitle baseName:"">>
|
||||||
|
|
||||||
|
<!-- handled in wiki.js -->
|
||||||
|
<<unusedtitle template:"">>
|
||||||
|
|
||||||
|
+
|
||||||
|
title: ExpectedResult
|
||||||
|
|
||||||
|
<p>New Tiddler</p><p>New Tiddler</p><p>New Tiddler</p>
|
@ -0,0 +1,28 @@
|
|||||||
|
title: Macros/unusedtitle/basic-params-tiddlers-exist
|
||||||
|
description: test <<unusedtitle>> with basic macro parameters, where new-name tiddlers already exist
|
||||||
|
type: text/vnd.tiddlywiki-multiple
|
||||||
|
tags: [[$:/tags/wiki-test-spec]]
|
||||||
|
|
||||||
|
title: New Tiddler
|
||||||
|
|
||||||
|
+
|
||||||
|
title: anotherBase
|
||||||
|
|
||||||
|
+
|
||||||
|
title: About
|
||||||
|
|
||||||
|
+
|
||||||
|
title: Output
|
||||||
|
|
||||||
|
<<unusedtitle>>
|
||||||
|
|
||||||
|
<<unusedtitle separator:"-">>
|
||||||
|
|
||||||
|
<<unusedtitle baseName:"anotherBase">>
|
||||||
|
|
||||||
|
<<unusedtitle baseName:"About" separator:"-">>
|
||||||
|
|
||||||
|
+
|
||||||
|
title: ExpectedResult
|
||||||
|
|
||||||
|
<p>New Tiddler 1</p><p>New Tiddler-1</p><p>anotherBase 1</p><p>About-1</p>
|
@ -0,0 +1,20 @@
|
|||||||
|
title: Macros/unusedtitle/basic-params
|
||||||
|
description: test <<unusedtitle>> with basic macro parameters
|
||||||
|
type: text/vnd.tiddlywiki-multiple
|
||||||
|
tags: [[$:/tags/wiki-test-spec]]
|
||||||
|
|
||||||
|
title: Output
|
||||||
|
|
||||||
|
<<unusedtitle>>
|
||||||
|
|
||||||
|
<!-- EDGECASE: separator is ignored if tiddler title does not exist -->
|
||||||
|
<<unusedtitle separator:"-">>
|
||||||
|
|
||||||
|
<<unusedtitle baseName:"anotherBase">>
|
||||||
|
|
||||||
|
<<unusedtitle baseName:"About" separator:"-">>
|
||||||
|
|
||||||
|
+
|
||||||
|
title: ExpectedResult
|
||||||
|
|
||||||
|
<p>New Tiddler</p><p>New Tiddler</p><p>anotherBase</p><p>About</p>
|
@ -0,0 +1,50 @@
|
|||||||
|
title: Macros/unusedtitle/template-empty-params-tiddler-exist
|
||||||
|
description: test <<unusedtitle>> with templates where parameters are empty
|
||||||
|
type: text/vnd.tiddlywiki-multiple
|
||||||
|
tags: [[$:/tags/wiki-test-spec]]
|
||||||
|
|
||||||
|
title: New Tiddler
|
||||||
|
|
||||||
|
+
|
||||||
|
title: xxx
|
||||||
|
|
||||||
|
+
|
||||||
|
title: 00-New Tiddler
|
||||||
|
|
||||||
|
+
|
||||||
|
title: 0000 asdf
|
||||||
|
|
||||||
|
+
|
||||||
|
title: 0001 asdf
|
||||||
|
|
||||||
|
+
|
||||||
|
title: 0000 abc
|
||||||
|
|
||||||
|
+
|
||||||
|
title: Output
|
||||||
|
|
||||||
|
<!-- empty template - no template handling at all -->
|
||||||
|
<<unusedtitle template:"">>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
uses basename AND separator if tiddler exists
|
||||||
|
because it uses default naming build rules - no template handling
|
||||||
|
-->
|
||||||
|
<<unusedtitle template:"" separator:"-y-" baseName:"xxx">>
|
||||||
|
|
||||||
|
<<unusedtitle baseName:"" template:"$count:2$-$basename$">>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
EDGECASE: if separator is empty it will be initialized with a single space " "
|
||||||
|
to have the same rules for templates and default title creation
|
||||||
|
-->
|
||||||
|
<<unusedtitle baseName:"asdf" separator:"" template:"$count:4$$separator$$basename$">>
|
||||||
|
|
||||||
|
<!-- separator = " " -->
|
||||||
|
<<unusedtitle baseName:"abc" separator:" " template:"$count:4$$separator$$basename$">>
|
||||||
|
|
||||||
|
|
||||||
|
+
|
||||||
|
title: ExpectedResult
|
||||||
|
|
||||||
|
<p>New Tiddler 1</p><p>xxx-y-1</p><p>01-New Tiddler</p><p>0002 asdf</p><p>0001 abc</p>
|
@ -0,0 +1,24 @@
|
|||||||
|
title: Macros/unusedtitle/template-empty-params
|
||||||
|
description: test <<unusedtitle>> with templates where parameters are empty
|
||||||
|
type: text/vnd.tiddlywiki-multiple
|
||||||
|
tags: [[$:/tags/wiki-test-spec]]
|
||||||
|
|
||||||
|
title: Output
|
||||||
|
|
||||||
|
<!-- empty template -->
|
||||||
|
<<unusedtitle template:"">>
|
||||||
|
|
||||||
|
<!--
|
||||||
|
uses basename but ignores separator,
|
||||||
|
because it uses default naming build rules -- no template handling is active
|
||||||
|
-->
|
||||||
|
<<unusedtitle template:"" separator:"-x-" baseName:"xxx">>
|
||||||
|
|
||||||
|
<<unusedtitle baseName:"" template:"$count:2$-$basename$">>
|
||||||
|
|
||||||
|
<<unusedtitle baseName:"asdf" separator:"" template:"$count:4$$separator$$basename$">>
|
||||||
|
|
||||||
|
+
|
||||||
|
title: ExpectedResult
|
||||||
|
|
||||||
|
<p>New Tiddler</p><p>xxx</p><p>00-New Tiddler</p><p>0000 asdf</p>
|
@ -0,0 +1,28 @@
|
|||||||
|
title: Macros/unusedtitle/template
|
||||||
|
description: test <<unusedtitle>> with templates
|
||||||
|
type: text/vnd.tiddlywiki-multiple
|
||||||
|
tags: [[$:/tags/wiki-test-spec]]
|
||||||
|
|
||||||
|
title: Output
|
||||||
|
|
||||||
|
<!-- empty template - standard rules are used -->
|
||||||
|
<<unusedtitle template:"">>
|
||||||
|
|
||||||
|
<<unusedtitle template:"count-missing">>
|
||||||
|
|
||||||
|
<<unusedtitle template:"$count:2$-new">>
|
||||||
|
|
||||||
|
<!-- template is handled using $tw.utils.formatTitleString -->
|
||||||
|
<<unusedtitle baseName:"base" template:"$count:2$-$basename$">>
|
||||||
|
|
||||||
|
<<unusedtitle baseName:"" template:"$count:2$-$basename$">>
|
||||||
|
|
||||||
|
<!-- UPPERCASES are intentional in template strings. They should be case-insensistive -->
|
||||||
|
<<unusedtitle baseName:"asdf" separator:"-" template:"$coUNT:2$$sepaRATor$$baseName$">>
|
||||||
|
|
||||||
|
<<unusedtitle baseName:"asdf" separator:"" template:"$count:2$$separator$$basename$">>
|
||||||
|
|
||||||
|
+
|
||||||
|
title: ExpectedResult
|
||||||
|
|
||||||
|
<p>New Tiddler</p><p>count-missing</p><p>00-new</p><p>00-base</p><p>00-New Tiddler</p><p>00-asdf</p><p>00 asdf</p>
|
@ -1,6 +1,6 @@
|
|||||||
caption: tag
|
caption: tag
|
||||||
created: 20141206130540337
|
created: 20141206130540337
|
||||||
modified: 20230725201240201
|
modified: 20240228131301798
|
||||||
tags: Macros [[Core Macros]]
|
tags: Macros [[Core Macros]]
|
||||||
title: tag Macro
|
title: tag Macro
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
@ -11,7 +11,35 @@ The <<.def tag>> [[macro|Macros]] generates a tag pill for a specified tag. Clic
|
|||||||
|
|
||||||
!! Parameters
|
!! Parameters
|
||||||
|
|
||||||
;tag
|
; tag
|
||||||
: The title of the tag, defaulting to the [[current tiddler|Current Tiddler]]
|
: The title of the tag, defaulting to the [[current tiddler|Current Tiddler]]
|
||||||
|
|
||||||
|
!! CSS classes
|
||||||
|
|
||||||
|
<<.from-version "v5.3.4">>
|
||||||
|
|
||||||
|
; `tc-tag-missing`
|
||||||
|
: This class is defined if a tag does ''not exist'' as a tiddler.
|
||||||
|
|
||||||
|
; `tc-tag-exists`
|
||||||
|
: This class is defined if a tag does exist as a tiddler
|
||||||
|
|
||||||
|
!!! Defining the class
|
||||||
|
|
||||||
|
To define the `tc-tag-missing` class a stylesheet tiddler needs to be created. The default font-style for missing tiddler links is //italic//, so it's used for the example code below. Eg:
|
||||||
|
|
||||||
|
''title:'' `myTagsStylesheet`<br>
|
||||||
|
''tag:'' `$:/tags/Stylesheet`
|
||||||
|
|
||||||
|
<<copy-to-clipboard-above-right src:"""
|
||||||
|
.tc-tag-missing {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
""">>
|
||||||
|
```
|
||||||
|
.tc-tag-missing {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
<<.macro-examples "tag">>
|
<<.macro-examples "tag">>
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
created: 20150221211317000
|
created: 20150221211317000
|
||||||
modified: 20230725203751870
|
modified: 20240228131331605
|
||||||
tags: [[tag Macro]] [[Macro Examples]]
|
tags: [[tag Macro]] [[Macro Examples]]
|
||||||
title: tag Macro (Examples)
|
title: tag Macro (Examples)
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
@ -7,22 +7,26 @@ type: text/vnd.tiddlywiki
|
|||||||
<$macrocall $name=".example" n="1" eg="""<<tag>>"""/>
|
<$macrocall $name=".example" n="1" eg="""<<tag>>"""/>
|
||||||
<$macrocall $name=".example" n="2" eg="""<<tag Concepts>>"""/>
|
<$macrocall $name=".example" n="2" eg="""<<tag Concepts>>"""/>
|
||||||
|
|
||||||
|
The Following tag can be shown with a font-style: //italic// if the corresponding stylesheet exists. See: [[tag Macro]]
|
||||||
|
|
||||||
|
<$macrocall $name=".example" n="3" eg="""<<tag "Does not exist">>"""/>
|
||||||
|
|
||||||
If a [[list widget|ListWidget]] generates multiple tag macros for the same tag, clicking any of them opens dropdowns on all of them, as in the example below. This is usually unwanted.
|
If a [[list widget|ListWidget]] generates multiple tag macros for the same tag, clicking any of them opens dropdowns on all of them, as in the example below. This is usually unwanted.
|
||||||
<$macrocall $name=".example" n="3" eg="""<$list filter="[tag[HelloThere]]">
|
<$macrocall $name=".example" n="4" eg="""<$list filter="[tag[HelloThere]]">
|
||||||
|
|
||||||
* <$link/> is tagged with: <$list filter="[<currentTiddler>tags[]]"> <<tag>> </$list>
|
* <$link/> is tagged with: <$list filter="[<currentTiddler>tags[]]"> <<tag>> </$list>
|
||||||
|
|
||||||
</$list>"""/>
|
</$list>"""/>
|
||||||
|
|
||||||
Adding the `counter="transclusion"` attribute to the list widget that generates multiple identical tag macros causes each of them to be identified as a unique one. Clicking on any of them opens only a single dropdown.
|
Adding the `counter="transclusion"` attribute to the list widget that generates multiple identical tag macros causes each of them to be identified as a unique one. Clicking on any of them opens only a single dropdown.
|
||||||
<$macrocall $name=".example" n="4" eg="""<$list filter="[tag[HelloThere]]" counter="transclusion">
|
<$macrocall $name=".example" n="5" eg="""<$list filter="[tag[HelloThere]]" counter="transclusion">
|
||||||
|
|
||||||
* <$link/> is tagged with: <$list filter="[<currentTiddler>tags[]]"> <<tag>> </$list>
|
* <$link/> is tagged with: <$list filter="[<currentTiddler>tags[]]"> <<tag>> </$list>
|
||||||
|
|
||||||
</$list>"""/>
|
</$list>"""/>
|
||||||
|
|
||||||
A slightly more performant option is to use the `variable="transclusion"` attribute in the list widget. In this case, the variable `<<transclusion>>` has to be used inside the list widget instead of the `<<currentTiddler>>` .
|
A slightly more performant option is to use the `variable="transclusion"` attribute in the list widget. In this case, the variable `<<transclusion>>` has to be used inside the list widget instead of the `<<currentTiddler>>` .
|
||||||
<$macrocall $name=".example" n="5" eg="""<$list filter="[tag[HelloThere]]" variable="transclusion">
|
<$macrocall $name=".example" n="6" eg="""<$list filter="[tag[HelloThere]]" variable="transclusion">
|
||||||
|
|
||||||
* <$link to=<<transclusion>>/> is tagged with: <$list filter="[<transclusion>tags[]]"> <<tag>> </$list>
|
* <$link to=<<transclusion>>/> is tagged with: <$list filter="[<transclusion>tags[]]"> <<tag>> </$list>
|
||||||
|
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
caption: tag-picker
|
caption: tag-picker
|
||||||
created: 20161128191316701
|
created: 20161128191316701
|
||||||
modified: 20161128191435641
|
modified: 20230616114543787
|
||||||
tags: Macros [[Core Macros]]
|
tags: Macros [[Core Macros]]
|
||||||
title: tag-picker Macro
|
title: tag-picker Macro
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
@ -9,9 +9,17 @@ The <<.def tag-picker>> [[macro|Macros]] generates a combination of a text box a
|
|||||||
|
|
||||||
!! Parameters
|
!! Parameters
|
||||||
|
|
||||||
;actions
|
; actions
|
||||||
: Action widgets to be triggered when the pill is clicked. Within the text, the variable ''tag'' contains the title of the selected tag.
|
: Action widgets to be triggered when the pill is clicked. Within the text, the variable <<.var tag>> contains the title of the selected tag.
|
||||||
;tagField
|
|
||||||
: <<.from-version 5.1.23>> The ''field'' that gets updated with the selected tag. Defaults to ''tags''.
|
; tagField
|
||||||
|
: <<.from-version 5.1.23>> The specified ''field'' that gets updated with the selected tag. Defaults to `tags`.
|
||||||
|
|
||||||
|
; tiddler
|
||||||
|
: <<.from-version 5.3.4>> Defines the target tiddler, which should be manipulated. Defaults to: <<.var currentTiddler>>.
|
||||||
|
|
||||||
|
; tagListFilter
|
||||||
|
: <<.from-version 5.3.4>> This parameter defaults to: `[tags[]]` which creates a list of all existing tags. If the tag list should come from a different source the filter should look similar to eg: `[<listSource>get[field-name]enlist-input[]]`.
|
||||||
|
|
||||||
|
|
||||||
<<.macro-examples "tag-picker">>
|
<<.macro-examples "tag-picker">>
|
||||||
|
@ -0,0 +1,34 @@
|
|||||||
|
title: WidgetMessage: tm-http-request Example - Basic Authentication
|
||||||
|
tags: $:/tags/Global
|
||||||
|
|
||||||
|
|
||||||
|
!! HTTP Basic Authentication
|
||||||
|
|
||||||
|
[[HTTP Basic Authentication|https://en.wikipedia.org/wiki/Basic_access_authentication]] is a simple scheme for HTTP clients pass a username and password to an HTTP server.
|
||||||
|
|
||||||
|
The credentials are passed via the "Authorization" header as the string "Basic " (note the space) followed by the base64-encoded username and password joined with a colon.
|
||||||
|
|
||||||
|
Here is a simple, illustrative example:
|
||||||
|
|
||||||
|
```
|
||||||
|
\procedure get-tiddler-list-from-tiddlywiki-server(url,username,password)
|
||||||
|
\procedure completion-get-json()
|
||||||
|
\import [subfilter{$:/core/config/GlobalImportFilter}]
|
||||||
|
<$action-log msg="In completion-get-json"/>
|
||||||
|
<$action-log/>
|
||||||
|
\end completion-get-json
|
||||||
|
<$action-sendmessage
|
||||||
|
$message="tm-http-request"
|
||||||
|
url=<<url>>
|
||||||
|
method="GET"
|
||||||
|
header-Authorization={{{ [<username>addsuffix[:]addsuffix<password>encodebase64[]addprefix[Basic ]] }}}
|
||||||
|
oncompletion=<<completion-get-json>>
|
||||||
|
/>
|
||||||
|
\end get-tiddler-list-from-tiddlywiki-server
|
||||||
|
|
||||||
|
<$button>
|
||||||
|
<<get-tiddler-list-from-tiddlywiki-server url:"http://127.0.0.1:8080" username:"Joe" password:"Bloggs">>
|
||||||
|
Download
|
||||||
|
</$button>
|
||||||
|
```
|
||||||
|
|
@ -51,3 +51,4 @@ Note that the state tiddler $:/state/http-requests contains a number representin
|
|||||||
|
|
||||||
* [[Zotero's|https://www.zotero.org/]] API for retrieving reference items: [[WidgetMessage: tm-http-request Example - Zotero]]
|
* [[Zotero's|https://www.zotero.org/]] API for retrieving reference items: [[WidgetMessage: tm-http-request Example - Zotero]]
|
||||||
* [[Random Dog's|https://random.dog/]] API for retrieving random pictures of dogs showing how to retrieve binary data: [[WidgetMessage: tm-http-request Example - Random Dog]]
|
* [[Random Dog's|https://random.dog/]] API for retrieving random pictures of dogs showing how to retrieve binary data: [[WidgetMessage: tm-http-request Example - Random Dog]]
|
||||||
|
* Example of using HTTP Basic Authentication: [[WidgetMessage: tm-http-request Example - Basic Authentication]]
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
|
code-body: yes
|
||||||
created: 20150117152607000
|
created: 20150117152607000
|
||||||
modified: 20240229155550000
|
modified: 20240317091700545
|
||||||
tags: $:/tags/Macro
|
tags: $:/tags/Macro
|
||||||
title: $:/editions/tw5.com/doc-macros
|
title: $:/editions/tw5.com/doc-macros
|
||||||
code-body: yes
|
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
\whitespace trim
|
\whitespace trim
|
||||||
@ -165,7 +165,7 @@ This is an example tiddler. See [[Table-of-Contents Macros (Examples)]].
|
|||||||
<dd><$button set=<<.state>> setTo="">Hide</$button></dd>
|
<dd><$button set=<<.state>> setTo="">Hide</$button></dd>
|
||||||
</dl>
|
</dl>
|
||||||
<blockquote class="doc-example-result">
|
<blockquote class="doc-example-result">
|
||||||
<<eg>>
|
<$transclude $variable="eg" $mode="block"/>
|
||||||
</blockquote>
|
</blockquote>
|
||||||
</$reveal>
|
</$reveal>
|
||||||
</$list>
|
</$list>
|
||||||
|
69
editions/tw5.com/tiddlers/tag-picker Macro (Examples).tid
Normal file
69
editions/tw5.com/tiddlers/tag-picker Macro (Examples).tid
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
created: 20230616104546608
|
||||||
|
modified: 20240214174032498
|
||||||
|
tags: [[tag-picker Macro]] [[Macro Examples]]
|
||||||
|
title: tag-picker Macro (Examples)
|
||||||
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
|
<<.warning """The first example will set the tag of the <<.tid currentTiddler>> so you should copy / paste it to a new tiddler for testing. Otherwise you'll change "this tiddler" """>>
|
||||||
|
|
||||||
|
<$macrocall $name=".example" n="1"
|
||||||
|
eg="""Use all existing tags and set the ''tags'' field here: <<tag-picker>>
|
||||||
|
"""/>
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
<$let transclusion=test>
|
||||||
|
|
||||||
|
<<.tip """The following examples use a temporary tiddler: $:/temp/test/tag-picker. So this tiddler will not be changed """>>
|
||||||
|
|
||||||
|
|
||||||
|
<$macrocall $name=".example" n="2"
|
||||||
|
eg="""$:/temp/test/tag-picker ''tags'': <$text text={{{ [[$:/temp/test/tag-picker]get[tags]enlist-input[]join[, ]else[n/a]] }}}/>
|
||||||
|
|
||||||
|
Use all existing tags and set the $:/temp/test/tag-picker ''tags'' field: <<tag-picker tiddler:"$:/temp/test/tag-picker">>
|
||||||
|
"""/>
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
<<.tip """Use the following example to populate the $:/temp/test/tag-picker ''foo''-field, which are needed by some examples below """>>
|
||||||
|
|
||||||
|
<$macrocall $name=".example" n="3"
|
||||||
|
eg="""$:/temp/test/tag-picker ''foo'': <$text text={{{ [[$:/temp/test/tag-picker]get[foo]enlist-input[]join[, ]else[n/a]] }}}/>
|
||||||
|
|
||||||
|
Use all existing tags and set the $:/temp/test/tag-picker ''foo'' field: <<tag-picker tagField:"foo" tiddler:"$:/temp/test/tag-picker">>
|
||||||
|
"""/>
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
<<.tip """The following example expects some values in the "foo" field of the tiddler $:/temp/test/tag-picker, which can be created by the example above.""">>
|
||||||
|
|
||||||
|
<$macrocall $name=".example" n="4" eg="""\procedure listSource() $:/temp/test/tag-picker
|
||||||
|
|
||||||
|
$:/temp/test/tag-picker foo: <$text text={{{ [[$:/temp/test/tag-picker]get[foo]enlist-input[]join[, ]else[n/a]] }}}/><br>
|
||||||
|
$:/temp/test/tag-picker bar: <$text text={{{ [[$:/temp/test/tag-picker]get[bar]enlist-input[]join[, ]else[n/a]] }}}/>
|
||||||
|
|
||||||
|
Use $:/temp/test/tag-picker ''foo'' field as source and set ''bar'': <<tag-picker tagField:"bar" tagListFilter:"[<listSource>get[foo]enlist-input[]]" tiddler:"$:/temp/test/tag-picker">>
|
||||||
|
"""/>
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
<<.tip """The following example expects some values in the "foo" field of the tiddler $:/temp/test/tag-picker, which can be created by the example above.<br>
|
||||||
|
It will also add completely new tags to the bar-field and the source tiddlers foo-field. New tags can be entered by typing into the tag-name input
|
||||||
|
""">>
|
||||||
|
|
||||||
|
<$macrocall $name=".example" n="5" eg="""
|
||||||
|
\procedure listSource() $:/temp/test/tag-picker
|
||||||
|
\procedure listSourceField() foo
|
||||||
|
|
||||||
|
\procedure addNewTagToSource()
|
||||||
|
<$action-listops $tiddler=<<listSource>> $field=<<listSourceField>> $subfilter='[<listSource>get<listSourceField>enlist-input[]] [<tag>trim[]]'/>
|
||||||
|
\end
|
||||||
|
|
||||||
|
$:/temp/test/tag-picker foo: <$text text={{{ [[$:/temp/test/tag-picker]get[foo]enlist-input[]join[, ]else[n/a]] }}}/><br>
|
||||||
|
$:/temp/test/tag-picker ''bar'': <$text text={{{ [[$:/temp/test/tag-picker]get[bar]enlist-input[]join[, ]else[n/a]] }}}/>
|
||||||
|
|
||||||
|
Use $:/temp/test/tag-picker ''foo'' field as source and set ''bar'': <$macrocall $name="tag-picker" tagField="bar" tagListFilter="[<listSource>get<listSourceField>enlist-input[]]" tiddler="$:/temp/test/tag-picker" actions=<<addNewTagToSource>>/>
|
||||||
|
|
||||||
|
"""/>
|
||||||
|
|
||||||
|
</$let>
|
@ -1,14 +1,14 @@
|
|||||||
created: 20140908130500000
|
created: 20140908130500000
|
||||||
modified: 20150219182745000
|
modified: 20240326164134356
|
||||||
tags: Concepts Reference
|
tags: Concepts Reference
|
||||||
title: Widgets
|
title: Widgets
|
||||||
type: text/vnd.tiddlywiki
|
type: text/vnd.tiddlywiki
|
||||||
|
|
||||||
~TiddlyWiki's display is driven by an underlying collection of <<.def widgets>>. These are organised into a tree structure: each widget has a parent widget and zero or more child widgets.
|
~TiddlyWiki's display is driven by an underlying collection of <<.def widgets>>. These are organised into a tree structure: each widget has a parent widget and zero or more child widgets.
|
||||||
|
|
||||||
~TiddlyWiki generates this <<.def "widget tree">> by parsing the WikiText of tiddlers. Each component of the WikiText syntax, including even the trivial case of ordinary text, generates a corresponding widget. The widget tree is an intermediate representation that is subsequently rendered into the actual display.
|
~TiddlyWiki generates this <<.def "widget tree">> by parsing the ~WikiText of tiddlers. Each component of the ~WikiText syntax, including even the trivial case of ordinary text, generates a corresponding widget. The widget tree is an intermediate representation that is subsequently rendered into the actual display.
|
||||||
|
|
||||||
Widgets are analogous to elements in an HTML document. Indeed, HTML tags in WikiText generate dedicated <<.def "element widgets">>.
|
Widgets are analogous to elements in an HTML document. Indeed, HTML tags in ~WikiText generate dedicated <<.def "element widgets">>.
|
||||||
|
|
||||||
Each class of widget contributes a specific ability to the overall functionality, such as the ability to <<.wlink2 "display an image" ImageWidget>> or <<.wlink2 "a button" ButtonWidget>>, to <<.wlink2 "call a macro" MacroCallWidget>> or <<.wlink2 "transclude text from elsewhere" TranscludeWidget>>, or to [[mark a piece of text as a heading|HTML in WikiText]].
|
Each class of widget contributes a specific ability to the overall functionality, such as the ability to <<.wlink2 "display an image" ImageWidget>> or <<.wlink2 "a button" ButtonWidget>>, to <<.wlink2 "call a macro" MacroCallWidget>> or <<.wlink2 "transclude text from elsewhere" TranscludeWidget>>, or to [[mark a piece of text as a heading|HTML in WikiText]].
|
||||||
|
|
||||||
@ -16,4 +16,4 @@ The more specialised widgets use a general-purpose [[widget syntax|Widgets in Wi
|
|||||||
|
|
||||||
The following classes of widget are built into the core:
|
The following classes of widget are built into the core:
|
||||||
|
|
||||||
<<list-links "[tag[Widgets]]">>
|
<<list-links "[tag[Widgets]]" class:"multi-columns">>
|
||||||
|
@ -563,3 +563,5 @@ John Long, @drevarr, 2023/12/12
|
|||||||
Ed Holsinger, @eschlon, 2024/02/08
|
Ed Holsinger, @eschlon, 2024/02/08
|
||||||
|
|
||||||
Kim I. McKinley, @PotOfCoffee2Go, 2024/03/16
|
Kim I. McKinley, @PotOfCoffee2Go, 2024/03/16
|
||||||
|
|
||||||
|
@Jinix6, 2024/03/31
|
@ -4,8 +4,6 @@ This plugin provides a diagonal ribbon across the corner of the window. It resem
|
|||||||
|
|
||||||
The ribbon can be positioned over any corner, and can incorporate user defined text, colours and a link.
|
The ribbon can be positioned over any corner, and can incorporate user defined text, colours and a link.
|
||||||
|
|
||||||
The CSS stylesheet is adapted from work by Simon Whitaker:
|
The CSS stylesheet is adapted from work by [[Simon Whitaker|https://github.com/simonwhitaker/github-fork-ribbon-css/]]
|
||||||
|
|
||||||
https://github.com/simonwhitaker/github-fork-ribbon-css/
|
[[Plugin source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/github-fork-ribbon]]
|
||||||
|
|
||||||
[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/github-fork-ribbon]]
|
|
||||||
|
@ -1,5 +1,4 @@
|
|||||||
title: $:/plugins/tiddlywiki/github-fork-ribbon/styles
|
title: $:/plugins/tiddlywiki/github-fork-ribbon/styles
|
||||||
tags: [[$:/tags/Stylesheet]]
|
|
||||||
|
|
||||||
/* Left will inherit from right (so we don't need to duplicate code */
|
/* Left will inherit from right (so we don't need to duplicate code */
|
||||||
.github-fork-ribbon {
|
.github-fork-ribbon {
|
||||||
@ -10,7 +9,7 @@ tags: [[$:/tags/Stylesheet]]
|
|||||||
padding: 2px 0;
|
padding: 2px 0;
|
||||||
|
|
||||||
/* Set the base colour */
|
/* Set the base colour */
|
||||||
background-color: #a00;
|
background-color: <<color>>;
|
||||||
|
|
||||||
/* Set a gradient: transparent black at the top to almost-transparent black at the bottom */
|
/* Set a gradient: transparent black at the top to almost-transparent black at the bottom */
|
||||||
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.00)), to(rgba(0, 0, 0, 0.15)));
|
background-image: -webkit-gradient(linear, left top, left bottom, from(rgba(0, 0, 0, 0.00)), to(rgba(0, 0, 0, 0.15)));
|
||||||
@ -25,7 +24,7 @@ tags: [[$:/tags/Stylesheet]]
|
|||||||
-webkit-box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);
|
-webkit-box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);
|
||||||
box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);
|
box-shadow: 0px 2px 3px 0px rgba(0, 0, 0, 0.5);
|
||||||
|
|
||||||
z-index: 999;
|
z-index: 700;
|
||||||
pointer-events: auto;
|
pointer-events: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,8 +60,8 @@ tags: [[$:/tags/Stylesheet]]
|
|||||||
height: 150px;
|
height: 150px;
|
||||||
position: absolute;
|
position: absolute;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
top: 0;
|
top: <<top>>;
|
||||||
z-index: 999;
|
z-index: 700;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,25 +70,25 @@ tags: [[$:/tags/Stylesheet]]
|
|||||||
}
|
}
|
||||||
|
|
||||||
.github-fork-ribbon-wrapper.left {
|
.github-fork-ribbon-wrapper.left {
|
||||||
left: 0;
|
left: <<left>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
.github-fork-ribbon-wrapper.right {
|
.github-fork-ribbon-wrapper.right {
|
||||||
right: 0;
|
right: <<right>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
.github-fork-ribbon-wrapper.left-bottom {
|
.github-fork-ribbon-wrapper.left-bottom {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: inherit;
|
top: inherit;
|
||||||
bottom: 0;
|
bottom: <<bottom>>;
|
||||||
left: 0;
|
left: <<left>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
.github-fork-ribbon-wrapper.right-bottom {
|
.github-fork-ribbon-wrapper.right-bottom {
|
||||||
position: fixed;
|
position: fixed;
|
||||||
top: inherit;
|
top: inherit;
|
||||||
bottom: 0;
|
bottom: <<bottom>>;
|
||||||
right: 0;
|
right: <<right>>;
|
||||||
}
|
}
|
||||||
|
|
||||||
.github-fork-ribbon-wrapper.right .github-fork-ribbon {
|
.github-fork-ribbon-wrapper.right .github-fork-ribbon {
|
||||||
|
26
plugins/tiddlywiki/github-fork-ribbon/template.tid
Normal file
26
plugins/tiddlywiki/github-fork-ribbon/template.tid
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
title: $:/plugins/tiddlywiki/github-fork-ribbon/template
|
||||||
|
|
||||||
|
<!-- Parameters:
|
||||||
|
position: "right", "left", "right-bottom" and "left-bottom"
|
||||||
|
url: link target
|
||||||
|
text: ribbon text
|
||||||
|
color: defaults to "#aa0000" - dark red
|
||||||
|
top: offset from the top in px - eg: "30px"
|
||||||
|
bottom: offset from the bottom in px - No ;
|
||||||
|
left: offset from left in px - No ;
|
||||||
|
right: offset from right in px - No ;
|
||||||
|
fixed: "fixed" .. If ribbon is at the top, it can be "fixed". Bottom is always fixed
|
||||||
|
-->
|
||||||
|
\parameters (position:"right", url:"https://github.com/Jermolene/TiddlyWiki5", text:"Fork me on ~GitHub" color:"#aa0000" top:"0" bottom:"0" left:"0" right:"0" fixed:"")
|
||||||
|
|
||||||
|
<style>
|
||||||
|
{{$:/plugins/tiddlywiki/github-fork-ribbon/styles}}
|
||||||
|
</style>
|
||||||
|
|
||||||
|
<div class={{{ github-fork-ribbon-wrapper [<position>] [<fixed>] +[join[ ]] }}}>
|
||||||
|
<div class="github-fork-ribbon">
|
||||||
|
<a href=<<url>>>
|
||||||
|
<<text>>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
@ -1,26 +1,81 @@
|
|||||||
title: $:/plugins/tiddlywiki/github-fork-ribbon/usage
|
title: $:/plugins/tiddlywiki/github-fork-ribbon/usage
|
||||||
|
|
||||||
Copy appropriate chunks on a new tiddler and tag it `$:/tags/PageControls`. Name of the new tiddler does not matter. Only the tag matters.
|
\procedure ribbonCode()
|
||||||
|
\whitespace trim
|
||||||
|
<$transclude $tiddler="$:/plugins/tiddlywiki/github-fork-ribbon/template" top="30px" fixed=fixed color="green"/>
|
||||||
|
\end
|
||||||
|
|
||||||
```
|
\procedure ribbonCreateActions()
|
||||||
<!-- TOP RIGHT RIBBON: START COPYING HERE -->
|
<% if [[$:/github-ribbon]!is[tiddler]] %>
|
||||||
<div class="github-fork-ribbon-wrapper right"><div class="github-fork-ribbon"><a href="https://github.com/simonwhitaker/github-fork-ribbon-css">Fork me on ~GitHub</a></div>
|
<$action-setfield $tiddler="$:/github-ribbon" $field="text" $value=<<ribbonCode>>
|
||||||
</div>
|
tags="$:/tags/PageTemplate"
|
||||||
<!-- TOP RIGHT RIBBON: END COPYING HERE -->
|
code-body="yes" />
|
||||||
|
<% endif %>
|
||||||
|
<$action-navigate $to="$:/github-ribbon" />
|
||||||
|
\end
|
||||||
|
|
||||||
<!-- TOP LEFT RIBBON: START COPYING HERE -->
|
\procedure createRibbon()
|
||||||
<div class="github-fork-ribbon-wrapper left"><div class="github-fork-ribbon"><a href="https://github.com/simonwhitaker/github-fork-ribbon-css">Fork me on ~GitHub</a></div>
|
<$button actions=<<ribbonCreateActions>> >
|
||||||
</div>
|
<%if [[$:/github-ribbon]!is[tiddler]] %>
|
||||||
<!-- TOP LEFT RIBBON: END COPYING HERE -->
|
Create
|
||||||
|
<% else %>
|
||||||
|
Show
|
||||||
|
<% endif %> ~$:/github-ribbon
|
||||||
|
</$button>
|
||||||
|
\end
|
||||||
|
|
||||||
|
\procedure ribbonToggleTagActions()
|
||||||
|
<$action-listops $tiddler="$:/github-ribbon" $field="tags" $subfilter="+[toggle[$:/tags/PageTemplate]]" />
|
||||||
|
\end
|
||||||
|
|
||||||
|
\procedure ribbonToggleTag() <$button actions=<<ribbonToggleTagActions>> >Toggle Tag</$button>
|
||||||
|
|
||||||
|
|
||||||
<!-- BOTTOM RIGHT RIBBON: START COPYING HERE -->
|
`$:/plugins/tiddlywiki/github-fork-ribbon/template` is a template tiddler, that can be used with a transclusion and parameters.
|
||||||
<div class="github-fork-ribbon-wrapper right-bottom"><div class="github-fork-ribbon"><a href="https://github.com/simonwhitaker/github-fork-ribbon-css">Fork me on ~GitHub</a></div>
|
|
||||||
</div>
|
|
||||||
<!-- BOTTOM RIGHT RIBBON: END COPYING HERE -->
|
|
||||||
|
|
||||||
<!-- BOTTOM LEFT RIBBON: START COPYING HERE -->
|
!! Usage
|
||||||
<div class="github-fork-ribbon-wrapper left-bottom"><div class="github-fork-ribbon"><a href="https://github.com/simonwhitaker/github-fork-ribbon-css">Fork me on ~GitHub</a></div>
|
|
||||||
</div>
|
* Create a new tiddler eg: $:/github-ribbon
|
||||||
<!-- BOTTOM LEFT RIBBON: END COPYING HERE -->
|
* Tag it `$:/tags/PageTemplate`
|
||||||
```
|
* Copy the code below
|
||||||
|
|
||||||
|
<pre><$text text=<<ribbonCode>>/></pre>
|
||||||
|
|
||||||
|
<<createRibbon>> <<ribbonToggleTag>>
|
||||||
|
|
||||||
|
!! Parameters
|
||||||
|
|
||||||
|
; position
|
||||||
|
: "right" (default), "left", "right-bottom" and "left-bottom"
|
||||||
|
|
||||||
|
; url
|
||||||
|
: Target URL, default: https://github.com/Jermolene/TiddlyWiki5
|
||||||
|
|
||||||
|
; text
|
||||||
|
: Ribbon text. default: `Fork me on ~GitHub`
|
||||||
|
|
||||||
|
; color
|
||||||
|
: Ribbon background color: default: `#aa0000`
|
||||||
|
|
||||||
|
; top
|
||||||
|
: Offset from the top if postion is top. default: `0` eg: `30px`, if the menu-toolbar plugin is installed
|
||||||
|
|
||||||
|
; bottom
|
||||||
|
: Offset from the bottom in px
|
||||||
|
|
||||||
|
; left
|
||||||
|
: Offset from the left in px
|
||||||
|
|
||||||
|
; right
|
||||||
|
: Offset from the right in px
|
||||||
|
|
||||||
|
; fixed
|
||||||
|
: If position is ''top'', the ribbon will scroll out of the viewport by default
|
||||||
|
: If the parameter `fixed="fixed"` it will be fixed
|
||||||
|
|
||||||
|
!! Remove the Ribbon
|
||||||
|
|
||||||
|
* Disable the plugin
|
||||||
|
* ''Remove the tag'' from $:/github-ribbon tiddler
|
||||||
|
* Delete the $:/github-ribbon tiddler
|
||||||
|
* <<ribbonToggleTag>>
|
@ -931,6 +931,7 @@ button.tc-btn-invisible.tc-remove-tag-button {
|
|||||||
|
|
||||||
.tc-page-controls {
|
.tc-page-controls {
|
||||||
margin-top: 14px;
|
margin-top: 14px;
|
||||||
|
margin-bottom: 14px;
|
||||||
font-size: 1.5em;
|
font-size: 1.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1335,6 +1336,7 @@ canvas.tc-edit-bitmapeditor {
|
|||||||
clear: both;
|
clear: both;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.tc-single-tiddler-window .tc-tiddler-body,
|
||||||
.tc-tiddler-frame .tc-tiddler-body {
|
.tc-tiddler-frame .tc-tiddler-body {
|
||||||
font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};
|
font-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};
|
||||||
line-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};
|
line-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};
|
||||||
@ -1344,6 +1346,11 @@ canvas.tc-edit-bitmapeditor {
|
|||||||
overflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */
|
overflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Tiddler in a new window.
|
||||||
|
* Also see: .tc-single-tiddler-window .tc-tiddler-body, above
|
||||||
|
*/
|
||||||
|
|
||||||
html body.tc-body.tc-single-tiddler-window {
|
html body.tc-body.tc-single-tiddler-window {
|
||||||
margin: 1em;
|
margin: 1em;
|
||||||
background: <<colour tiddler-background>>;
|
background: <<colour tiddler-background>>;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
title: $:/themes/tiddlywiki/vanilla/reset
|
title: $:/themes/tiddlywiki/vanilla/reset
|
||||||
type: text/css
|
type: text/css
|
||||||
|
|
||||||
/*! modern-normalize v1.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
|
/*! modern-normalize v2.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Document
|
Document
|
||||||
@ -13,28 +13,26 @@ Use a better box model (opinionated).
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
*,
|
*,
|
||||||
*::before,
|
::before,
|
||||||
*::after {
|
::after {
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
Use a more readable tab size (opinionated).
|
|
||||||
*/
|
|
||||||
|
|
||||||
:root {
|
|
||||||
-moz-tab-size: 4;
|
|
||||||
tab-size: 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
1. Correct the line height in all browsers.
|
|
||||||
2. Prevent adjustments of font size after orientation changes in iOS.
|
|
||||||
*/
|
|
||||||
|
|
||||||
html {
|
html {
|
||||||
line-height: 1.15; /* 1 */
|
/* Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) */
|
||||||
-webkit-text-size-adjust: 100%; /* 2 */
|
font-family:
|
||||||
|
system-ui,
|
||||||
|
'Segoe UI',
|
||||||
|
Roboto,
|
||||||
|
Helvetica,
|
||||||
|
Arial,
|
||||||
|
sans-serif,
|
||||||
|
'Apple Color Emoji',
|
||||||
|
'Segoe UI Emoji';
|
||||||
|
line-height: 1.15; /* 1. Correct the line height in all browsers. */
|
||||||
|
-webkit-text-size-adjust: 100%; /* 2. Prevent adjustments of font size after orientation changes in iOS. */
|
||||||
|
-moz-tab-size: 4; /* 3. Use a more readable tab size (opinionated). */
|
||||||
|
tab-size: 4; /* 3 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -42,29 +40,8 @@ Sections
|
|||||||
========
|
========
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
|
||||||
Remove the margin in all browsers.
|
|
||||||
*/
|
|
||||||
|
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0; /* Remove the margin in all browsers. */
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
|
|
||||||
*/
|
|
||||||
|
|
||||||
body {
|
|
||||||
font-family:
|
|
||||||
system-ui,
|
|
||||||
-apple-system, /* Firefox supports this but not yet `system-ui` */
|
|
||||||
'Segoe UI',
|
|
||||||
Roboto,
|
|
||||||
Helvetica,
|
|
||||||
Arial,
|
|
||||||
sans-serif,
|
|
||||||
'Apple Color Emoji',
|
|
||||||
'Segoe UI Emoji';
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -78,8 +55,8 @@ Grouping content
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
hr {
|
hr {
|
||||||
height: 0; /* 1 */
|
height: 0; /* 1 */
|
||||||
color: inherit; /* 2 */
|
color: inherit; /* 2 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -92,7 +69,7 @@ Add the correct text decoration in Chrome, Edge, and Safari.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
abbr[title] {
|
abbr[title] {
|
||||||
text-decoration: underline dotted;
|
text-decoration: underline dotted;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -101,7 +78,7 @@ Add the correct font weight in Edge and Safari.
|
|||||||
|
|
||||||
b,
|
b,
|
||||||
strong {
|
strong {
|
||||||
font-weight: bolder;
|
font-weight: bolder;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -113,14 +90,14 @@ code,
|
|||||||
kbd,
|
kbd,
|
||||||
samp,
|
samp,
|
||||||
pre {
|
pre {
|
||||||
font-family:
|
font-family:
|
||||||
ui-monospace,
|
ui-monospace,
|
||||||
SFMono-Regular,
|
SFMono-Regular,
|
||||||
Consolas,
|
Consolas,
|
||||||
'Liberation Mono',
|
'Liberation Mono',
|
||||||
Menlo,
|
Menlo,
|
||||||
monospace; /* 1 */
|
monospace; /* 1 */
|
||||||
font-size: 1em; /* 2 */
|
font-size: 1em; /* 2 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -128,7 +105,7 @@ Add the correct font size in all browsers.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
small {
|
small {
|
||||||
font-size: 80%;
|
font-size: 80%;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -137,18 +114,18 @@ Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
|
|||||||
|
|
||||||
sub,
|
sub,
|
||||||
sup {
|
sup {
|
||||||
font-size: 75%;
|
font-size: 75%;
|
||||||
line-height: 0;
|
line-height: 0;
|
||||||
position: relative;
|
position: relative;
|
||||||
vertical-align: baseline;
|
vertical-align: baseline;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub {
|
sub {
|
||||||
bottom: -0.25em;
|
bottom: -0.25em;
|
||||||
}
|
}
|
||||||
|
|
||||||
sup {
|
sup {
|
||||||
top: -0.5em;
|
top: -0.5em;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -158,12 +135,12 @@ Tabular data
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
|
||||||
2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
2. Correct table border color inheritance in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
table {
|
table {
|
||||||
text-indent: 0; /* 1 */
|
text-indent: 0; /* 1 */
|
||||||
border-color: inherit; /* 2 */
|
border-color: inherit; /* 2 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -181,20 +158,19 @@ input,
|
|||||||
optgroup,
|
optgroup,
|
||||||
select,
|
select,
|
||||||
textarea {
|
textarea {
|
||||||
font-family: inherit; /* 1 */
|
font-family: inherit; /* 1 */
|
||||||
font-size: 100%; /* 1 */
|
font-size: 100%; /* 1 */
|
||||||
line-height: 1.15; /* 1 */
|
line-height: 1.15; /* 1 */
|
||||||
margin: 0; /* 2 */
|
margin: 0; /* 2 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Remove the inheritance of text transform in Edge and Firefox.
|
Remove the inheritance of text transform in Edge and Firefox.
|
||||||
1. Remove the inheritance of text transform in Firefox.
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
button,
|
button,
|
||||||
select { /* 1 */
|
select {
|
||||||
text-transform: none;
|
text-transform: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -205,7 +181,7 @@ button,
|
|||||||
[type='button'],
|
[type='button'],
|
||||||
[type='reset'],
|
[type='reset'],
|
||||||
[type='submit'] {
|
[type='submit'] {
|
||||||
-webkit-appearance: button;
|
-webkit-appearance: button;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -213,8 +189,8 @@ Remove the inner border and padding in Firefox.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
::-moz-focus-inner {
|
::-moz-focus-inner {
|
||||||
border-style: none;
|
border-style: none;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -222,7 +198,7 @@ Restore the focus styles unset by the previous rule.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
:-moz-focusring {
|
:-moz-focusring {
|
||||||
outline: 1px dotted ButtonText;
|
outline: 1px dotted ButtonText;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -231,7 +207,7 @@ See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d4
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
:-moz-ui-invalid {
|
:-moz-ui-invalid {
|
||||||
box-shadow: none;
|
box-shadow: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -239,7 +215,7 @@ Remove the padding so developers are not caught out when they zero out 'fieldset
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
legend {
|
legend {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -247,7 +223,7 @@ Add the correct vertical alignment in Chrome and Firefox.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
progress {
|
progress {
|
||||||
vertical-align: baseline;
|
vertical-align: baseline;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -256,7 +232,7 @@ Correct the cursor style of increment and decrement buttons in Safari.
|
|||||||
|
|
||||||
::-webkit-inner-spin-button,
|
::-webkit-inner-spin-button,
|
||||||
::-webkit-outer-spin-button {
|
::-webkit-outer-spin-button {
|
||||||
height: auto;
|
height: auto;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -265,8 +241,8 @@ Correct the cursor style of increment and decrement buttons in Safari.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
[type='search'] {
|
[type='search'] {
|
||||||
-webkit-appearance: textfield; /* 1 */
|
-webkit-appearance: textfield; /* 1 */
|
||||||
outline-offset: -2px; /* 2 */
|
outline-offset: -2px; /* 2 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -274,7 +250,7 @@ Remove the inner padding in Chrome and Safari on macOS.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
::-webkit-search-decoration {
|
::-webkit-search-decoration {
|
||||||
-webkit-appearance: none;
|
-webkit-appearance: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -283,8 +259,8 @@ Remove the inner padding in Chrome and Safari on macOS.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
::-webkit-file-upload-button {
|
::-webkit-file-upload-button {
|
||||||
-webkit-appearance: button; /* 1 */
|
-webkit-appearance: button; /* 1 */
|
||||||
font: inherit; /* 2 */
|
font: inherit; /* 2 */
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -297,5 +273,5 @@ Add the correct display in Chrome and Safari.
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
summary {
|
summary {
|
||||||
display: list-item;
|
display: list-item;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user