1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2025-08-03 12:23:51 +00:00

Merge branch 'master' into improve-package-json-new-scripts

This commit is contained in:
pmario 2024-11-01 17:03:09 +01:00
commit e61c269110
57 changed files with 684 additions and 430 deletions

View File

@ -175,6 +175,8 @@ Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description: Update addres
Settings/PerformanceInstrumentation/Caption: Performance Instrumentation Settings/PerformanceInstrumentation/Caption: Performance Instrumentation
Settings/PerformanceInstrumentation/Hint: Displays performance statistics in the browser developer console. Requires reload to take effect Settings/PerformanceInstrumentation/Hint: Displays performance statistics in the browser developer console. Requires reload to take effect
Settings/PerformanceInstrumentation/Description: Enable performance instrumentation Settings/PerformanceInstrumentation/Description: Enable performance instrumentation
Settings/RecentLimit/Caption: Recent Tab Limit
Settings/RecentLimit/Hint: Maximum number of tiddlers to be displayed under the sidebar "Recent" tab
Settings/ToolbarButtonStyle/Caption: Toolbar Button Style Settings/ToolbarButtonStyle/Caption: Toolbar Button Style
Settings/ToolbarButtonStyle/Hint: Choose the style for toolbar buttons: Settings/ToolbarButtonStyle/Hint: Choose the style for toolbar buttons:
Settings/ToolbarButtonStyle/Styles/Borderless: Borderless Settings/ToolbarButtonStyle/Styles/Borderless: Borderless

View File

@ -24,7 +24,7 @@ var Command = function(params,commander) {
Command.prototype.execute = function() { Command.prototype.execute = function() {
// Get the build targets defined in the wiki // Get the build targets defined in the wiki
var buildTargets = $tw.boot.wikiInfo.build; var buildTargets = $tw.boot.wikiInfo && $tw.boot.wikiInfo.build;
if(!buildTargets) { if(!buildTargets) {
return "No build targets defined"; return "No build targets defined";
} }

View File

@ -56,36 +56,64 @@ Object.defineProperty(TW_TextNode.prototype, "formattedTextContent", {
} }
}); });
var TW_Element = function(tag,namespace) { var TW_Style = function(el) {
// Define the internal style object
var styleObject = {
// Method to get the entire style object
get: function() {
return el._style;
},
// Method to set styles using a string (e.g. "color:red; background-color:blue;")
set: function(str) {
var self = this;
str = str || "";
$tw.utils.each(str.split(";"),function(declaration) {
var parts = declaration.split(":"),
name = $tw.utils.trim(parts[0]),
value = $tw.utils.trim(parts[1]);
if(name && value) {
el._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;
}
});
},
// Method to set a specific property without transforming the property name, such as a custom property
setProperty: function(name, value) {
el._style[name] = value;
}
};
// Return a Proxy to handle direct access to individual style properties
return new Proxy(styleObject, {
get: function(target, property) {
// If the property exists on styleObject, return it (get, set, setProperty methods)
if (property in target) {
return target[property];
}
// Otherwise, return the corresponding property from _style
return el._style[$tw.utils.convertStyleNameToPropertyName(property)] || "";
},
set: function(target, property, value) {
// Set the property in _style
el._style[$tw.utils.convertStyleNameToPropertyName(property)] = value;
return true;
}
});
};
var TW_Element = function(tag, namespace) {
bumpSequenceNumber(this); bumpSequenceNumber(this);
this.isTiddlyWikiFakeDom = true; this.isTiddlyWikiFakeDom = true;
this.tag = tag; this.tag = tag;
this.attributes = {}; this.attributes = {};
this.isRaw = false; this.isRaw = false;
this.children = []; this.children = [];
this._style = {}; this._style = {}; // Internal style object
this.style = new TW_Style(this); // Proxy for style management
this.namespaceURI = namespace || "http://www.w3.org/1999/xhtml"; this.namespaceURI = namespace || "http://www.w3.org/1999/xhtml";
}; };
Object.setPrototypeOf(TW_Element.prototype,TW_Node.prototype);
Object.defineProperty(TW_Element.prototype, "style", { Object.setPrototypeOf(TW_Element.prototype,TW_Node.prototype);
get: function() {
return this._style;
},
set: function(str) {
var self = this;
str = str || "";
$tw.utils.each(str.split(";"),function(declaration) {
var parts = declaration.split(":"),
name = $tw.utils.trim(parts[0]),
value = $tw.utils.trim(parts[1]);
if(name && value) {
self._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;
}
});
}
});
Object.defineProperty(TW_Element.prototype, "nodeType", { Object.defineProperty(TW_Element.prototype, "nodeType", {
get: function() { get: function() {
@ -105,7 +133,7 @@ TW_Element.prototype.setAttribute = function(name,value) {
throw "Cannot setAttribute on a raw TW_Element"; throw "Cannot setAttribute on a raw TW_Element";
} }
if(name === "style") { if(name === "style") {
this.style = value; this.style.set(value);
} else { } else {
this.attributes[name] = value + ""; this.attributes[name] = value + "";
} }

View File

@ -125,11 +125,23 @@ DroppableWidget.prototype.handleDropEvent = function(event) {
// Remove highlighting // Remove highlighting
$tw.utils.removeClass(this.domNodes[0],"tc-dragover"); $tw.utils.removeClass(this.domNodes[0],"tc-dragover");
// Try to import the various data types we understand // Try to import the various data types we understand
$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) { if(this.droppableActions) {
fieldsArray.forEach(function(fields) { $tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {
self.performActions(fields.title || fields.text,event); fieldsArray.forEach(function(fields) {
self.performActions(fields.title || fields.text,event);
});
}); });
}); }
// Send a TitleList to performListActions
if(this.droppableListActions) {
$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {
var titleList = [];
fieldsArray.forEach(function(fields) {
titleList.push(fields.title || fields.text);
});
self.performListActions($tw.utils.stringifyList(titleList),event);
});
}
// Tell the browser that we handled the drop // Tell the browser that we handled the drop
event.preventDefault(); event.preventDefault();
// Stop the drop ripple up to any parent handlers // Stop the drop ripple up to any parent handlers
@ -137,6 +149,13 @@ DroppableWidget.prototype.handleDropEvent = function(event) {
return false; return false;
}; };
DroppableWidget.prototype.performListActions = function(titleList,event) {
if(this.droppableListActions) {
var modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);
this.invokeActionString(this.droppableListActions,this,event,{actionTiddlerList: titleList, modifier: modifierKey});
}
};
DroppableWidget.prototype.performActions = function(title,event) { DroppableWidget.prototype.performActions = function(title,event) {
if(this.droppableActions) { if(this.droppableActions) {
var modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event); var modifierKey = $tw.keyboardManager.getEventModifierKeyDescriptor(event);
@ -149,6 +168,7 @@ Compute the internal state of the widget
*/ */
DroppableWidget.prototype.execute = function() { DroppableWidget.prototype.execute = function() {
this.droppableActions = this.getAttribute("actions"); this.droppableActions = this.getAttribute("actions");
this.droppableListActions = this.getAttribute("listActions");
this.droppableEffect = this.getAttribute("effect","copy"); this.droppableEffect = this.getAttribute("effect","copy");
this.droppableTag = this.getAttribute("tag"); this.droppableTag = this.getAttribute("tag");
this.droppableEnable = (this.getAttribute("enable") || "yes") === "yes"; this.droppableEnable = (this.getAttribute("enable") || "yes") === "yes";
@ -168,7 +188,8 @@ Selectively refreshes the widget if needed. Returns true if the widget or any of
*/ */
DroppableWidget.prototype.refresh = function(changedTiddlers) { DroppableWidget.prototype.refresh = function(changedTiddlers) {
var changedAttributes = this.computeAttributes(); var changedAttributes = this.computeAttributes();
if(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass || changedAttributes.actions || changedAttributes.effect) { if(changedAttributes.tag || changedAttributes.enable || changedAttributes.disabledClass ||
changedAttributes.actions|| changedAttributes.listActions || changedAttributes.effect) {
this.refreshSelf(); this.refreshSelf();
return true; return true;
} else { } else {

View File

@ -65,6 +65,16 @@ GenesisWidget.prototype.execute = function() {
children: this.parseTreeNode.children || [], children: this.parseTreeNode.children || [],
isNotRemappable: !this.genesisRemappable isNotRemappable: !this.genesisRemappable
}]; }];
// Apply attributes in $names/$values
this.attributeNames = [];
this.attributeValues = [];
if(this.genesisNames && this.genesisValues) {
this.attributeNames = this.wiki.filterTiddlers(self.genesisNames,this);
this.attributeValues = this.wiki.filterTiddlers(self.genesisValues,this);
$tw.utils.each(this.attributeNames,function(varname,index) {
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],varname,self.attributeValues[index] || "");
});
}
// Apply explicit attributes // Apply explicit attributes
$tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(attribute) { $tw.utils.each($tw.utils.getOrderedAttributesFromParseTreeNode(this.parseTreeNode),function(attribute) {
var name = attribute.name; var name = attribute.name;
@ -79,16 +89,6 @@ GenesisWidget.prototype.execute = function() {
} }
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],$tw.utils.extend({},attribute,{name: name})); $tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],$tw.utils.extend({},attribute,{name: name}));
}); });
// Apply attributes in $names/$values
this.attributeNames = [];
this.attributeValues = [];
if(this.genesisNames && this.genesisValues) {
this.attributeNames = this.wiki.filterTiddlers(self.genesisNames,this);
this.attributeValues = this.wiki.filterTiddlers(self.genesisValues,this);
$tw.utils.each(this.attributeNames,function(varname,index) {
$tw.utils.addAttributeToParseTreeNode(parseTreeNodes[0],varname,self.attributeValues[index] || "");
});
}
// Construct the child widgets // Construct the child widgets
this.makeChildWidgets(parseTreeNodes); this.makeChildWidgets(parseTreeNodes);
}; };

View File

@ -428,6 +428,11 @@ Widget.prototype.assignAttributes = function(domNode,options) {
destPrefix = options.destPrefix || "", destPrefix = options.destPrefix || "",
EVENT_ATTRIBUTE_PREFIX = "on"; EVENT_ATTRIBUTE_PREFIX = "on";
var assignAttribute = function(name,value) { var assignAttribute = function(name,value) {
// Process any CSS custom properties
if(name.substr(0,2) === "--" && name.length > 2) {
domNode.style.setProperty(name,value);
return;
}
// Process any style attributes before considering sourcePrefix and destPrefix // Process any style attributes before considering sourcePrefix and destPrefix
if(name.substr(0,6) === "style." && name.length > 6) { if(name.substr(0,6) === "style." && name.length > 6) {
domNode.style[$tw.utils.unHyphenateCss(name.substr(6))] = value; domNode.style[$tw.utils.unHyphenateCss(name.substr(6))] = value;

View File

@ -2,18 +2,28 @@ title: $:/core/ui/AdvancedSearch/Filter
tags: $:/tags/AdvancedSearch tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/Filter/Caption}} caption: {{$:/language/Search/Filter/Caption}}
\define lingo-base() $:/language/Search/ \procedure lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after") \procedure set-next-input-tab()
<$macrocall $name="change-input-tab" <$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803" stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch" tag="$:/tags/AdvancedSearch"
beforeafter="$beforeafter$" beforeafter="after"
defaultState="$:/core/ui/AdvancedSearch/System" defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>" actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"
/> />
\end \end
\define cancel-search-actions() \procedure set-previous-input-tab()
<$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch"
beforeafter="before"
defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"
/>
\end
\procedure cancel-search-actions()
\whitespace trim \whitespace trim
<$list filter="[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]"> <$list filter="[{$:/temp/advancedsearch/input}!match{$:/temp/advancedsearch}]">
<$list-empty> <$list-empty>
@ -24,30 +34,30 @@ caption: {{$:/language/Search/Filter/Caption}}
</$list> </$list>
\end \end
\define input-accept-actions() \procedure input-accept-actions()
\whitespace trim \whitespace trim
<$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"> <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]">
<$list-empty> <$list-empty>
<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]"> <$list filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]">
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/> <$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list> </$list>
<$/list-empty> <$/list-empty>
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/> <$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list> </$list>
\end \end
\define input-accept-variant-actions() \procedure input-accept-variant-actions()
\whitespace trim \whitespace trim
<$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"> <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]">
<$list-empty> <$list-empty>
<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]"> <$list filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]">
<$list filter="[<__tiddler__>get[text]minlength[1]]"> <$list filter="[<__tiddler__>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/> <$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
</$list> </$list>
</$list> </$list>
</$list-empty> </$list-empty>
<$list filter="[<__tiddler__>get[text]minlength[1]]"> <$list filter="[<tiddler>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/> <$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
</$list> </$list>
</$list> </$list>
\end \end
@ -58,8 +68,8 @@ caption: {{$:/language/Search/Filter/Caption}}
<div class="tc-search tc-advanced-search"> <div class="tc-search tc-advanced-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>> class="tc-small-gap-right"> <$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>> class="tc-small-gap-right">
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>> <$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$macrocall $name="keyboard-driven-input" <$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input" tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch" storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh" refreshTitle="$:/temp/advancedsearch/refresh"
@ -84,7 +94,7 @@ caption: {{$:/language/Search/Filter/Caption}}
<$set name="resultCount" value="<$count filter={{$:/temp/advancedsearch}}/>"> <$set name="resultCount" value="<$count filter={{$:/temp/advancedsearch}}/>">
<p><<lingo Filter/Matches>></p> <p><<lingo Filter/Matches>></p>
<$list filter={{$:/temp/advancedsearch}}> <$list filter={{$:/temp/advancedsearch}}>
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}> <span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/> <$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span> </span>
</$list> </$list>

View File

@ -3,18 +3,27 @@ tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/Shadows/Caption}} caption: {{$:/language/Search/Shadows/Caption}}
first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]
\define lingo-base() $:/language/Search/ \procedure lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after") \procedure set-next-input-tab()
<$macrocall $name="change-input-tab" <$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803" stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch" tag="$:/tags/AdvancedSearch"
beforeafter="$beforeafter$" beforeafter="after"
defaultState="$:/core/ui/AdvancedSearch/System" defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/> actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\end \end
\define cancel-search-actions() \procedure set-previous-input-tab()
<$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch"
beforeafter="before"
defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\end
\procedure cancel-search-actions()
\whitespace trim \whitespace trim
<$list <$list
filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]"
@ -25,22 +34,22 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
<$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/> <$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
\end \end
\define input-accept-actions() \procedure input-accept-actions()
\whitespace trim \whitespace trim
<$list <$list
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>"> emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>">
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/> <$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list> </$list>
\end \end
\define input-accept-variant-actions() \procedure input-accept-variant-actions()
\whitespace trim \whitespace trim
<$list <$list
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$list filter='[<__tiddler__>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>"> emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$list filter='[<tiddler>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<tiddler>get[text]] }}}/></$list></$list>">
<$list filter="[<__tiddler__>get[text]minlength[1]]"> <$list filter="[<tiddler>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/> <$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
</$list></$list> </$list></$list>
\end \end
@ -50,8 +59,8 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
<div class="tc-search"> <div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>> <$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$macrocall $name="keyboard-driven-input" <$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input" tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch" storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh" refreshTitle="$:/temp/advancedsearch/refresh"
@ -79,7 +88,7 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem"> <$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem">
<$set name="resultCount" value={{{ [all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] +[count[]]}}}> <$set name="resultCount" value={{{ [all[shadows]search{$:/temp/advancedsearch}] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :and[count[]]}}}>
<div class="tc-search-results"> <div class="tc-search-results">
@ -89,8 +98,8 @@ first-search-filter: [all[shadows]search<userInput>sort[title]limit[250]] -[[$:/
<<lingo Shadows/Matches>> <<lingo Shadows/Matches>>
<%endif%> <%endif%>
<$list filter="[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]]"> <$list filter="[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] :else[[$:/temp/advancedsearch]] :else[[$:/temp/advancedsearch/input]]">
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}> <span class={{{[<currentTiddler>addsuffix[-primaryList]] :else[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/> <$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span> </span>
</$list> </$list>

View File

@ -2,16 +2,20 @@ title: $:/core/ui/AdvancedSearch/Standard
tags: $:/tags/AdvancedSearch tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/Standard/Caption}} caption: {{$:/language/Search/Standard/Caption}}
\define lingo-base() $:/language/Search/ \procedure lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab--1498284803" tag="$:/tags/AdvancedSearch" beforeafter="$beforeafter$" defaultState="$:/core/ui/AdvancedSearch/System" actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/> \procedure set-next-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab--1498284803" tag="$:/tags/AdvancedSearch" beforeafter="after" defaultState="$:/core/ui/AdvancedSearch/System" actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\define next-search-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab/search-results/advancedsearch" tag="$:/tags/SearchResults" beforeafter="$beforeafter$" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<nextTab>>/>"/> \procedure set-previous-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab--1498284803" tag="$:/tags/AdvancedSearch" beforeafter="before" defaultState="$:/core/ui/AdvancedSearch/System" actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\define cancel-search-actions() <$list filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" emptyMessage="<$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]' />"><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/></$list><$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/> \procedure next-search-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/advancedsearch" tag="$:/tags/SearchResults" beforeafter="after" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<nextTab>>/>"/>
\define input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list> \procedure previous-search-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/advancedsearch" tag="$:/tags/SearchResults" beforeafter="before" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<nextTab>>/>"/>
\define input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$list filter='[<__tiddler__>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>"><$list filter="[<__tiddler__>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list> \procedure cancel-search-actions() <$list filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" emptyMessage="<$action-deletetiddler $filter='[[$:/temp/advancedsearch]] [[$:/temp/advancedsearch/input]] [[$:/temp/advancedsearch/selected-item]]' />"><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/advancedsearch}}/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/></$list><$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
\procedure input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>"><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>
\procedure input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$list filter='[<tiddler>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<tiddler>get[text]] }}}/></$list></$list>"><$list filter="[<tiddler>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/></$list></$list>
\whitespace trim \whitespace trim
@ -19,10 +23,10 @@ caption: {{$:/language/Search/Standard/Caption}}
<div class="tc-search"> <div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>> <$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$keyboard key="shift-alt-Right" actions=<<next-search-tab>>> <$keyboard key="shift-alt-Right" actions=<<next-search-tab>>>
<$keyboard key="shift-alt-Left" actions=<<next-search-tab "before">>> <$keyboard key="shift-alt-Left" actions=<<previous-search-tab>>>
<$macrocall $name="keyboard-driven-input" <$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input" tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch" storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh" refreshTitle="$:/temp/advancedsearch/refresh"
@ -33,7 +37,7 @@ caption: {{$:/language/Search/Standard/Caption}}
inputCancelActions=<<cancel-search-actions>> inputCancelActions=<<cancel-search-actions>>
inputAcceptActions=<<input-accept-actions>> inputAcceptActions=<<input-accept-actions>>
inputAcceptVariantActions=<<input-accept-variant-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>>
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]" configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]"
filterMinLength={{$:/config/Search/MinLength}}/> filterMinLength={{$:/config/Search/MinLength}}/>
</$keyboard> </$keyboard>
</$keyboard> </$keyboard>
@ -55,13 +59,13 @@ caption: {{$:/language/Search/Standard/Caption}}
variable="listItem"> variable="listItem">
<$vars <$vars
userInput={{{ [[$:/temp/advancedsearch]get[text]] }}} userInput={{{ [[$:/temp/advancedsearch]get[text]] }}}
configTiddler={{{ [[$:/state/advancedsearch/standard/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} configTiddler={{{ [[$:/state/advancedsearch/standard/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}}
searchListState="$:/temp/advancedsearch/selected-item"> searchListState="$:/temp/advancedsearch/selected-item">
<$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]"> <$list filter="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]">
<$list-empty> <$list-empty>
<$list filter='[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]'><$transclude mode="block"/></$list> <$list filter='[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]'><$transclude mode="block"/></$list>
</$list-empty> </$list-empty>
<$macrocall $name="tabs" <$transclude $variable="tabs"
tabsList="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]" tabsList="[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]"
default={{$:/config/SearchResults/Default}} default={{$:/config/SearchResults/Default}}
actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<currentTab>>/>" actions="<$action-setfield $tiddler='$:/state/advancedsearch/standard/currentTab' text=<<currentTab>>/>"

View File

@ -1,19 +1,28 @@
title: $:/core/ui/AdvancedSearch/System title: $:/core/ui/AdvancedSearch/System
tags: $:/tags/AdvancedSearch tags: $:/tags/AdvancedSearch
caption: {{$:/language/Search/System/Caption}} caption: {{$:/language/Search/System/Caption}}
first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]] first-search-filter: [is[system]search<userInput>sort[title]limit[250]] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :except[[$:/temp/advancedsearch/selected-item]]
\define lingo-base() $:/language/Search/ \procedure lingo-base() $:/language/Search/
\define set-next-input-tab(beforeafter:"after",stateTitle,tag,defaultState,currentTabTiddler) \procedure set-next-input-tab()
<$macrocall $name="change-input-tab" <$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803" stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch" tag="$:/tags/AdvancedSearch"
beforeafter="$beforeafter$" beforeafter="after"
defaultState="$:/core/ui/AdvancedSearch/System" defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/> actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\end \end
\define cancel-search-actions() \procedure set-previous-input-tab()
<$transclude $variable="change-input-tab"
stateTitle="$:/state/tab--1498284803"
tag="$:/tags/AdvancedSearch"
beforeafter="before"
defaultState="$:/core/ui/AdvancedSearch/System"
actions="<$action-setfield $tiddler='$:/state/advancedsearch/currentTab' text=<<nextTab>>/>"/>
\end
\procedure cancel-search-actions()
\whitespace trim \whitespace trim
<$list <$list
filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]" filter="[{$:/temp/advancedsearch}!match{$:/temp/advancedsearch/input}]"
@ -24,22 +33,22 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
<$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/> <$action-sendmessage $message="tm-focus-selector" $param=".tc-advanced-search input"/>
\end \end
\define input-accept-actions() \procedure input-accept-actions()
\whitespace trim \whitespace trim
<$list <$list
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>"> emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>">
<$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/> <$action-navigate $to={{{ [<tiddler>get[text]] }}}/>
</$list> </$list>
\end \end
\define input-accept-variant-actions() \procedure input-accept-variant-actions()
\whitespace trim \whitespace trim
<$list <$list
filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]"
emptyMessage="<$list filter='[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]'><$list filter='[<__tiddler__>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>"> emptyMessage="<$list filter='[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]'><$list filter='[<tiddler>get[text]minlength[1]]'><$action-sendmessage $message='tm-edit-tiddler' $param={{{ [<tiddler>get[text]] }}}/></$list></$list>">
<$list filter="[<__tiddler__>get[text]minlength[1]]"> <$list filter="[<tiddler>get[text]minlength[1]]">
<$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/> <$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/>
</$list></$list> </$list></$list>
\end \end
@ -49,8 +58,8 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
<div class="tc-search"> <div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>> <$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$macrocall $name="keyboard-driven-input" <$transclude $variable="keyboard-driven-input"
tiddler="$:/temp/advancedsearch/input" tiddler="$:/temp/advancedsearch/input"
storeTitle="$:/temp/advancedsearch" storeTitle="$:/temp/advancedsearch"
refreshTitle="$:/temp/advancedsearch/refresh" refreshTitle="$:/temp/advancedsearch/refresh"
@ -78,7 +87,7 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
<$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem"> <$list filter="[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="<div class='tc-search-results'>{{$:/language/Search/Search/TooShort}}</div>" variable="listItem">
<$set name="resultCount" value={{{ [is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]] +[count[]] }}}> <$set name="resultCount" value={{{ [is[system]search{$:/temp/advancedsearch}] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :except[[$:/temp/advancedsearch/selected-item]] +[count[]] }}}>
<div class="tc-search-results"> <div class="tc-search-results">
@ -88,8 +97,8 @@ first-search-filter: [is[system]search<userInput>sort[title]limit[250]] -[[$:/te
<<lingo System/Matches>> <<lingo System/Matches>>
<%endif%> <%endif%>
<$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]] -[[$:/temp/advancedsearch/input]] -[[$:/temp/advancedsearch/selected-item]]"> <$list filter="[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] :except[[$:/temp/advancedsearch]] :except[[$:/temp/advancedsearch/input]] :except[[$:/temp/advancedsearch/selected-item]]">
<span class={{{[<currentTiddler>addsuffix[-primaryList]] -[[$:/temp/advancedsearch/selected-item]get[text]] +[then[]else[tc-list-item-selected]] }}}> <span class={{{[<currentTiddler>addsuffix[-primaryList]] :except[[$:/temp/advancedsearch/selected-item]get[text]] :and[then[]else[tc-list-item-selected]] }}}>
<$transclude tiddler="$:/core/ui/ListItemTemplate"/> <$transclude tiddler="$:/core/ui/ListItemTemplate"/>
</span> </span>
</$list> </$list>

View File

@ -0,0 +1,10 @@
title: $:/core/ui/ControlPanel/Settings/RecentLimit
tags: $:/tags/ControlPanel/Settings
caption: {{$:/language/ControlPanel/Settings/RecentLimit/Caption}}
\whitespace trim
\procedure lingo-base() $:/language/ControlPanel/Settings/RecentLimit/
<<lingo Hint>>
|tc-table-no-border|k
|<$link to="$:/config/RecentLimit"><<lingo Caption>></$link> |<$edit-text tiddler="$:/config/RecentLimit" tag="input" type="number"/> |

View File

@ -1,35 +1,32 @@
title: $:/core/ui/EditTemplate/fields title: $:/core/ui/EditTemplate/fields
tags: $:/tags/EditTemplate tags: $:/tags/EditTemplate
\define lingo-base() $:/language/EditTemplate/ \procedure lingo-base() $:/language/EditTemplate/
\define config-title() \function tf.config-title() [[$:/config/EditTemplateFields/Visibility/]addsuffix[$(currentField)$]substitute[]get[text]]
$:/config/EditTemplateFields/Visibility/$(currentField)$
\end
\define config-filter() \function tf.config-filter() [[hide]] :except[title<tf.config-title>]
[[hide]] -[title{$(config-title)$}]
\end
<!-- Beware this is duplicated from EditTemplate.tid. For details see bug #7054 --> <!-- Beware this is duplicated from EditTemplate.tid. For details see bug #7054 -->
\define get-field-value-tiddler-filter() [subfilter<get-field-editor-filter>sha256[16]addprefix[/]addprefix<newFieldValueTiddlerPrefix>] \procedure get-field-value-tiddler-filter() [subfilter<get-field-editor-filter>sha256[16]addprefix[/]addprefix<newFieldValueTiddlerPrefix>]
\define get-field-editor-filter() [<newFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}] \procedure get-field-editor-filter() [<newFieldNameTiddler>get[text]else[]] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}]
\define current-tiddler-new-field-selector() \procedure prefix.bracket() [
[data-tiddler-title="$(currentTiddlerCSSescaped)$"] .tc-edit-field-add-name-wrapper input \procedure suffix.bracket() ]
\end
\define new-field-actions() \function tf.current-tiddler-new-field-selector() [[data-tiddler-title=]addprefix[$(prefix.bracket)$]substitute[]addsuffix<currentTiddlerCSSescaped>addsuffix[$(suffix.bracket)$]substitute[]] .tc-edit-field-add-name-wrapper input :and[join[ ]]
\procedure new-field-actions()
\whitespace trim \whitespace trim
<$action-sendmessage $message="tm-add-field" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldNameTiddler>get[text]] :map[subfilter<get-field-value-tiddler-filter>get[text]] }}}/> <$action-sendmessage $message="tm-add-field" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldNameTiddler>get[text]] :map[subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
<$set name="safeNewFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> > <$set name="safeNewFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> >
<$action-deletetiddler $filter="[<newFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix<safeNewFieldValueTiddlerPrefix>] [<storeTitle>] [<searchListState>]"/> <$action-deletetiddler $filter="[<newFieldNameTiddler>] [prefix[$:/temp/NewFieldValue]prefix<safeNewFieldValueTiddlerPrefix>] [<storeTitle>] [<searchListState>]"/>
</$set> </$set>
<$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/> <$action-sendmessage $message="tm-focus-selector" $param=<<tf.current-tiddler-new-field-selector>>/>
\end \end
\define delete-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]"/> \procedure delete-state-tiddlers() <$action-deletetiddler $filter="[<newFieldNameTiddler>] [<storeTitle>] [<searchListState>]"/>
\define cancel-search-actions-inner() \procedure cancel-search-actions-inner()
\whitespace trim \whitespace trim
<$list <$list
filter="[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]" filter="[<storeTitle>has[text]] [<newFieldNameTiddler>has[text]]"
@ -39,7 +36,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$
</$list> </$list>
\end \end
\define cancel-search-actions() \procedure cancel-search-actions()
\whitespace trim \whitespace trim
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}> <$set name="userInput" value={{{ [<storeTitle>get[text]] }}}>
<$list <$list
@ -50,7 +47,7 @@ $:/config/EditTemplateFields/Visibility/$(currentField)$
</$set> </$set>
\end \end
\define new-field() \procedure new-field()
\whitespace trim \whitespace trim
<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}> <$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>
<$reveal type="nomatch" text="" default=<<name>>> <$reveal type="nomatch" text="" default=<<name>>>
@ -75,15 +72,15 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
<$set name="newFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> > <$set name="newFieldValueTiddlerPrefix" value=<<newFieldValueTiddlerPrefix>> emptyValue=<<qualify "$:/temp/NewFieldValue">> >
<div class="tc-edit-fields"> <div class="tc-edit-fields">
<table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] +[count[]!match[0]] +[then[tc-edit-fields]] ~[[tc-edit-fields tc-edit-fields-small]] }}}> <table class={{{ [all[current]fields[]] :filter[lookup[$:/config/EditTemplateFields/Visibility/]!match[hide]] :and[count[]!match[0]] :and[then[tc-edit-fields]] :else[[tc-edit-fields tc-edit-fields-small]] }}}>
<tbody> <tbody>
<$list filter="[all[current]fields[]] +[sort[title]]" variable="currentField" storyview="pop"> <$list filter="[all[current]fields[]] :and[sort[title]]" variable="currentField" storyview="pop">
<$list filter=<<config-filter>> variable="temp"> <$list filter=<<tf.config-filter>> variable="temp">
<tr class="tc-edit-field"> <tr class="tc-edit-field">
<td class="tc-edit-field-name"> <td class="tc-edit-field-name">
<$text text=<<currentField>>/>:</td> <$text text=<<currentField>>/>:</td>
<td class="tc-edit-field-value"> <td class="tc-edit-field-value">
<$keyboard key="((delete-field))" actions="""<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<current-tiddler-new-field-selector>>/></$set>"""> <$keyboard key="((delete-field))" actions="""<$action-deletefield $field=<<currentField>>/><$set name="currentTiddlerCSSescaped" value={{{ [<currentTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<tf.current-tiddler-new-field-selector>>/></$set>""">
<$transclude tiddler={{{ [<currentField>] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}] }}} /> <$transclude tiddler={{{ [<currentField>] :cascade[all[shadows+tiddlers]tag[$:/tags/FieldEditorFilter]!is[draft]get[text]] :and[!is[blank]else{$:/core/ui/EditTemplate/fieldEditor/default}] }}} />
</$keyboard> </$keyboard>
</td> </td>
@ -107,10 +104,10 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
</em> </em>
<$vars refreshTitle=<<qualify "$:/temp/fieldname/refresh">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>> <$vars refreshTitle=<<qualify "$:/temp/fieldname/refresh">> storeTitle=<<newFieldNameInputTiddler>> searchListState=<<newFieldNameSelectionTiddler>>>
<div class="tc-edit-field-add-name-wrapper"> <div class="tc-edit-field-add-name-wrapper">
<$macrocall $name="keyboard-driven-input" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>> <$transclude $variable="keyboard-driven-input" tiddler=<<newFieldNameTiddler>> storeTitle=<<storeTitle>> refreshTitle=<<refreshTitle>>
selectionStateTitle=<<searchListState>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} selectionStateTitle=<<searchListState>> tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}}
focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}
focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}} cancelPopups="yes" focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] :else[[false]] }}} cancelPopups="yes"
configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" inputCancelActions=<<cancel-search-actions>> /> configTiddlerFilter="[[$:/config/EditMode/fieldname-filter]]" inputCancelActions=<<cancel-search-actions>> />
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button> <$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default=""> <$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
@ -121,8 +118,8 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
<<lingo Fields/Add/Dropdown/User>> <<lingo Fields/Add/Dropdown/User>>
</div> </div>
<$set name="newFieldName" value={{{ [<storeTitle>get[text]] }}}> <$set name="newFieldName" value={{{ [<storeTitle>get[text]] }}}>
<$list filter="[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type" variable="currentField"> <$list filter="[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] :except[[created]] :except[[creator]] :except[[draft.of]] :except[[draft.title]] :except[[modified]] :except[[modifier]] :except[[tags]] :except[[text]] :except[[title]] :except[[type]]" variable="currentField">
<$list filter="[<currentField>addsuffix[-primaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>"""> <$list filter="[<currentField>addsuffix[-primaryList]] :except[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>> <$link to=<<currentField>>>
<$text text=<<currentField>>/> <$text text=<<currentField>>/>
</$link> </$link>
@ -131,8 +128,8 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
<div class="tc-dropdown-item"> <div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/System>> <<lingo Fields/Add/Dropdown/System>>
</div> </div>
<$list filter="[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField"> <$list filter="[fields[]search:title<newFieldName>sort[]] :except[!is[shadow]!is[system]fields[]]" variable="currentField">
<$list filter="[<currentField>addsuffix[-secondaryList]] -[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>"""> <$list filter="[<currentField>addsuffix[-secondaryList]] :except[<searchListState>get[text]]" emptyMessage="""<$link to=<<currentField>> class="tc-list-item-selected"><$text text=<<currentField>>/></$link>""">
<$link to=<<currentField>>> <$link to=<<currentField>>>
<$text text=<<currentField>>/> <$text text=<<currentField>>/>
</$link> </$link>
@ -151,7 +148,7 @@ $value={{{ [subfilter<get-field-value-tiddler-filter>get[text]] }}}/>
</$keyboard> </$keyboard>
</span> </span>
<span class="tc-edit-field-add-button"> <span class="tc-edit-field-add-button">
<$macrocall $name="new-field"/> <$transclude $variable="new-field"/>
</span> </span>
</$let> </$let>
</$vars> </$vars>

View File

@ -2,15 +2,15 @@ title: $:/core/ui/EditTemplate/type
tags: $:/tags/EditTemplate tags: $:/tags/EditTemplate
first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>] first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[description]sort[group-sort]removeprefix[$:/language/Docs/Types/]search<userInput>]
\define lingo-base() $:/language/EditTemplate/ \procedure lingo-base() $:/language/EditTemplate/
\define input-cancel-actions() <$list filter="[<storeTitle>get[text]] [<currentTiddler>get[type]] +[limit[1]]" emptyMessage="""<<cancel-delete-tiddler-actions "cancel">>"""><$action-sendmessage $message="tm-remove-field" $param="type"/><$action-deletetiddler $filter="[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]"/></$list> \procedure input-cancel-actions() <$list filter="[<storeTitle>get[text]] [<currentTiddler>get[type]] :and[limit[1]]" emptyMessage="""<<cancel-delete-tiddler-actions "cancel">>"""><$action-sendmessage $message="tm-remove-field" $param="type"/><$action-deletetiddler $filter="[<typeInputTiddler>] [<refreshTitle>] [<typeSelectionTiddler>]"/></$list>
\whitespace trim \whitespace trim
<$set name="refreshTitle" value=<<qualify "$:/temp/type-search/refresh">>> <$set name="refreshTitle" value=<<qualify "$:/temp/type-search/refresh">>>
<div class="tc-edit-type-selector-wrapper"> <div class="tc-edit-type-selector-wrapper">
<em class="tc-edit tc-small-gap-right"><<lingo Type/Prompt>></em> <em class="tc-edit tc-small-gap-right"><<lingo Type/Prompt>></em>
<div class="tc-type-selector-dropdown-wrapper"> <div class="tc-type-selector-dropdown-wrapper">
<div class="tc-type-selector"><$fieldmangler> <div class="tc-type-selector"><$fieldmangler>
<$macrocall $name="keyboard-driven-input" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}} cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter="[<typeInputTiddler>] [<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]"/></$button> <$transclude $variable="keyboard-driven-input" tiddler=<<currentTiddler>> storeTitle=<<typeInputTiddler>> refreshTitle=<<refreshTitle>> selectionStateTitle=<<typeSelectionTiddler>> field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify "$:/state/popup/type-dropdown">> class="tc-edit-typeeditor tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] :else[[false]] }}} cancelPopups="yes" configTiddlerFilter="[[$:/core/ui/EditTemplate/type]]" inputCancelActions=<<input-cancel-actions>>/><$button popup=<<qualify "$:/state/popup/type-dropdown">> class="tc-btn-invisible tc-btn-dropdown tc-small-gap" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button><$button message="tm-remove-field" param="type" class="tc-btn-invisible tc-btn-icon" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}<$action-deletetiddler $filter="[<typeInputTiddler>] [<storeTitle>] [<refreshTitle>] [<selectionStateTitle>]"/></$button>
</$fieldmangler></div> </$fieldmangler></div>
<div class="tc-block-dropdown-wrapper"> <div class="tc-block-dropdown-wrapper">
@ -23,7 +23,7 @@ first-search-filter: [all[shadows+tiddlers]prefix[$:/language/Docs/Types/]sort[d
<$text text={{!!group}}/> <$text text={{!!group}}/>
</div> </div>
<$set name="userInput" value={{{ [<typeInputTiddler>get[text]] }}}> <$set name="userInput" value={{{ [<typeInputTiddler>get[text]] }}}>
<$list filter="[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]] +[removeprefix[$:/language/Docs/Types/]] +[search<userInput>]"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] -[<typeSelectionTiddler>get[text]] +[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="description"/><$text text=" "/>(<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="name"/>)</$link></span> <$list filter="[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] :and[sort[description]] :and[removeprefix[$:/language/Docs/Types/]] :and[search<userInput>]"><span class={{{ [<currentTiddler>addsuffix[-primaryList]] :except[<typeSelectionTiddler>get[text]] :and[then[]else[tc-list-item-selected]] }}}><$link to={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]get[name]] }}}><$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="description"/><$text text=" "/>(<$view tiddler={{{ [<currentTiddler>addprefix[$:/language/Docs/Types/]] }}} field="name"/>)</$link></span>
</$list> </$list>
</$set> </$set>
</$list> </$list>

View File

@ -1,44 +1,49 @@
title: $:/core/ui/EditorToolbar/link-dropdown title: $:/core/ui/EditorToolbar/link-dropdown
\define lingo-base() $:/language/Buttons/Link/ \procedure lingo-base() $:/language/Buttons/Link/
\define add-link-actions() \procedure add-link-actions()
\whitespace trim \whitespace trim
<$action-sendmessage $message="tm-edit-text-operation" $param="make-link" text={{$(linkTiddler)$}} /> <$action-sendmessage $message="tm-edit-text-operation" $param="make-link" text={{{ [<linkTiddler>get[text]] }}} />
<$action-deletetiddler $filter="[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]"/> <$action-deletetiddler $filter="[<dropdown-state>] [<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]"/>
\end \end
\define get-focus-selector() [data-tiddler-title="$(cssEscapedTitle)$"] .tc-create-wikitext-link input \procedure prefix.bracket() [
\procedure suffix.bracket() ]
\define cancel-search-actions-inner() \function tf.get-focus-selector() [[data-tiddler-title=]addprefix[$(prefix.bracket)$]substitute[]addsuffix<cssEscapedTitle>addsuffix[$(suffix.bracket)$]substitute[]] .tc-create-wikitext-link input :and[join[ ]]
\procedure cancel-search-actions-inner()
<$set name="userInput" value={{{ [<storeTitle>get[text]] }}}><$list filter="[<searchTiddler>get[text]!match<userInput>]" emptyMessage="<$action-deletetiddler $filter='[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]'/>"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/></$list></$set> <$set name="userInput" value={{{ [<storeTitle>get[text]] }}}><$list filter="[<searchTiddler>get[text]!match<userInput>]" emptyMessage="<$action-deletetiddler $filter='[<searchTiddler>] [<linkTiddler>] [<storeTitle>] [<searchListState>]'/>"><$action-setfield $tiddler=<<searchTiddler>> text=<<userInput>>/><$action-setfield $tiddler=<<refreshTitle>> text="yes"/></$list></$set>
\end \end
\define cancel-search-actions() <$list filter="[<storeTitle>!has[text]] +[<searchTiddler>!has[text]]" emptyMessage="<<cancel-search-actions-inner>>"><$action-sendmessage $message="tm-edit-text-operation" $param="focus-editor"/></$list> \procedure cancel-search-actions() <$list filter="[<storeTitle>!has[text]] :and[<searchTiddler>!has[text]]" emptyMessage="<<cancel-search-actions-inner>>"><$action-sendmessage $message="tm-edit-text-operation" $param="focus-editor"/></$list>
\define external-link() \procedure external-link()
\whitespace trim \whitespace trim
<$button class="tc-btn-invisible tc-btn-mini" style="width: auto; display: inline-block; background-colour: inherit;" actions=<<add-link-actions>>> <$button class="tc-btn-invisible tc-btn-mini" style="width: auto; display: inline-block; background-colour: inherit;" actions=<<add-link-actions>>>
{{$:/core/images/chevron-right}} {{$:/core/images/chevron-right}}
</$button> </$button>
\end \end
\define set-next-input-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="$beforeafter$" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/search/currentTab' text=<<nextTab>>/>"/> \procedure set-next-input-tab() <$transclude $variable="change-input-tab-after" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/search/currentTab' text=<<nextTab>>/>"/>
\define body(config-title) \procedure set-previous-input-tab() <$transclude $variable="change-input-tab-before" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" defaultState={{$:/config/SearchResults/Default}} actions="<$action-setfield $tiddler='$:/state/search/currentTab' text=<<nextTab>>/>"/>
\procedure body(config-title)
\whitespace trim \whitespace trim
''<<lingo Hint>>'' ''<<lingo Hint>>''
<$vars searchTiddler="""$config-title$/search""" linkTiddler="""$config-title$/link""" linktext="" searchListState=<<qualify "$:/temp/link-search/selected-item">> refreshTitle=<<qualify "$:/temp/link-search/refresh">> storeTitle=<<qualify "$:/temp/link-search/input">>> <$vars searchTiddler={{{ [<config-title>addsuffix[/search]] }}} linkTiddler={{{ [<config-title>addsuffix[/link]] }}} linktext="" searchListState=<<qualify "$:/temp/link-search/selected-item">> refreshTitle=<<qualify "$:/temp/link-search/refresh">> storeTitle=<<qualify "$:/temp/link-search/input">>>
<$vars linkTiddler=<<searchTiddler>>> <$vars linkTiddler=<<searchTiddler>>>
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">> class="tc-create-wikitext-link"> <$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>> class="tc-create-wikitext-link">
<$macrocall $name="keyboard-driven-input" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>> <$transclude $variable="keyboard-driven-input" tiddler=<<searchTiddler>> storeTitle=<<storeTitle>>
selectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type="search" filterMinLength="1" selectionStateTitle=<<searchListState>> refreshTitle=<<refreshTitle>> type="search" filterMinLength="1"
tag="input" focus="true" class="tc-popup-handle" inputCancelActions=<<cancel-search-actions>> tag="input" focus="true" class="tc-popup-handle" inputCancelActions=<<cancel-search-actions>>
inputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default="" inputAcceptActions=<<add-link-actions>> placeholder={{$:/language/Search/Search}} default=""
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]" /> configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]" />
</$keyboard> </$keyboard>
</$keyboard> </$keyboard>
&#32; &#32;
@ -46,7 +51,7 @@ title: $:/core/ui/EditorToolbar/link-dropdown
<<external-link>> <<external-link>>
&#32; &#32;
<$button class="tc-btn-invisible tc-btn-mini" style="width: auto; display: inline-block; background-colour: inherit;"> <$button class="tc-btn-invisible tc-btn-mini" style="width: auto; display: inline-block; background-colour: inherit;">
<<cancel-search-actions>><$set name="cssEscapedTitle" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<get-focus-selector>>/></$set> <<cancel-search-actions>><$set name="cssEscapedTitle" value={{{ [<storyTiddler>escapecss[]] }}}><$action-sendmessage $message="tm-focus-selector" $param=<<tf.get-focus-selector>>/></$set>
{{$:/core/images/close-button}} {{$:/core/images/close-button}}
</$button> </$button>
</$reveal> </$reveal>
@ -56,7 +61,7 @@ title: $:/core/ui/EditorToolbar/link-dropdown
<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>> <$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>
<$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}> <$vars userInput={{{ [<storeTitle>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}}>
{{$:/core/ui/SearchResults}} {{$:/core/ui/SearchResults}}
@ -70,4 +75,4 @@ title: $:/core/ui/EditorToolbar/link-dropdown
\end \end
<$macrocall $name="body" config-title=<<qualify "$:/state/Link/">>/> <$transclude $variable="body" config-title=<<qualify "$:/state/Link/">>/>

View File

@ -2,4 +2,4 @@ title: $:/core/ui/SideBar/Recent
tags: $:/tags/SideBar tags: $:/tags/SideBar
caption: {{$:/language/SideBar/Recent/Caption}} caption: {{$:/language/SideBar/Recent/Caption}}
<$macrocall $name="timeline" format={{$:/language/RecentChanges/DateFormat}}/> <$transclude $variable="timeline" format={{$:/language/RecentChanges/DateFormat}} limit={{$:/config/RecentLimit}}/>

View File

@ -3,12 +3,12 @@ tags: $:/tags/SideBarSegment
\whitespace trim \whitespace trim
\define count-popup-button() \procedure count-popup-button()
\whitespace trim \whitespace trim
<$button popup=<<qualify "$:/state/popup/search-dropdown">> class="tc-btn-invisible"> <$button popup=<<qualify "$:/state/popup/search-dropdown">> class="tc-btn-invisible">
{{$:/core/images/down-arrow}} {{$:/core/images/down-arrow}}
<$list filter="[{$(searchTiddler)$}minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem"> <$list filter="[<searchTiddler>get[text]minlength{$:/config/Search/MinLength}limit[1]]" variable="listItem">
<$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}} replaceRegexp="limit\[\d+\]"> <$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}} replaceRegexp="limit\[\d+\]">
<$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}> <$vars primaryListFilter={{{ [<configTiddler>get[first-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}} secondaryListFilter={{{ [<configTiddler>get[second-search-filter]search-replace:g:regexp<replaceRegexp>,[]] }}}>
<$set name="resultCount" value="""<$count filter="[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]"/>"""> <$set name="resultCount" value="""<$count filter="[subfilter<primaryListFilter>] [subfilter<secondaryListFilter>]"/>""">
{{$:/language/Search/Matches}} {{$:/language/Search/Matches}}
@ -19,9 +19,9 @@ tags: $:/tags/SideBarSegment
</$button> </$button>
\end \end
\define search-results-list() \procedure search-results-list()
\whitespace trim \whitespace trim
<$vars userInput={{$(searchTiddler)$}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}] }}}> <$vars userInput={{{ [<searchTiddler>get[text]] }}} configTiddler={{{ [[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}] }}}>
<$list filter="[<userInput>minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem"> <$list filter="[<userInput>minlength{$:/config/Search/MinLength}limit[1]]" emptyMessage="""<div class="tc-search-results">{{$:/language/Search/Search/TooShort}}</div>""" variable="listItem">
<$tiddler tiddler=<<configTiddler>>> <$tiddler tiddler=<<configTiddler>>>
@ -34,30 +34,32 @@ tags: $:/tags/SideBarSegment
</$vars> </$vars>
\end \end
\define cancel-search-actions() <$list filter="[<searchTiddler>get[text]!match{$:/temp/search}]" emptyMessage="""<$action-deletetiddler $filter="[[$:/temp/search]] [<searchTiddler>] [<searchListState>]"/>"""><$action-setfield $tiddler="$:/temp/search" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler="$:/temp/search/refresh" text="yes"/></$list> \procedure cancel-search-actions() <$list filter="[<searchTiddler>get[text]!match{$:/temp/search}]" emptyMessage="""<$action-deletetiddler $filter="[[$:/temp/search]] [<searchTiddler>] [<searchListState>]"/>"""><$action-setfield $tiddler="$:/temp/search" text={{{ [<searchTiddler>get[text]] }}}/><$action-setfield $tiddler="$:/temp/search/refresh" text="yes"/></$list>
\define input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]"><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list>"""><$action-navigate $to={{{ [<__tiddler__>get[text]] }}}/></$list> \procedure input-accept-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]"><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>"""><$action-navigate $to={{{ [<tiddler>get[text]] }}}/></$list>
\define input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<__tiddler__>get[text]!is[missing]] ~[<__tiddler__>get[text]is[shadow]]"><$list filter="[<__tiddler__>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list>"""><$list filter="[<__tiddler__>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<__tiddler__>get[text]] }}}/></$list></$list> \procedure input-accept-variant-actions() <$list filter="[{$:/config/Search/NavigateOnEnter/enable}match[yes]]" emptyMessage="""<$list filter="[<tiddler>get[text]!is[missing]] :else[<tiddler>get[text]is[shadow]]"><$list filter="[<tiddler>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/></$list></$list>"""><$list filter="[<tiddler>get[text]minlength[1]]"><$action-sendmessage $message="tm-edit-tiddler" $param={{{ [<tiddler>get[text]] }}}/></$list></$list>
\define set-next-input-tab(beforeafter:"after") <$macrocall $name="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="$beforeafter$" defaultState={{$:/config/SearchResults/Default}} actions="""<$action-setfield $tiddler="$:/state/search/currentTab" text=<<nextTab>>/>"""/> \procedure set-next-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="after" defaultState={{$:/config/SearchResults/Default}} actions="""<$action-setfield $tiddler="$:/state/search/currentTab" text=<<nextTab>>/>"""/>
\define advanced-search-actions() <$action-setfield $tiddler="$:/temp/advancedsearch" text={{$:/temp/search/input}}/><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to="$:/AdvancedSearch"/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/><$action-sendmessage $message="tm-focus-selector" $param="""[data-tiddler-title="$:/AdvancedSearch"] .tc-search input""" preventScroll="true"/><$action-deletetiddler $filter="$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]"/> \procedure set-previous-input-tab() <$transclude $variable="change-input-tab" stateTitle="$:/state/tab/search-results/sidebar" tag="$:/tags/SearchResults" beforeafter="before" defaultState={{$:/config/SearchResults/Default}} actions="""<$action-setfield $tiddler="$:/state/search/currentTab" text=<<nextTab>>/>"""/>
\procedure advanced-search-actions() <$action-setfield $tiddler="$:/temp/advancedsearch" text={{$:/temp/search/input}}/><$action-setfield $tiddler="$:/temp/advancedsearch/input" text={{$:/temp/search/input}}/><<delete-state-tiddlers>><$action-navigate $to="$:/AdvancedSearch"/><$action-setfield $tiddler="$:/temp/advancedsearch/refresh" text="yes"/><$action-sendmessage $message="tm-focus-selector" $param="""[data-tiddler-title="$:/AdvancedSearch"] .tc-search input""" preventScroll="true"/><$action-deletetiddler $filter="$:/temp/search $:/temp/search/input $:/temp/search/refresh [<searchListState>]"/>
<div class="tc-sidebar-lists tc-sidebar-search"> <div class="tc-sidebar-lists tc-sidebar-search">
<$vars editTiddler="$:/temp/search" searchTiddler="$:/temp/search/input" searchListState=<<qualify "$:/state/search-list/selected-item">>> <$vars editTiddler="$:/temp/search" searchTiddler="$:/temp/search/input" searchListState=<<qualify "$:/state/search-list/selected-item">>>
<div class="tc-search"> <div class="tc-search">
<$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>> <$keyboard key="((input-tab-right))" actions=<<set-next-input-tab>>>
<$keyboard key="((input-tab-left))" actions=<<set-next-input-tab "before">>> <$keyboard key="((input-tab-left))" actions=<<set-previous-input-tab>>>
<$keyboard key="((advanced-search-sidebar))" actions=<<advanced-search-actions>>> <$keyboard key="((advanced-search-sidebar))" actions=<<advanced-search-actions>>>
<form class="tc-form-inline"> <form class="tc-form-inline">
<$macrocall $name="keyboard-driven-input" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>> <$transclude $variable="keyboard-driven-input" tiddler=<<editTiddler>> storeTitle=<<searchTiddler>>
selectionStateTitle=<<searchListState>> refreshTitle="$:/temp/search/refresh" type="search" selectionStateTitle=<<searchListState>> refreshTitle="$:/temp/search/refresh" type="search"
tag="input" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify "$:/state/popup/search-dropdown">> tag="input" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify "$:/state/popup/search-dropdown">>
class="tc-tiny-gap-right tc-popup-handle" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>> class="tc-tiny-gap-right tc-popup-handle" filterMinLength={{$:/config/Search/MinLength}} inputCancelActions=<<cancel-search-actions>>
inputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups="yes" inputAcceptActions=<<input-accept-actions>> inputAcceptVariantActions=<<input-accept-variant-actions>> cancelPopups="yes"
configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] ~[{$:/config/SearchResults/Default}]"/> configTiddlerFilter="[[$:/state/search/currentTab]!is[missing]get[text]] :else[{$:/config/SearchResults/Default}]"/>
</form> </form>
</$keyboard> </$keyboard>
</$keyboard> </$keyboard>

View File

@ -62,7 +62,6 @@ color: #bbb
\end \end
\whitespace trim \whitespace trim
<div class="tc-table-wrapper">
<table class="tc-tag-manager-table"> <table class="tc-tag-manager-table">
<tbody> <tbody>
<tr> <tr>
@ -116,5 +115,4 @@ color: #bbb
<td></td> <td></td>
</tr> </tr>
</tbody> </tbody>
</table> </table>
</div>

View File

@ -0,0 +1,3 @@
title: $:/config/RecentLimit
100

View File

@ -3,8 +3,8 @@ tags: $:/tags/ViewTemplateBodyFilter
testcase: [tag[$:/tags/wiki-test-spec]type[text/vnd.tiddlywiki-multiple]] [tag[$:/tags/wiki-test-spec-failing]type[text/vnd.tiddlywiki-multiple]] :then[[$:/core/ui/TestCaseTemplate]] testcase: [tag[$:/tags/wiki-test-spec]type[text/vnd.tiddlywiki-multiple]] [tag[$:/tags/wiki-test-spec-failing]type[text/vnd.tiddlywiki-multiple]] :then[[$:/core/ui/TestCaseTemplate]]
stylesheet: [tag[$:/tags/Stylesheet]then[$:/core/ui/ViewTemplate/body/rendered-plain-text]] stylesheet: [tag[$:/tags/Stylesheet]then[$:/core/ui/ViewTemplate/body/rendered-plain-text]]
core-ui-tags: [tag[$:/tags/PageTemplate]] [tag[$:/tags/EditTemplate]] [tag[$:/tags/ViewTemplate]] [tag[$:/tags/KeyboardShortcut]] [tag[$:/tags/ImportPreview]] [tag[$:/tags/EditPreview]][tag[$:/tags/EditorToolbar]] [tag[$:/tags/Actions]] :then[[$:/core/ui/ViewTemplate/body/code]] core-ui-tags: [tag[$:/tags/PageTemplate]] [tag[$:/tags/EditTemplate]] [tag[$:/tags/ViewTemplate]] [tag[$:/tags/KeyboardShortcut]] [tag[$:/tags/ImportPreview]] [tag[$:/tags/EditPreview]] [tag[$:/tags/EditorToolbar]] [tag[$:/EditorTools]] [tag[$:/tags/Actions]] [tag[$:/tags/ToolbarButtonStyle]] :then[[$:/core/ui/ViewTemplate/body/code]]
system: [prefix[$:/boot/]] [prefix[$:/core/macros]] [prefix[$:/core/save/]] [prefix[$:/core/templates/]] [prefix[$:/config/]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/info/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/temp/]] :and[!is[image]] :then[[$:/core/ui/ViewTemplate/body/code]] system: [prefix[$:/boot/]] [prefix[$:/core/macros]] [prefix[$:/core/save/]] [prefix[$:/core/templates/]] [prefix[$:/config/]] [prefix[$:/core/config/]] [prefix[$:/info/]] [prefix[$:/language/]] [prefix[$:/languages/]] [prefix[$:/snippets/]] [prefix[$:/info/]] [prefix[$:/state/]] [prefix[$:/status/]] [prefix[$:/temp/]] :and[!is[image]] :then[[$:/core/ui/ViewTemplate/body/code]]
code-body: [field:code-body[yes]then[$:/core/ui/ViewTemplate/body/code]] code-body: [field:code-body[yes]then[$:/core/ui/ViewTemplate/body/code]]
import: [field:plugin-type[import]then[$:/core/ui/ViewTemplate/body/import]] import: [field:plugin-type[import]then[$:/core/ui/ViewTemplate/body/import]]
plugin: [has[plugin-type]then[$:/core/ui/ViewTemplate/body/plugin]] plugin: [has[plugin-type]then[$:/core/ui/ViewTemplate/body/plugin]]

View File

@ -1,5 +1,5 @@
title: $:/core/macros/CSS title: $:/core/macros/CSS
tags: $:/tags/Macro $:/tags/Global tags: $:/tags/Macro
<!-- Needs to stay that way for backwards compatibility. See GH issue: #8326 --> <!-- Needs to stay that way for backwards compatibility. See GH issue: #8326 -->
\define colour(name) \define colour(name)
@ -13,42 +13,54 @@ tags: $:/tags/Macro $:/tags/Global
\define color(name) <<colour $name$>> \define color(name) <<colour $name$>>
\function box-shadow(shadow) \define box-shadow(shadow)
[[ -webkit-box-shadow: $(shadow)$; ``
-moz-box-shadow: $(shadow)$; -webkit-box-shadow: $shadow$;
box-shadow: $(shadow)$;]substitute[]] -moz-box-shadow: $shadow$;
box-shadow: $shadow$;
``
\end \end
\function filter(filter) \define filter(filter)
[[ -webkit-filter: $(filter)$; ``
-moz-filter: $(filter)$; -webkit-filter: $filter$;
filter: $(filter)$;]substitute[]] -moz-filter: $filter$;
filter: $filter$;
``
\end \end
\function transition(transition) \define transition(transition)
[[ -webkit-transition: $(transition)$; ``
-moz-transition: $(transition)$; -webkit-transition: $transition$;
transition: $(transition)$;]substitute[]] -moz-transition: $transition$;
transition: $transition$;
``
\end \end
\function transform-origin(origin) \define transform-origin(origin)
[[ -webkit-transform-origin: $(origin)$; ``
-moz-transform-origin: $(origin)$; -webkit-transform-origin: $origin$;
transform-origin: $(origin)$;]substitute[]] -moz-transform-origin: $origin$;
transform-origin: $origin$;
``
\end \end
\function background-linear-gradient(gradient) \define background-linear-gradient(gradient)
[[ background-image: linear-gradient($(gradient)$); ``
background-image: -o-linear-gradient($(gradient)$); background-image: linear-gradient($gradient$);
background-image: -moz-linear-gradient($(gradient)$); background-image: -o-linear-gradient($gradient$);
background-image: -webkit-linear-gradient($(gradient)$); background-image: -moz-linear-gradient($gradient$);
background-image: -ms-linear-gradient($(gradient)$);]substitute[]] background-image: -webkit-linear-gradient($gradient$);
background-image: -ms-linear-gradient($gradient$);
``
\end \end
\function column-count(columns) \define column-count(columns)
[[-moz-column-count: $(columns)$; ``
-webkit-column-count: $(columns)$; -moz-column-count: $columns$;
column-count: $(columns)$;]substitute[]] -webkit-column-count: $columns$;
column-count: $columns$;
``
\end \end
\procedure datauri(title) \procedure datauri(title)

View File

@ -1,5 +1,5 @@
title: $:/core/macros/copy-to-clipboard title: $:/core/macros/copy-to-clipboard
tags: $:/tags/Macro $:/tags/Global tags: $:/tags/Macro
\whitespace trim \whitespace trim

View File

@ -1,5 +1,5 @@
title: $:/core/macros/diff title: $:/core/macros/diff
tags: $:/tags/Macro $:/tags/Global tags: $:/tags/Macro
\whitespace trim \whitespace trim

View File

@ -1,5 +1,5 @@
title: $:/core/macros/export title: $:/core/macros/export
tags: $:/tags/Macro $:/tags/Global tags: $:/tags/Macro
\function exportButtonFilename(baseFilename) \function exportButtonFilename(baseFilename)
[<baseFilename>] [<extension>] +[join[]] [<baseFilename>] [<extension>] +[join[]]

View File

@ -1,105 +1,137 @@
title: $:/core/macros/keyboard-driven-input title: $:/core/macros/keyboard-driven-input
tags: $:/tags/Macro tags: $:/tags/Macro
\define change-input-tab(stateTitle,tag,beforeafter,defaultState,actions) \procedure prefix.bracket() [
\procedure suffix.bracket() ]
\function tf.change-input-tab.next-tab() [[all]addprefix<prefix.bracket>addsuffix<prefix.bracket>addsuffix[shadows+tiddlers]addsuffix<suffix.bracket>addsuffix[tag<tag>!has]addsuffix<prefix.bracket>addsuffix[draft.of]addsuffix<suffix.bracket>addsuffix<beforeafter>addsuffix[<currentState>]addsuffix<suffix.bracket>addsuffix[ :else]addsuffix<prefix.bracket>addsuffix<prefix.bracket>addsuffix<beforeafter>addsuffix<suffix.bracket>addsuffix[match]addsuffix<prefix.bracket>addsuffix[after]addsuffix<suffix.bracket>addsuffix[then<firstTab>]addsuffix<suffix.bracket>addsuffix[ :else]addsuffix<prefix.bracket>addsuffix<prefix.bracket>addsuffix<beforeafter>addsuffix<suffix.bracket>addsuffix[match]addsuffix<prefix.bracket>addsuffix[before]addsuffix<suffix.bracket>addsuffix[then<lastTab>]addsuffix<suffix.bracket>]
\procedure change-input-tab(stateTitle,tag,beforeafter,defaultState,actions)
\whitespace trim \whitespace trim
<$set name="tabsList" filter="[all[shadows+tiddlers]tag<__tag__>!has[draft.of]]"> <$set name="tabsList" filter="[<explicitTabList>!is[blank]enlist-input[]] :else[all[shadows+tiddlers]tag<tag>!has[draft.of]]">
<$let <$let
currentState={{{ [<__stateTitle__>!is[missing]get[text]] ~[<__defaultState__>] }}} currentState={{{ [<stateTitle>!is[missing]get[text]] :else[<defaultState>] }}}
firstTab={{{ [enlist<tabsList>nth[1]] }}} firstTab={{{ [enlist<tabsList>nth[1]] }}}
lastTab={{{ [enlist<tabsList>last[]] }}} lastTab={{{ [enlist<tabsList>last[]] }}}
nextTab={{{ [all[shadows+tiddlers]tag<__tag__>!has[draft.of]$beforeafter$<currentState>] ~[[$beforeafter$]removeprefix[after]suffix[]addprefix<firstTab>] ~[[$beforeafter$]removeprefix[before]suffix[]addprefix<lastTab>] }}} nextTabSubFilter=<<tf.change-input-tab.next-tab>>
nextTab={{{ [subfilter<nextTabSubFilter>] }}}
> >
<$action-setfield $tiddler=<<__stateTitle__>> text=<<nextTab>>/> <$action-setfield $tiddler=<<stateTitle>> text=<<nextTab>>/>
$actions$ <<actions>>
</$let> </$let>
</$set> </$set>
\end \end
\define keyboard-input-actions() \procedure keyboard-input-actions()
\whitespace trim \whitespace trim
<$list filter="[<__index__>match[]]"> <%if [<index>match[]] %>
<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>get<__field__>] }}}/> <$action-setfield $tiddler=<<storeTitle>> text={{{ [<tiddler>get<field>] }}}/>
</$list> <% endif %>
<$list filter="[<__index__>!match[]]"> <%if [<index>!match[]] %>
<$action-setfield $tiddler=<<__storeTitle__>> text={{{ [<__tiddler__>getindex<__index__>] }}}/> <$action-setfield $tiddler=<<storeTitle>> text={{{ [<tiddler>getindex<index>] }}}/>
</$list> <% endif %>
\end \end
\define input-next-actions-inner() \procedure input-next-actions-inner()
\whitespace trim \whitespace trim
<$list filter="[<nextItem>minlength[1]]" variable="ignore"> <%if [<nextItem>minlength[1]] %>
<$action-setfield $tiddler=<<__selectionStateTitle__>> text=<<nextItem>>/> <$action-setfield $tiddler=<<selectionStateTitle>> text=<<nextItem>>/>
<$list filter="[<__index__>match[]]"> <%if [<index>match[]] %>
<$action-setfield $tiddler=<<__tiddler__>> $field=<<__field__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/> <$action-setfield $tiddler=<<tiddler>> $field=<<field>> $value={{{ [<nextItem>] :and[splitregexp[(?:.(?!-))+$]] }}}/>
</$list> <% endif %>
<$list filter="[<__index__>!match[]]"> <%if [<index>!match[]] %>
<$action-setfield $tiddler=<<__tiddler__>> $index=<<__index__>> $value={{{ [<nextItem>] +[splitregexp[(?:.(?!-))+$]] }}}/> <$action-setfield $tiddler=<<tiddler>> $index=<<index>> $value={{{ [<nextItem>] :and[splitregexp[(?:.(?!-))+$]] }}}/>
</$list> <% endif %>
<$action-setfield $tiddler=<<__refreshTitle__>> text="yes"/> <$action-setfield $tiddler=<<refreshTitle>> text="yes"/>
</$list> <% endif %>
\end \end
\define input-next-actions(afterOrBefore:"after",reverse:"") \procedure input-next-actions-after()
\whitespace trim \whitespace trim
<$list <%if [<storeTitle>get[text]minlength<filterMinLength>] [<filterMinLength>match[0]] %>
filter="[<__storeTitle__>get[text]minlength<__filterMinLength__>] [<__filterMinLength__>match[0]] +[limit[1]]"
variable="ignore"
>
<$let <$let
userInput={{{ [<__storeTitle__>get[text]] }}} userInput={{{ [<storeTitle>get[text]] }}}
selectedItem={{{ [<__selectionStateTitle__>get[text]] }}} selectedItem={{{ [<selectionStateTitle>get[text]] }}}
configTiddler={{{ [subfilter<__configTiddlerFilter__>] }}} configTiddler={{{ [subfilter<configTiddlerFilter>] }}}
primaryListFilter={{{ [<configTiddler>get<__firstSearchFilterField__>] }}} primaryListFilter={{{ [<configTiddler>get<firstSearchFilterField>] }}}
secondaryListFilter={{{ [<configTiddler>get<__secondSearchFilterField__>] }}} secondaryListFilter={{{ [<configTiddler>get<secondSearchFilterField>] }}}
> >
<$set <$set
name="filteredList" name="filteredList"
filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] =[subfilter<secondaryListFilter>addsuffix[-secondaryList]]" filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] :all[subfilter<secondaryListFilter>addsuffix[-secondaryList]]"
> >
<$let <$let
nextItem={{{ [enlist<filteredList>$afterOrBefore$<selectedItem>] ~[enlist<filteredList>$reverse$nth[1]] }}} nextItem={{{ [enlist<filteredList>after<selectedItem>] :else[enlist<filteredList>nth[1]] }}}
firstItem={{{ [enlist<filteredList>nth[1]] }}} firstItem={{{ [enlist<filteredList>nth[1]] }}}
lastItem={{{ [enlist<filteredList>last[]] }}} lastItem={{{ [enlist<filteredList>last[]] }}}
> >
<$list filter="[<selectedItem>match<firstItem>!match<lastItem>]" variable="ignore"> <%if [<selectedItem>match<firstItem>!match<lastItem>] [<selectedItem>!match<firstItem>!match<lastItem>] %>
<$set name="nextItem" value={{{ [[$afterOrBefore$]match[before]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}> <<input-next-actions-inner>>
<<input-next-actions-inner>> <%elseif [<selectedItem>match<lastItem>!match<firstItem>] %>
</$set>
</$list>
<$list filter="[<selectedItem>match<lastItem>!match<firstItem>]" variable="ignore">
<$set name="nextItem" value={{{ [[$afterOrBefore$]match[after]then<userInput>addsuffix[-userInput]] ~[<nextItem>] }}}>
<<input-next-actions-inner>>
</$set>
</$list>
<$list filter="[<selectedItem>match<firstItem>match<lastItem>]" variable="ignore">
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}> <$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
<<input-next-actions-inner>> <<input-next-actions-inner>>
</$set> </$set>
</$list> <%elseif [<selectedItem>match<firstItem>match<lastItem>] %>
<$list filter="[<selectedItem>!match<firstItem>!match<lastItem>]" variable="ignore"> <$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
<<input-next-actions-inner>> <<input-next-actions-inner>>
</$list> </$set>
<% endif %>
</$let> </$let>
</$set> </$set>
</$let> </$let>
</$list> <% endif %>
\end \end
\define keyboard-driven-input(tiddler,storeTitle,field:"text",index:"",tag:"input",type,focus:"",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:"",default:"",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:"0",refreshTitle,selectionStateTitle,cancelPopups:"",configTiddlerFilter,firstSearchFilterField:"first-search-filter",secondSearchFilterField:"second-search-filter") \procedure input-next-actions-before()
\whitespace trim \whitespace trim
<$keyboard key="((input-accept))" actions=<<__inputAcceptActions__>>> <%if [<storeTitle>get[text]minlength<filterMinLength>] [<filterMinLength>match[0]] %>
<$keyboard key="((input-accept-variant))" actions=<<__inputAcceptVariantActions__>>> <$let
<$keyboard key="((input-up))" actions=<<input-next-actions "before" "reverse[]">>> userInput={{{ [<storeTitle>get[text]] }}}
<$keyboard key="((input-down))" actions=<<input-next-actions>>> selectedItem={{{ [<selectionStateTitle>get[text]] }}}
<$keyboard key="((input-cancel))" actions=<<__inputCancelActions__>>> configTiddler={{{ [subfilter<configTiddlerFilter>] }}}
primaryListFilter={{{ [<configTiddler>get<firstSearchFilterField>] }}}
secondaryListFilter={{{ [<configTiddler>get<secondSearchFilterField>] }}}
>
<$set
name="filteredList"
filter="[subfilter<primaryListFilter>addsuffix[-primaryList]] :all[subfilter<secondaryListFilter>addsuffix[-secondaryList]]"
>
<$let
nextItem={{{ [enlist<filteredList>before<selectedItem>] :else[enlist<filteredList>reverse[]nth[1]] }}}
firstItem={{{ [enlist<filteredList>nth[1]] }}}
lastItem={{{ [enlist<filteredList>last[]] }}}
>
<%if [<selectedItem>match<firstItem>!match<lastItem>] %>
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
<<input-next-actions-inner>>
</$set>
<%elseif [<selectedItem>match<lastItem>!match<firstItem>] [<selectedItem>!match<firstItem>!match<lastItem>] %>
<<input-next-actions-inner>>
<%elseif [<selectedItem>match<firstItem>match<lastItem>] %>
<$set name="nextItem" value={{{ [<userInput>addsuffix[-userInput]] }}}>
<<input-next-actions-inner>>
</$set>
<% endif %>
</$let>
</$set>
</$let>
<% endif %>
\end
\procedure keyboard-driven-input(tiddler,storeTitle,field:"text",index:"",tag:"input",type,focus:"",inputAcceptActions,inputAcceptVariantActions,inputCancelActions,placeholder:"",default:"",class,focusPopup,rows,minHeight,tabindex,size,autoHeight,filterMinLength:"0",refreshTitle,selectionStateTitle,cancelPopups:"",configTiddlerFilter,firstSearchFilterField:"first-search-filter",secondSearchFilterField:"second-search-filter")
\whitespace trim
<$keyboard key="((input-accept))" actions=<<inputAcceptActions>>>
<$keyboard key="((input-accept-variant))" actions=<<inputAcceptVariantActions>>>
<$keyboard key="((input-up))" actions=<<input-next-actions-before>>>
<$keyboard key="((input-down))" actions=<<input-next-actions-after>>>
<$keyboard key="((input-cancel))" actions=<<inputCancelActions>>>
<$edit-text <$edit-text
tiddler=<<__tiddler__>> field=<<__field__>> index=<<__index__>> tiddler=<<tiddler>> field=<<field>> index=<<index>>
inputActions=<<keyboard-input-actions>> tag=<<__tag__>> class=<<__class__>> inputActions=<<keyboard-input-actions>> tag=<<tag>> class=<<class>>
placeholder=<<__placeholder__>> default=<<__default__>> focusPopup=<<__focusPopup__>> placeholder=<<placeholder>> default=<<default>> focusPopup=<<focusPopup>>
focus=<<__focus__>> type=<<__type__>> rows=<<__rows__>> minHeight=<<__minHeight__>> focus=<<focus>> type=<<type>> rows=<<rows>> minHeight=<<minHeight>>
tabindex=<<__tabindex__>> size=<<__size__>> autoHeight=<<__autoHeight__>> tabindex=<<tabindex>> size=<<size>> autoHeight=<<autoHeight>>
refreshTitle=<<__refreshTitle__>> cancelPopups=<<__cancelPopups__>> refreshTitle=<<refreshTitle>> cancelPopups=<<cancelPopups>>
/> />
</$keyboard> </$keyboard>
</$keyboard> </$keyboard>

View File

@ -1,5 +1,5 @@
title: $:/core/macros/show-filter-count title: $:/core/macros/show-filter-count
tags: $:/tags/Macro $:/tags/Global tags: $:/tags/Macro
\whitespace trim \whitespace trim

View File

@ -1,5 +1,5 @@
title: $:/core/macros/tag-picker title: $:/core/macros/tag-picker
tags: $:/tags/Macro $:/tags/Global tags: $:/tags/Macro
first-search-filter: [subfilter<tagListFilter>!is[system]search:title<userInput>] first-search-filter: [subfilter<tagListFilter>!is[system]search:title<userInput>]
second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>] second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>]
@ -13,11 +13,11 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>
<!-- tf.tagpicker-dropdown-id is needed if several tap-pickers are shown in one tiddler --> <!-- tf.tagpicker-dropdown-id is needed if several tap-pickers are shown in one tiddler -->
\function tf.tagpicker-dropdown-id() \function tf.tagpicker-dropdown-id()
[<qualify $:/state/popup/tags-auto-complete>] [<qualify $:/state/popup/tags-auto-complete>]
[[$(saveTiddler)$-[$(tagField)$-$(tagListFilter)$]substitute[]sha256[]] +[join[/]] [[$(saveTiddler)$-[$(tagField)$-$(tagListFilter)$]substitute[]sha256[]] :and[join[/]]
\end \end
\function tf.tagpicker-dropdown-class() [<tf.tagpicker-dropdown-id>sha256[]addprefix[tc-]] \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[ ]] \function tf.get-tagpicker-focus-selector() [<tf.tagpicker-dropdown-class>addprefix[.]] .tc-popup-handle :and[join[ ]]
<!-- clean up temporary tiddlers, so the next "pick" starts with a clean input --> <!-- 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 <!-- This could probably be optimized / removed if we would use different temp-tiddlers
@ -30,7 +30,7 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>
<!-- trigger __toggle tag__ by keyboard --> <!-- trigger __toggle tag__ by keyboard -->
\procedure add-tag-actions() \procedure add-tag-actions()
<$let tag=<<_tf.getTag>> > <$let tag=<<_tf.getTag>> >
<$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter='+[toggle<tag>trim[]]'/> <$action-listops $tiddler=<<saveTiddler>> $field=<<tagField>> $subfilter=':and[toggle<tag>trim[]]'/>
<%if [<tag>] :intersection[<saveTiddler>get<tagField>enlist-input[]] %> <%if [<tag>] :intersection[<saveTiddler>get<tagField>enlist-input[]] %>
<!-- tag has been removed - do nothing --> <!-- tag has been removed - do nothing -->
<%else%> <%else%>
@ -46,7 +46,7 @@ second-search-filter: [subfilter<tagListFilter>is[system]search:title<userInput>
The second ESC tries to close the "draft tiddler" The second ESC tries to close the "draft tiddler"
--> -->
\procedure clear-tags-actions-inner() \procedure clear-tags-actions-inner()
<%if [<storeTitle>has[text]] ~[<newTagNameTiddler>has[text]] %> <%if [<storeTitle>has[text]] :else[<newTagNameTiddler>has[text]] %>
<<delete-tag-state-tiddlers>> <<delete-tag-state-tiddlers>>
<%else%> <%else%>
<<cancel-delete-tiddler-actions "cancel">> <<cancel-delete-tiddler-actions "cancel">>
@ -90,7 +90,7 @@ The second ESC tries to close the "draft tiddler"
<!-- tf.get-tagpicker-focus-selector has to be resolved for $:/core/ui/TagPickerTagTemplate, <!-- tf.get-tagpicker-focus-selector has to be resolved for $:/core/ui/TagPickerTagTemplate,
othwerwise qualify in tf.tagpicker-dropdown-id causes problems --> othwerwise qualify in tf.tagpicker-dropdown-id causes problems -->
<$let currentTiddler=<<tag>> <$let currentTiddler=<<tag>>
button-classes=`tc-btn-invisible ${[<tag>addsuffix<suffix>] -[<tagSelectionState>get[text]] :then[[]] ~tc-tag-button-selected }$` button-classes=`tc-btn-invisible ${[<tag>addsuffix<suffix>] :except[<tagSelectionState>get[text]] :then[[]] ~tc-tag-button-selected }$`
get-tagpicker-focus-selector=`${[<tf.get-tagpicker-focus-selector>]}$` get-tagpicker-focus-selector=`${[<tf.get-tagpicker-focus-selector>]}$`
> >
{{||$:/core/ui/TagPickerTagTemplate}} {{||$:/core/ui/TagPickerTagTemplate}}
@ -102,10 +102,10 @@ The second ESC tries to close the "draft tiddler"
<!-- tag-picker-inner is the main function --> <!-- tag-picker-inner is the main function -->
\procedure tag-picker-inner() \procedure tag-picker-inner()
<div class={{{ [[tc-edit-add-tag]] [<tf.tagpicker-dropdown-class>] +[join[ ]] }}}> <div class={{{ [[tc-edit-add-tag]] [<tf.tagpicker-dropdown-class>] :and[join[ ]] }}}>
<div class="tc-edit-add-tag-ui"> <div class="tc-edit-add-tag-ui">
<span class="tc-add-tag-name tc-small-gap-right"> <span class="tc-add-tag-name tc-small-gap-right">
<$macrocall $name="keyboard-driven-input" <$transclude $variable="keyboard-driven-input"
tiddler=<<newTagNameTiddler>> tiddler=<<newTagNameTiddler>>
storeTitle=<<storeTitle>> storeTitle=<<storeTitle>>
refreshTitle=<<refreshTitle>> refreshTitle=<<refreshTitle>>
@ -117,7 +117,7 @@ The second ESC tries to close the "draft tiddler"
focusPopup=<<tf.tagpicker-dropdown-id>> focusPopup=<<tf.tagpicker-dropdown-id>>
class="tc-edit-texteditor tc-popup-handle" class="tc-edit-texteditor tc-popup-handle"
tabindex=<<tabIndex>> tabindex=<<tabIndex>>
focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}} focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] :else[[false]] }}}
filterMinLength={{$:/config/Tags/MinLength}} filterMinLength={{$:/config/Tags/MinLength}}
cancelPopups=<<cancelPopups>> cancelPopups=<<cancelPopups>>
configTiddlerFilter="[[$:/core/macros/tag-picker]]" configTiddlerFilter="[[$:/core/macros/tag-picker]]"
@ -146,9 +146,9 @@ The second ESC tries to close the "draft tiddler"
<div class="tc-block-dropdown-wrapper"> <div class="tc-block-dropdown-wrapper">
<%if [<tf.tagpicker-dropdown-id>has[text]] %> <%if [<tf.tagpicker-dropdown-id>has[text]] %>
<div class="tc-block-dropdown tc-block-tags-dropdown"> <div class="tc-block-dropdown tc-block-tags-dropdown">
<$macrocall $name="tag-picker-listTags" filter=<<nonSystemTagsFilter>> suffix="-primaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage}}/> <$transclude $variable="tag-picker-listTags" filter=<<nonSystemTagsFilter>> suffix="-primaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage}}/>
<hr> <hr>
<$macrocall $name="tag-picker-listTags" filter=<<systemTagsFilter>> suffix="-secondaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage/System}}/> <$transclude $variable="tag-picker-listTags" filter=<<systemTagsFilter>> suffix="-secondaryList" empty={{$:/language/EditTemplate/Tags/EmptyMessage/System}}/>
</div> </div>
<%endif%> <%endif%>
</div> </div>
@ -161,7 +161,7 @@ The second ESC tries to close the "draft tiddler"
\function _tf.getUserInput() [<storeTitle>get[text]] \function _tf.getUserInput() [<storeTitle>get[text]]
\function _tf.getTag() [<newTagNameTiddler>get[text]] \function _tf.getTag() [<newTagNameTiddler>get[text]]
<!-- Use this function if tag-picker is a stand alone macro. Otherwise use "newTagNameTiddler" defined for fieldmangler in EditTemplate --> <!-- Use this function if tag-picker is a stand alone macro. Otherwise use "newTagNameTiddler" defined for fieldmangler in EditTemplate -->
\function _tf.makeTagNameTiddler() [[$:/temp/NewTagName]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]] \function _tf.makeTagNameTiddler() [[$:/temp/NewTagName]] [<tagField>!match[tags]] :and[join[/]] [<qualify>] :and[join[]]
<!-- keep those variables because they may "bleed" into macros using old syntax --> <!-- keep those variables because they may "bleed" into macros using old syntax -->
<!-- "nonSystemTagsFilter", "systemTagsFilter" __need to be the same__ as fields: "first-search-filter", "second-search-filter" --> <!-- "nonSystemTagsFilter", "systemTagsFilter" __need to be the same__ as fields: "first-search-filter", "second-search-filter" -->
@ -174,10 +174,10 @@ The second ESC tries to close the "draft tiddler"
saveTiddler={{{ [<tiddler>is[blank]then<currentTiddler>else<tiddler>] }}} saveTiddler={{{ [<tiddler>is[blank]then<currentTiddler>else<tiddler>] }}}
newTagNameTiddler={{{ [[newTagNameTiddler]is[variable]then<newTagNameTiddler>] :else[<_tf.makeTagNameTiddler>] }}} newTagNameTiddler={{{ [[newTagNameTiddler]is[variable]then<newTagNameTiddler>] :else[<_tf.makeTagNameTiddler>] }}}
storeTitle={{{ [[$:/temp/NewTagName/input]] [<tagField>!match[tags]] +[join[/]] [<qualify>] +[join[]] }}} storeTitle={{{ [[$:/temp/NewTagName/input]] [<tagField>!match[tags]] :and[join[/]] [<qualify>] :and[join[]] }}}
newTagNameSelectionTiddlerQualified=<<qualify "$:/temp/NewTagName/selected-item">> newTagNameSelectionTiddlerQualified=<<qualify "$:/temp/NewTagName/selected-item">>
tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] ~[<newTagNameSelectionTiddlerQualified>] }}} tagSelectionState={{{ [<newTagNameSelectionTiddler>!match[]] :else[<newTagNameSelectionTiddlerQualified>] }}}
refreshTitle=<<qualify "$:/temp/NewTagName/refresh">> refreshTitle=<<qualify "$:/temp/NewTagName/refresh">>
@ -186,6 +186,6 @@ The second ESC tries to close the "draft tiddler"
cancelPopups="yes" cancelPopups="yes"
> >
<$macrocall $name="tag-picker-inner"/> <$transclude $variable="tag-picker-inner"/>
</$let> </$let>
\end \end

View File

@ -1,5 +1,5 @@
title: $:/core/macros/testcase title: $:/core/macros/testcase
tags: $:/tags/Macro $:/tags/Global tags: $:/tags/Macro
\whitespace trim \whitespace trim

View File

@ -1,25 +1,25 @@
created: 20141212105914482
modified: 20141212110330815
tags: $:/tags/Macro tags: $:/tags/Macro
title: $:/core/macros/timeline title: $:/core/macros/timeline
<!-- Override one or both of the following two macros with a global or local macro of the same name <!-- Override one or both of the following two macros with a global or local macro of the same name
if you need to change how titles are displayed on a timeline --> if you need to change how titles are displayed on a timeline -->
\define timeline-title() <$view field="title"/> \procedure timeline-title() <$view field="title"/>
\define timeline-link() <$link to={{!!title}}><<timeline-title>></$link> \procedure timeline-link() <$link to={{!!title}}><<timeline-title>></$link>
\define timeline(limit:"100",format:"DDth MMM YYYY",subfilter:"",dateField:"modified") \procedure timeline(limit:"100",format:"DDth MMM YYYY",subfilter:"",dateField:"modified")
\whitespace trim \whitespace trim
<div class="tc-timeline"> <div class="tc-timeline">
<$list filter="[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]"> <$set name="tv-tids" filter=`[!is[system]$(subfilter)$has<dateField>!sort<dateField>limit<limit>]`>
<$list filter="[enlist<tv-tids>eachday<dateField>]">
<div class="tc-menu-list-item"> <div class="tc-menu-list-item">
<$view field="$dateField$" format="date" template="$format$"/> <$view field=<<dateField>> format="date" template=<<format>>/>
<$list filter="[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]"> <$list filter=`[enlist<tv-tids>sameday:$(dateField)${!!$(dateField)$}]`>
<div class="tc-menu-list-subitem"> <div class="tc-menu-list-subitem">
<<timeline-link>> <<timeline-link>>
</div> </div>
</$list> </$list>
</div> </div>
</$list> </$list>
</$set>
</div> </div>
\end \end

View File

@ -37,7 +37,10 @@ tags: $:/tags/Macro
\end \end
\define toc(tag,sort:"",itemClassFilter:"", exclude) \define toc(tag,sort:"",itemClassFilter:"", exclude)
<$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>>/> \whitespace trim
<$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}} >
<$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>>/>
</$let>
\end \end
\define toc-linked-expandable-body(tag,sort:"",itemClassFilter,exclude,path) \define toc-linked-expandable-body(tag,sort:"",itemClassFilter,exclude,path)
@ -99,7 +102,7 @@ tags: $:/tags/Macro
\define toc-expandable(tag,sort:"",itemClassFilter:"",exclude,path) \define toc-expandable(tag,sort:"",itemClassFilter:"",exclude,path)
\whitespace trim \whitespace trim
<$let tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}> <$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}} tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
<$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]"> <$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]">
<ol class="tc-toc toc-expandable"> <ol class="tc-toc toc-expandable">
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]"""> <$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]""">
@ -173,7 +176,7 @@ tags: $:/tags/Macro
\define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path) \define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path)
\whitespace trim \whitespace trim
<$let tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}> <$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}} tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>
<$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]"> <$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]">
<ol class="tc-toc toc-selective-expandable"> <ol class="tc-toc toc-selective-expandable">
<$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]"""> <$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]""">
@ -188,31 +191,35 @@ tags: $:/tags/Macro
\define toc-tabbed-external-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"",exclude) \define toc-tabbed-external-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"",exclude)
\whitespace trim \whitespace trim
<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}> <$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}}>
<div class="tc-tabbed-table-of-contents"> <$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>
<$linkcatcher to=<<__selectedTiddler__>>> <div class="tc-tabbed-table-of-contents">
<div class="tc-table-of-contents"> <$linkcatcher to=<<__selectedTiddler__>>>
<$macrocall $name="toc-selective-expandable" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="[all[current]] -[<__selectedTiddler__>get[text]]" exclude=<<__exclude__>>/> <div class="tc-table-of-contents">
<$macrocall $name="toc-selective-expandable" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="[all[current]] -[<__selectedTiddler__>get[text]]" exclude=<<__exclude__>>/>
</div>
</$linkcatcher>
<div class="tc-tabbed-table-of-contents-content">
<$reveal stateTitle=<<__selectedTiddler__>> type="nomatch" text="">
<$transclude mode="block" tiddler=<<__template__>>>
<h1><<toc-caption>></h1>
<$transclude mode="block">$missingText$</$transclude>
</$transclude>
</$reveal>
<$reveal stateTitle=<<__selectedTiddler__>> type="match" text="">
$unselectedText$
</$reveal>
</div> </div>
</$linkcatcher>
<div class="tc-tabbed-table-of-contents-content">
<$reveal stateTitle=<<__selectedTiddler__>> type="nomatch" text="">
<$transclude mode="block" tiddler=<<__template__>>>
<h1><<toc-caption>></h1>
<$transclude mode="block">$missingText$</$transclude>
</$transclude>
</$reveal>
<$reveal stateTitle=<<__selectedTiddler__>> type="match" text="">
$unselectedText$
</$reveal>
</div> </div>
</div> </$tiddler>
</$tiddler> </$let>
\end \end
\define toc-tabbed-internal-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"",exclude) \define toc-tabbed-internal-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"",exclude)
\whitespace trim \whitespace trim
<$linkcatcher to=<<__selectedTiddler__>>> <$let __tag__={{{ [<__tag__>is[blank]then<currentTiddler>else<__tag__>] }}}>
<$macrocall $name="toc-tabbed-external-nav" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>> exclude=<<__exclude__>> /> <$linkcatcher to=<<__selectedTiddler__>>>
</$linkcatcher> <$macrocall $name="toc-tabbed-external-nav" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>> exclude=<<__exclude__>> />
</$linkcatcher>
</$let>
\end \end

View File

@ -18,9 +18,12 @@ description: Under development
This release includes improvements to the following translations: This release includes improvements to the following translations:
* Chinese * Chinese
* Japanese
* Spanish * Spanish
* Polish * Polish
<<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8703">> [[the translators edition|Translate TiddlyWiki into your language]] with various fixes and updates
! Plugin Improvements ! Plugin Improvements
!! Geospatial Plugin !! Geospatial Plugin
@ -40,6 +43,7 @@ This release includes improvements to the following translations:
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8585">> settings tab * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8585">> settings tab
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8595">> reorganised "readme" and "config" tabs * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8595">> reorganised "readme" and "config" tabs
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8498">> support for the excision tool * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8498">> support for the excision tool
* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8704">> Markdown plugin to use the same formatting for highlighted text as ordinary WikiText
!! Browser Storage Plugin !! Browser Storage Plugin
@ -59,7 +63,7 @@ This release includes several fixes and improvements to the TestCaseWidget, its
! Widget Improvements ! Widget Improvements
* * <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8256">> DroppableWidget to allow actions to be triggered once passing all the items in the list rather than invoking the actions separately for each item in the list
! Filter Improvements ! Filter Improvements
@ -83,6 +87,10 @@ This release includes several fixes and improvements to the TestCaseWidget, its
! Hackability Improvements ! Hackability Improvements
* <<.link-badge-improved "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8678">> [[keyboard-driven-input Macro]] to use modern syntax
* <<.link-badge-adds "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8699">> a shortcut syntax for setting CSS variables on [[an HTML element|HTML in WikiText]]
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8698">> support for a control panel setting to configure the maximum number of tiddlers shown in the "recent" tab
* <<.link-badge-updated "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8291">> [[Table-of-Contents Macros]] to default to showing the table of contents for the current tiddler whenever no parameter is specified
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8431">> support for the HTML entity `&NoBreak;` which can be useful for joining HTML elements without an unwanted linebreak * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8431">> support for the HTML entity `&NoBreak;` which can be useful for joining HTML elements without an unwanted linebreak
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8439">> a keyboard shortcut for opening the control panel (by default it is <kbd>ctrl</kbd>-<kbd>alt</kbd>-<kbd>C</kbd>) * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8439">> a keyboard shortcut for opening the control panel (by default it is <kbd>ctrl</kbd>-<kbd>alt</kbd>-<kbd>C</kbd>)
* <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8182">> new [[Hidden Setting: Tag Pill Drag Filter]] that allows configuration of the tiddlers that are transferred when dragging a tag pill * <<.link-badge-added "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8182">> new [[Hidden Setting: Tag Pill Drag Filter]] that allows configuration of the tiddlers that are transferred when dragging a tag pill
@ -101,6 +109,8 @@ This release includes several fixes and improvements to the TestCaseWidget, its
! Bug Fixes ! Bug Fixes
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8683">> ordering of global macros
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8690">> [[timeline Macro]] to avoid exceeding the limit on the number of tiddlers displayed in a single day
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8333">> tiddlers should not be interactive after they are closed * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8333">> tiddlers should not be interactive after they are closed
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8393">> crash when [[WidgetMessage: tm-copy-to-clipboard]] is passed an empty string * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8393">> crash when [[WidgetMessage: tm-copy-to-clipboard]] is passed an empty string
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8399">> disengage "select all" when cancelling an import * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8399">> disengage "select all" when cancelling an import
@ -109,7 +119,7 @@ This release includes several fixes and improvements to the TestCaseWidget, its
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8476">> importing $:/build tiddler when upgrading to avoid overwriting it * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8476">> importing $:/build tiddler when upgrading to avoid overwriting it
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/d9ac4a823fe0f91c615ed33fa890069f88cc8ab9">> crash with RenderCommand when filename filter returns empty result * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/d9ac4a823fe0f91c615ed33fa890069f88cc8ab9">> crash with RenderCommand when filename filter returns empty result
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8355">> display of language plugins * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8355">> display of language plugins
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8540">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8546">>) display of non-square plugin icons * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8540">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8546">> and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8688">>) display of non-square plugin icons
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8517">> appearance of input elements other than type `text` and `search` * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8517">> appearance of input elements other than type `text` and `search`
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/38081b86c97a795420515156fcd52177574be516">> crash with filesystem adaptor if the wiki folder is missing * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/38081b86c97a795420515156fcd52177574be516">> crash with filesystem adaptor if the wiki folder is missing
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8413">> unwrapped oveflowed code blocks not showing scroll bars when setting "Wrap long lines in code blocks" to "No" in "Theme tweaks" * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8413">> unwrapped oveflowed code blocks not showing scroll bars when setting "Wrap long lines in code blocks" to "No" in "Theme tweaks"
@ -123,13 +133,15 @@ This release includes several fixes and improvements to the TestCaseWidget, its
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/7dfdbae812306875bac2445ca4ee505b406e3be1">> crash if the KeyboardWidget is used within a [[startup action|StartupActions]] * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/7dfdbae812306875bac2445ca4ee505b406e3be1">> crash if the KeyboardWidget is used within a [[startup action|StartupActions]]
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8574">> suffix in the [[encodebase64 Operator]] and [[decodebase64 Operator]] * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8574">> suffix in the [[encodebase64 Operator]] and [[decodebase64 Operator]]
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8557">> overflow of floated elements * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8557">> overflow of floated elements
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8523">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8652">>) tables overflowing tiddler margins on narrow screens * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8523">> (and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8652">> and <<.link-badge-here "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8682">>) tables overflowing tiddler margins on narrow screens
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8610">> the [[colour-picker Macro]] wrongly autoclosing when selecting or typing a colour * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8610">> the [[colour-picker Macro]] wrongly autoclosing when selecting or typing a colour
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8593">> confusing message when the tag picker dropdown is empty * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/issues/8593">> confusing message when the tag picker dropdown is empty
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8672">> misaligned tiddler subtitle * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8672">> misaligned tiddler subtitle
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/f565b5b55da29d8acb428641c4594304d462a539">> GenesisWidget so that explicit attributes take precedence
! Node.js Improvements ! Node.js Improvements
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/commit/ea3cb1c58d96eefd4aca07f5fd79ff1ba01f24fe">> BuildCommand crashing when no wiki folder has been specified
* <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8339">> server crash when authenticating if newlines are contained in the site title * <<.link-badge-fixed "https://github.com/TiddlyWiki/TiddlyWiki5/pull/8339">> server crash when authenticating if newlines are contained in the site title
! Developer Improvements ! Developer Improvements
@ -167,4 +179,5 @@ twMat
valpackett valpackett
webplusai webplusai
wolfsprite wolfsprite
zorrox1024
""">> """>>

View File

@ -11,4 +11,4 @@ title: Output
+ +
title: ExpectedResult title: ExpectedResult
<p>(Kitten|Donkey)(Kitten|Donkey)</p> <p>(Shark|Donkey)(Shark|Donkey)</p>

View File

@ -0,0 +1,15 @@
title: Widgets/ElementWidgetCSSCustomProps
description: Element widget should support CSS custom properties
type: text/vnd.tiddlywiki-multiple
tags: [[$:/tags/wiki-test-spec]]
title: Output
\whitespace trim
<div class="hello" onclick="clicked" style.color="blue" style.color="red" style.background="yellow" --bg-color="purple">
TiddlyWiki
</div>
+
title: ExpectedResult
<p><div class="hello" style="color:red;background:yellow;--bg-color:purple;">TiddlyWiki</div></p>

View File

@ -13,7 +13,6 @@ Use this procedure if the language being submitted is not already present in the
# Copy the language files into the language folder # Copy the language files into the language folder
# Create a `plugin.info` file for the translation # Create a `plugin.info` file for the translation
# Create an appropriate flag image in `icon.tid` # Create an appropriate flag image in `icon.tid`
# Change the title of the [[$:/core/readme]] tiddler to `$:/core/xx-XX/readme`
# Add the new language to tw5.com # Add the new language to tw5.com
# Submit a pull request # Submit a pull request

View File

@ -13,6 +13,7 @@
"de-DE", "de-DE",
"el-GR", "el-GR",
"en-US", "en-US",
"en-PH",
"es-ES", "es-ES",
"fa-IR", "fa-IR",
"fr-FR", "fr-FR",
@ -44,32 +45,32 @@
], ],
"build": { "build": {
"index": [ "index": [
"--rendertiddler","$:/core/save/all","index.html","text/plain"], "--render","$:/core/save/all","index.html","text/plain"],
"output-files": [ "output-files": [
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/Buttons.multids","language/Buttons.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Buttons.multids","language/Buttons.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/ControlPanel.multids","language/ControlPanel.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/ControlPanel.multids","language/ControlPanel.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/CoreReadMe.tid","language/CoreReadMe.tid","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/CoreReadMe.tid","language/CoreReadMe.tid","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/Dates.multids","language/Dates.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Dates.multids","language/Dates.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/EditTemplate.multids","language/EditTemplate.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/EditTemplate.multids","language/EditTemplate.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/Exporters.multids","language/Exporters.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Exporters.multids","language/Exporters.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/Fields.multids","language/Fields.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Fields.multids","language/Fields.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/Filters.multids","language/Filters.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Filters.multids","language/Filters.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/GettingStarted.tid","language/GettingStarted.tid","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/GettingStarted.tid","language/GettingStarted.tid","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/Import.multids","language/Import.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Import.multids","language/Import.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/Misc.multids","language/Misc.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Misc.multids","language/Misc.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/ModuleTypes.multids","language/Docs/ModuleTypes.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/ModuleTypes.multids","language/Docs/ModuleTypes.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/NewJournal.multids","language/NewJournal.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/NewJournal.multids","language/NewJournal.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/Notifications.multids","language/Notifications.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Notifications.multids","language/Notifications.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/PaletteColours.multids","language/Docs/PaletteColours.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/PaletteColours.multids","language/Docs/PaletteColours.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/Search.multids","language/Search.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/Search.multids","language/Search.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/SideBar.multids","language/SideBar.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/SideBar.multids","language/SideBar.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/SiteSubtitle.tid","language/SiteSubtitle.tid","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/SiteSubtitle.tid","language/SiteSubtitle.tid","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/SiteTitle.tid","language/SiteTitle.tid","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/SiteTitle.tid","language/SiteTitle.tid","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/ThemeTweaks.multids","language/ThemeTweaks.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/ThemeTweaks.multids","language/ThemeTweaks.multids","text/plain",
"--rendertiddler","$:/plugins/tiddlywiki/translators/templates/TiddlerInfo.multids","language/TiddlerInfo.multids","text/plain", "--render","$:/plugins/tiddlywiki/translators/templates/TiddlerInfo.multids","language/TiddlerInfo.multids","text/plain",
"--rendertiddlers","[prefix[$:/language/Docs/Types/]removeprefix[$:/language/Docs/Types/]]","$:/plugins/tiddlywiki/translators/templates/type-tid","language/Types","text/plain",".tid", "--render","[prefix[$:/language/Docs/Types/]]","[removeprefix[$:/language/Docs/Types/]search-replace:g:regexp[/|\\\\],[_]addprefix[language/Types/]addsuffix[.tid]]","text/plain","$:/plugins/tiddlywiki/translators/templates/type-tid",
"--rendertiddlers","[prefix[$:/language/Help/]removeprefix[$:/language/Help/]]","$:/plugins/tiddlywiki/translators/templates/help-tid","language/Help","text/plain",".tid", "--render","[prefix[$:/language/Help/]]","[removeprefix[$:/]addsuffix[.tid]]","text/plain","$:/plugins/tiddlywiki/translators/templates/help-tid",
"--rendertiddlers","[prefix[$:/language/Modals/]removeprefix[$:/language/Modals/]]","$:/plugins/tiddlywiki/translators/templates/modal-tid","language/Modals","text/plain",".tid", "--render","[prefix[$:/language/Modals/]]","[removeprefix[$:/]addsuffix[.tid]]","text/plain","$:/plugins/tiddlywiki/translators/templates/modal-tid",
"--rendertiddlers","[prefix[$:/language/Snippets/]removeprefix[$:/language/Snippets/]]","$:/plugins/tiddlywiki/translators/templates/snippet-tid","language/Snippets","text/plain",".tid"] "--render","[prefix[$:/language/Snippets/]]","[removeprefix[$:/]addsuffix[.tid]]","text/plain","$:/plugins/tiddlywiki/translators/templates/snippet-tid"]
} }
} }

View File

@ -0,0 +1,9 @@
list: HelloThere [[Quick Start]] [[Find Out More]] [[TiddlyWiki on the Web]] [[Testimonials and Reviews]] GettingStarted Community
tags: TableOfContents
title: Welcome
type: text/vnd.tiddlywiki
<$transclude $tiddler="HelloThere"/>
''For more information, please select a topic:''
<div class="tc-table-of-contents"><<toc-selective-expandable "Welcome">></div>

View File

@ -1,5 +1,5 @@
created: 20140908114400000 created: 20140908114400000
modified: 20230803053808167 modified: 20241016125145988
tags: About tags: About
title: History of TiddlyWiki title: History of TiddlyWiki
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki

View File

@ -0,0 +1,9 @@
created: 20240612115323606
modified: 20240612115535069
tags: [[Core Variables]] Variables
title: actionTiddlerList Variable
type: text/vnd.tiddlywiki
The variable `actionTiddlerList` is used:
* Within the ''listActions'' string of the DroppableWidget, the <<.def actionTiddlerList>> [[variable|Variables]] contains a [[Title List]] of the tiddlers being dropped.

View File

@ -1,9 +1,15 @@
created: 20150117174359000 created: 20150117174359000
modified: 20180626122309578 modified: 20241018094151786
tags: Concepts Reference tags: Concepts Reference
title: Commands title: Commands
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
A <<.def command>> is one of the following words, written with a `--` prefix and used as a command-line option under Node.js, indicating which action is desired. See [[Using TiddlyWiki on Node.js]] for details of how to use them. A <<.def command>> is one of the following words, written with a `--` prefix and used as a command-line option under Node.js, indicating which action is desired. See [[Using TiddlyWiki on Node.js]] for details of how to use them.
<<list-links "[tag[Commands]]">> ''Commands''
<<list-links "[tag[Commands]] -[tag[$:/deprecated]]" class:"multi-columns">>
''Deprecated Commands''
<<list-links "[tag[Commands]] :and[tag[$:/deprecated]]" class:"multi-columns">>

View File

@ -1,10 +1,12 @@
caption: server caption: server
created: 20131219163923630 created: 20131219163923630
modified: 20180626150505679 modified: 20180626150505679
tags: Commands tags: Commands $:/deprecated
title: ServerCommand title: ServerCommand
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
<<.deprecated-since "5.1.18" "ListenCommand">>.
''Note that the `--server` command is now deprecated in favour of the new ListenCommand''. ''Note that the `--server` command is now deprecated in favour of the new ListenCommand''.
See WebServer for details of TiddlyWiki's web server functionality. See WebServer for details of TiddlyWiki's web server functionality.

View File

@ -1,15 +1,15 @@
created: 20210519110226889 created: 20210519110226889
modified: 20210519110226889 modified: 20241021161007731
tags: [[Other Resources]] tags: [[Other Resources]]
title: "Grok TiddlyWiki" by Soren Bjornstad title: "Grok TiddlyWiki" by Soren Bjornstad
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
url: https://groktiddlywiki.com/read/ url: https://groktiddlywiki.com/read/
This new textbook from Soren Bjornstad is highly recommended for learning ~TiddlyWiki. The presentation and design are also a first class example of using ~TiddlyWiki. Grok ~TiddlyWiki by Soren Bjornstad is an interactive learning environment for TiddlyWiki. It bundles three complementary modes of learning into one TiddlyWiki:
From the site: * It ''explains concepts'' using English text and code examples
* It ''assigns exercises'' that help you apply and practice what you've learned
> Grok ~TiddlyWiki is a textbook that helps you build a deep, lasting understanding of and proficiency with ~TiddlyWiki through a combination of detailed explanations, practical exercises, and spaced-repetition reviews of prompts called takeaways. * It ''presents takeaways'', questions about key terms, concepts, or skills, for review as you continue through the book, to help you retain what you've learned over a longer period of time
{{!!url}} {{!!url}}

View File

@ -2,7 +2,8 @@ title: HelloThumbnail - Grok TiddlyWiki
tags: HelloThumbnail tags: HelloThumbnail
color: #D5B7EA color: #D5B7EA
image: Grok TiddlyWiki Banner image: Grok TiddlyWiki Banner
caption: Grok ~TiddlyWiki caption: Grok ~TiddlyWiki 2.0
link: "Grok TiddlyWiki" by Soren Bjornstad link: "Grok TiddlyWiki" by Soren Bjornstad
ribbon-text: NEW 2.0
Everything you need to know to get the best out of ~TiddlyWiki A comprehensive interactive guide to ~TiddlyWiki, from the very basics to the advanced concepts, featuring exercises and takeaways to aid learning

Binary file not shown.

Before

Width:  |  Height:  |  Size: 94 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

@ -1,27 +1,31 @@
created: 20140919155729620 created: 20140919155729620
modified: 20230427125500432 modified: 20240624102502089
tags: Macros [[Core Macros]] tags: Macros [[Core Macros]]
title: Table-of-Contents Macros title: Table-of-Contents Macros
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
~TiddlyWiki provides several macros for generating a tree of tiddler links by analysing [[tags|Tagging]]: ~TiddlyWiki provides several macros for generating a tree of tiddler links by analysing [[tags|Tagging]]:
;<<.var toc>> ; <<.var toc>>
: A simple tree : A simple tree
;<<.var toc-expandable>>
; <<.var toc-expandable>>
: A tree in which all the branches can be expanded and collapsed : A tree in which all the branches can be expanded and collapsed
;<<.var toc-selective-expandable>>
; <<.var toc-selective-expandable>>
: A tree in which the non-empty branches can be expanded and collapsed : A tree in which the non-empty branches can be expanded and collapsed
;<<.var toc-tabbed-internal-nav>> and <<.var toc-tabbed-external-nav>>
; <<.var toc-tabbed-internal-nav>> and <<.var toc-tabbed-external-nav>>
: A two-panel browser: : A two-panel browser:
:* on the left, a selectively expandable tree that behaves like a set of vertical tabs :* on the left, a selectively expandable tree that behaves like a set of vertical tabs
:* on the right, the content of whichever tiddler the user selects in the tree :* on the right, the content of whichever tiddler the user selects in the tree
The difference between the last two has to do with what happens when the user clicks a link in the right-hand panel: The difference between the last two has to do with what happens when the user clicks a link in the right-hand panel:
;<<.var toc-tabbed-internal-nav>> ; <<.var toc-tabbed-internal-nav>>
: The target tiddler appears in the right-hand panel, replacing the tiddler that contained the link : The target tiddler appears in the right-hand panel, replacing the tiddler that contained the link
;<<.var toc-tabbed-external-nav>>
; <<.var toc-tabbed-external-nav>>
: The target tiddler appears in the normal way (which depends on the user's configured storyview) : The target tiddler appears in the normal way (which depends on the user's configured storyview)
!! Structure !! Structure
@ -42,9 +46,11 @@ To make a table of contents appear in the sidebar, see [[How to add a new tab to
!! Parameters !! Parameters
;tag ; tag
: The root tag that identifies the top level of the tree : The root tag that identifies the top level of the tree
;sort : <<.from-version "5.3.5">> If the <<.param tag>> parameter is "missing" or "an empty" string, the <<.var curretTiddler>> variable is used
; sort
: An optional extra [[filter step|Filter Step]], e.g. `sort[title]` : An optional extra [[filter step|Filter Step]], e.g. `sort[title]`
These two parameters are combined into a single [[filter expression|Filter Expression]] like this: These two parameters are combined into a single [[filter expression|Filter Expression]] like this:

View File

@ -117,12 +117,19 @@ type: text/vnd.tiddlywiki
-webkit-column-gap: 1em; -webkit-column-gap: 1em;
} }
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) { /* Switch to 2 columns for 780x1280 displays which is 780p */
@media (max-width: 1279px) {
.multi-columns { .multi-columns {
column-count: 2; column-count: 2;
} }
} }
@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {
.multi-columns {
column-count: 1;
}
}
.tc-saving-sidebar-category { margin-bottom:10px; } .tc-saving-sidebar-category { margin-bottom:10px; }
.tc-saving-sidebar-category-title { margin-bottom:5px; font-weight:bold; } .tc-saving-sidebar-category-title { margin-bottom:5px; font-weight:bold; }
.tc-saving-sidebar-category-item { margin-left:10px; white-space:nowrap; } .tc-saving-sidebar-category-item { margin-left:10px; white-space:nowrap; }

View File

@ -1,5 +1,5 @@
created: 20170406083917224 created: 20170406083917224
modified: 20190118084621046 modified: 20240612115232524
tags: Variables [[Core Variables]] tags: Variables [[Core Variables]]
title: actionTiddler Variable title: actionTiddler Variable
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@ -7,4 +7,4 @@ type: text/vnd.tiddlywiki
The variable `actionTiddler` is used in subtly different ways by different widgets: The variable `actionTiddler` is used in subtly different ways by different widgets:
* Within the ''actions'' string of the DroppableWidget, the <<.def actionTiddler>> [[variable|Variables]] contains the title of the tiddler being dropped. * Within the ''actions'' string of the DroppableWidget, the <<.def actionTiddler>> [[variable|Variables]] contains the title of the tiddler being dropped.
* Within the ''startactions'' and ''endactions'' string of the DroppableWidget, the <<.def actionTiddler>> [[variable|Variables]] contains a quoted [[Title List]] of all of the titles being dragged. * Within the ''startactions'' and ''endactions'' string of the DraggableWidget, the <<.def actionTiddler>> [[variable|Variables]] contains a quoted [[Title List]] of all of the titles being dragged.

View File

@ -1,22 +1,27 @@
caption: droppable caption: droppable
created: 20170406082820317 created: 20170406082820317
modified: 20231121101447359 modified: 20240612125454153
tags: Widgets TriggeringWidgets tags: Widgets TriggeringWidgets
title: DroppableWidget title: DroppableWidget
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
\define droppable-image-actions() \procedure drop-on-tags-actions()
<$action-log actionTiddlerList=<<actionTiddlerList>>/>
<$action-setfield $tiddler="$:/temp/drop/TitleList" $field="text" text=<<actionTiddlerList>> type="text/plain"/>
\end
\procedure droppable-image-actions()
<$action-setfield $tiddler=<<actionTiddler>> $field="icon" $value=<<currentTiddler>>/> <$action-setfield $tiddler=<<actionTiddler>> $field="icon" $value=<<currentTiddler>>/>
\end \end
\define colour-demo-body() \procedure colour-demo-body()
<$droppable actions=<<droppable-colour-actions>>> <$droppable actions=<<droppable-colour-actions>>>
<span style="display: inline-block; width: 1em; height: 1em;background-color: $(currentTiddler)$;"> <span style=`display: inline-block; width: 1em; height: 1em;background-color: $(currentTiddler)$;`>
</span> </span>
</$droppable> </$droppable>
\end \end
\define droppable-colour-actions() \procedure droppable-colour-actions()
<$action-setfield $tiddler=<<actionTiddler>> $field="color" $value=<<currentTiddler>>/> <$action-setfield $tiddler=<<actionTiddler>> $field="color" $value=<<currentTiddler>>/>
\end \end
@ -26,22 +31,23 @@ See DragAndDropMechanism for an overview.
! Content and Attributes ! Content and Attributes
|!Attribute |!Description | |! Attribute |! Description |
|actions |Actions to be performed when items are dropped | |actions |Actions to be performed when items are dropped. It activates ''1 action per item'' |
|listActions |<<.from-version "5.3.4">> Actions to be performed when items are dropped. It activates ''1 action for'' a the whole ''list of items'' |
|class |Optional CSS classes to assign to the draggable element. The class `tc-droppable` is added automatically, and the class `tc-dragover` is applied while an item is being dragged over the droppable element | |class |Optional CSS classes to assign to the draggable element. The class `tc-droppable` is added automatically, and the class `tc-dragover` is applied while an item is being dragged over the droppable element |
|tag |Optional tag to override the default of a "div" element when the widget is rendered in block mode, or a "span" element when it is rendered in inline mode | |tag |Optional tag to override the default of a "div" element when the widget is rendered in block mode, or a "span" element when it is rendered in inline mode |
|enable |<<.from-version "5.1.22">> Optional value "no" to disable the droppable functionality (defaults to "yes") | |enable |<<.from-version "5.1.22">> Optional value "no" to disable the droppable functionality (defaults to "yes") |
|data-* |<<.from-version "5.3.2">> Optional [[data attributes|https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes]] to be assigned to the HTML element | |data-* |<<.from-version "5.3.2">> Optional [[data attributes|https://developer.mozilla.org/en-US/docs/Learn/HTML/Howto/Use_data_attributes]] to be assigned to the HTML element |
|style.* |<<.from-version "5.3.2">> Optional [[CSS properties|https://developer.mozilla.org/en-US/docs/Web/CSS/Reference]] to be assigned to the HTML element | |style.* |<<.from-version "5.3.2">> Optional [[CSS properties|https://developer.mozilla.org/en-US/docs/Web/CSS/Reference]] to be assigned to the HTML element |
Within the action string, there are two Variables generated by the DroppableWidget: ''Within the action string'', the following variables are generated by the DroppableWidget:
* The [[actionTiddler Variable]] contains the title of the item being dropped |!Variables |!Description |
* The [[modifier Variable]] contains the Modifier Key held while dragging (can be normal, ctrl, shift or ctrl-shift) |`actionTiddler` |For parameter <<.param actions>>, the [[actionTiddler Variable]] contains the title of the item being dropped |
|`actionTiddlerList` |For parameter <<.param listActions>> the [[actionTiddlerList Variable]] contains a [[Title List]] of all the items being dropped |
|`modifier` |The [[modifier Variable]] contains the modifier key held while dragging (can be normal, ctrl, shift or ctrl-shift) |
If multiple items are dropped then the actions are performed repeatedly, once for each dropped item. <<.note """Note that the <<.var actionTiddler>> variable holds a single, unquoted title. This is unlike the DraggableWidget which uses the same variable to pass a quoted [[Title List]].""">>
<<.tip """Note that the [[actionTiddler Variable]] holds a single, unquoted title. This is unlike the DraggableWidget which uses the same variable to pass a quoted [[Title List]].""">>
! Examples ! Examples
@ -53,9 +59,22 @@ This example displays a palette of icons. Dragging a tiddler onto one of the ico
</$droppable> </$droppable>
</$list> </$list>
---
Similarly, this example shows a palette of colours. Dragging a tiddler onto one of the colours assigns that colour to be used for rendering the icon of the tiddler. Similarly, this example shows a palette of colours. Dragging a tiddler onto one of the colours assigns that colour to be used for rendering the icon of the tiddler.
<$list filter="LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black"> <$list filter="LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black">
<<colour-demo-body>> <<colour-demo-body>>
</$list> </$list>
---
Drag the tag pill <<tag HelloThere>> or a single tiddler link [[HelloThere]] into the "Drop Area" below. It will show the "Title List" stored in $:/temp/drop/TitleList
<<.note title:""
_:"""<$droppable listActions=<<drop-on-tags-actions>> >
''Drop'' the tagpill or a link into this ''area''.<br>
~TitleList: <$transclude $tiddler="$:/temp/drop/TitleList"/>
</$droppable>""">>

View File

@ -25,7 +25,7 @@ The content of the <<.wid genesis>> widget is used as the content of the dynamic
<<.from-version "5.2.6">> If the `$type` attribute is missing or blank, the <<.wlink GenesisWidget>> widget does not render an intrinsic element, instead just rendering its children. <<.from-version "5.2.6">> If the `$type` attribute is missing or blank, the <<.wlink GenesisWidget>> widget does not render an intrinsic element, instead just rendering its children.
Note that attributes explicitly specified take precedence over attributes with the same name specified in the `$names` filter. <<.from-version "5.3.6">> Note that attributes explicitly specified take precedence over attributes with the same name specified in the `$names` filter. This has always been the documented behaviour but prior to [[Release 5.3.6]] the implementation was reversed, and the `$names` attributes took precedence. This was fixed in [[Release 5.3.6]].
! Examples ! Examples

View File

@ -1,6 +1,6 @@
caption: HTML caption: HTML
created: 20131205160816081 created: 20131205160816081
modified: 20230615060119987 modified: 20241025073517909
tags: WikiText tags: WikiText
title: HTML in WikiText title: HTML in WikiText
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@ -68,13 +68,13 @@ In an extension of conventional HTML syntax, attributes of elements and widgets
!! Style Attributes !! Style Attributes
<<.from-version "5.2.2">> TiddlyWiki supports the usual HTML ''style'' attribute for assigning CSS styles to elements: TiddlyWiki supports the usual HTML ''style'' attribute for assigning CSS styles to elements:
``` ```
<div style="color:red;">Hello</div> <div style="color:red;">Hello</div>
``` ```
In an extension to HTML, TiddlyWiki also supports accessing individual CSS styles as independent attributes. For example: <<.from-version "5.2.2">> In an extension to HTML, TiddlyWiki also supports accessing individual CSS styles as independent attributes. For example:
``` ```
<div style.color="red">Hello</div> <div style.color="red">Hello</div>
@ -86,10 +86,8 @@ The advantage of this syntax is that it simplifies assigning computed values to
<div style.color={{!!color}}>Hello</div> <div style.color={{!!color}}>Hello</div>
``` ```
<<.from-version "5.3.6">> TiddlyWiki also supports setting [[CSS custom properties|https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties]] as independent attributes. For example:
```
<div --bg-color={{{ [[red]] }}}>Hello</div>
```

View File

@ -21,7 +21,6 @@
"tiddlywiki/readonly" "tiddlywiki/readonly"
], ],
"languages": [ "languages": [
""
], ],
"build": { "build": {
"index": [ "index": [

View File

@ -593,3 +593,5 @@ Val Packett, @valpackett, 2024/07/26
@IchijikuIchigo, 2024/09/29 @IchijikuIchigo, 2024/09/29
JC John Sese Cuneta, @techmagus, 2024/10/07 JC John Sese Cuneta, @techmagus, 2024/10/07
@zorrox1024, 2024/10/20

View File

@ -57,6 +57,9 @@ If no base layers are defined by `<$geobaselayer>` widgets within the `<$geomap>
<$data title="Output" text="""<$geomap <$data title="Output" text="""<$geomap
state=<<qualify "$:/state/demo-map">> state=<<qualify "$:/state/demo-map">>
> >
<$list filter="[all[tiddlers+shadows]tag[$:/tags/GeoMarker]]">
<$geolayer lat={{!!lat}} long={{!!long}} alt={{!!alt}} color={{!!color}}/>
</$list>
</$geomap> </$geomap>
"""/> """/>
<$data $tiddler="$:/plugins/tiddlywiki/geospatial"/> <$data $tiddler="$:/plugins/tiddlywiki/geospatial"/>

View File

@ -15,6 +15,12 @@ title: $:/Translators
Number of translated tiddlers: <$count filter=<<allTheTranslatedTiddlerTitles>>/> of <$count filter=<<allTheTranslatableTiddlerTitles>>/> Number of translated tiddlers: <$count filter=<<allTheTranslatedTiddlerTitles>>/> of <$count filter=<<allTheTranslatableTiddlerTitles>>/>
<$wikify name="max" text="""<$count filter=<<allTheTranslatableTiddlerTitles>>/>""">
<$wikify name="value" text="""<$count filter=<<allTheTranslatedTiddlerTitles>>/>""">
<progress max=<<max>> value=<<value>>/>
</$wikify>
</$wikify>
{{$:/core/ui/PageTemplate/pagecontrols}} {{$:/core/ui/PageTemplate/pagecontrols}}
<<tabs "[all[tiddlers+shadows]tag[$:/tags/TranslationGroup]sort[caption]]" "$:/plugins/tiddlywiki/translators/ui/group/Miscellaneous" "$:/state/translatorsTab" "tc-vertical">> <<tabs "[all[tiddlers+shadows]tag[$:/tags/TranslationGroup]sort[caption]]" "$:/plugins/tiddlywiki/translators/ui/group/Miscellaneous" "$:/state/translatorsTab" "tc-vertical">>

View File

@ -1,9 +1,9 @@
title: $:/plugins/tiddlywiki/translators/templates/help-tid title: $:/plugins/tiddlywiki/translators/templates/help-tid
\define generateTid(title) \procedure generateTid(title)
title: $:/language/Help/$title$ title: <<title>>
description: <$text text={{$:/language/Help/$title$!!description}}/> description: <$text text={{!!description}}/>
<$text text={{$:/language/Help/$title$}}/> <$text text={{!!text}}/>
\end \end
<$macrocall $name="generateTid" title=<<currentTiddler>>/> <$transclude $variable="generateTid" title=<<currentTiddler>>/>

View File

@ -1,12 +1,12 @@
title: $:/plugins/tiddlywiki/translators/templates/modal-tid title: $:/plugins/tiddlywiki/translators/templates/modal-tid
\define generateTid(title) \procedure generateTid(title)
title: $:/language/Modals/$title$ title: <<title>>
type: <$text text={{$:/language/Modals/$title$!!type}}/> type: <$text text={{!!type}}/>
subtitle: <$text text={{$:/language/Modals/$title$!!subtitle}}/> subtitle: <$text text={{!!subtitle}}/>
footer: <$text text={{$:/language/Modals/$title$!!footer}}/> footer: <$text text={{!!footer}}/>
help: <$text text={{$:/language/Modals/$title$!!help}}/> help: <$text text={{!!help}}/>
<$text text={{$:/language/Modals/$title$}}/> <$text text={{!!text}}/>
\end \end
<$macrocall $name="generateTid" title=<<currentTiddler>>/> <$transclude $variable="generateTid" title=<<currentTiddler>>/>

View File

@ -1,10 +1,10 @@
title: $:/plugins/tiddlywiki/translators/templates/snippet-tid title: $:/plugins/tiddlywiki/translators/templates/snippet-tid
\define generateTid(title) \procedure generateTid(title)
title: $:/language/Snippets/$title$ title: <<title>>
tags: $:/tags/TextEditor/Snippet tags: $:/tags/TextEditor/Snippet
caption: <$text text={{$:/language/Snippets/$title$!!caption}}/> caption: <$text text={{!!caption}}/>
<$text text={{$:/language/Snippets/$title$}}/> <$text text={{!!text}}/>
\end \end
<$macrocall $name="generateTid" title=<<currentTiddler>>/> <$transclude $variable="generateTid" title=<<currentTiddler>>/>

View File

@ -1,10 +1,10 @@
title: $:/plugins/tiddlywiki/translators/templates/type-tid title: $:/plugins/tiddlywiki/translators/templates/type-tid
\define generateTid(title) \procedure generateTid(title)
title: $:/language/Docs/Types/$title$ title: <<title>>
description: <$text text={{$:/language/Docs/Types/$title$!!description}}/> description: <$text text={{!!description}}/>
name: <$text text={{$:/language/Docs/Types/$title$!!name}}/> name: <$text text={{!!name}}/>
group: <$text text={{$:/language/Docs/Types/$title$!!group}}/> group: <$text text={{!!group}}/>
\end \end
<$macrocall $name="generateTid" title=<<currentTiddler>>/> <$transclude $variable="generateTid" title=<<currentTiddler>>/>

View File

@ -295,6 +295,13 @@ kbd {
color: <<colour highlight-foreground>>; color: <<colour highlight-foreground>>;
} }
/* Markdown uses mark element to highlight */
mark {
background: <<colour highlight-background>>;
color: <<colour highlight-foreground>>;
}
form.tc-form-inline { form.tc-form-inline {
display: inline; display: inline;
} }
@ -720,7 +727,7 @@ html body.tc-body .tc-btn-rounded:hover svg {
} }
button svg.tc-image-button, button .tc-image-button img { button svg.tc-image-button, button .tc-image-button img {
height: auto; height: 1em;
width: 1em; width: 1em;
} }
@ -2623,6 +2630,9 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk .tc-plugin-info-sta
flex-grow: 0; flex-grow: 0;
flex-shrink: 0; flex-shrink: 0;
line-height: 1; line-height: 1;
height: 2em;
width: 2em;
display: grid;
} }
.tc-plugin-info-chunk.tc-plugin-info-description { .tc-plugin-info-chunk.tc-plugin-info-description {
@ -2689,8 +2699,9 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk .tc-plugin-info-sta
} }
.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg { .tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {
width: 2em; max-width: 2em;
height: auto; max-height: 2em;
margin: auto;
} }
.tc-plugin-info-dropdown { .tc-plugin-info-dropdown {
@ -2793,20 +2804,11 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk .tc-plugin-info-sta
display: table; display: table;
} }
/* Fix overflow in table and toc */ /* Fix overflow toc, manager and testcase output */
.tc-tiddler-body .tc-tabbed-table-of-contents { .tc-tiddler-body .tc-tabbed-table-of-contents, .tc-manager-list-item-content, .tc-test-case-output {
overflow-x: auto; overflow-x: auto;
} }
.tc-tiddler-body > table {
display: block;
overflow: auto;
}
.tc-tiddler-body > table tbody {
display: table;
width: 100%;
}
/* A wrapper to fix table overflow */ /* A wrapper to fix table overflow */
.tc-table-wrapper { .tc-table-wrapper {
@ -2866,13 +2868,16 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk .tc-plugin-info-sta
.tc-chooser-item svg, .tc-chooser-item svg,
.tc-chooser-item img{ .tc-chooser-item img{
width: 1em; max-width: 1em;
height: 1em; max-height: 1em;
vertical-align: middle; vertical-align: middle;
} }
.tc-language-chooser .tc-image-button img { .tc-language-chooser .tc-image-button img {
max-width: 2em;
max-height: 1em;
width: auto; width: auto;
height: auto;
vertical-align: -0.15em; vertical-align: -0.15em;
} }