From 66b68f4a58f2e7e24954d6f59c3791deaf0025e6 Mon Sep 17 00:00:00 2001 From: Simon Huber Date: Sat, 12 Oct 2019 13:04:10 +0200 Subject: [PATCH] Allow configuration of default focus field of new tiddlers (#4238) * add editFocus attribute to edit widget * add focus condition to title editTemplate * add focus condition to body-editor editTemplate * add focus attribute to type editTemplate * add focus attribute to fields editTemplate * add focus attribute to tag-picker * add $:/config/AutoFocus tiddler ... default focus is title * Update Basics.tid * Update ControlPanel.multids * Create minifocusswitcher.tid * Update minifocusswitcher.tid * Update Basics.tid * Update body-editor.tid --- core/language/en-GB/ControlPanel.multids | 1 + core/modules/widgets/edit.js | 4 +++- core/ui/ControlPanel/Basics.tid | 1 + core/ui/EditTemplate/body-editor.tid | 1 + core/ui/EditTemplate/fields.tid | 2 +- core/ui/EditTemplate/title.tid | 2 +- core/ui/EditTemplate/type.tid | 2 +- core/wiki/config/AutoFocus.tid | 2 ++ core/wiki/macros/tag-picker.tid | 2 +- core/wiki/minifocusswitcher.tid | 7 +++++++ 10 files changed, 19 insertions(+), 5 deletions(-) create mode 100644 core/wiki/config/AutoFocus.tid create mode 100644 core/wiki/minifocusswitcher.tid diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index c7ff155c0..90884aa60 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -5,6 +5,7 @@ Advanced/Hint: Internal information about this TiddlyWiki Appearance/Caption: Appearance Appearance/Hint: Ways to customise the appearance of your TiddlyWiki. Basics/AnimDuration/Prompt: Animation duration: +Basics/AutoFocus/Prompt: Default AutoFocus field: Basics/Caption: Basics Basics/DefaultTiddlers/BottomHint: Use [[double square brackets]] for titles with spaces. Or you can choose to <$button set="$:/DefaultTiddlers" setTo="[list[$:/StoryList]]">retain story ordering Basics/DefaultTiddlers/Prompt: Default tiddlers: diff --git a/core/modules/widgets/edit.js b/core/modules/widgets/edit.js index 678297ab2..92ac0e1be 100644 --- a/core/modules/widgets/edit.js +++ b/core/modules/widgets/edit.js @@ -47,6 +47,7 @@ EditWidget.prototype.execute = function() { this.editClass = this.getAttribute("class"); this.editPlaceholder = this.getAttribute("placeholder"); this.editTabIndex = this.getAttribute("tabindex"); + this.editFocus = this.getAttribute("focus",""); // Choose the appropriate edit widget this.editorType = this.getEditorType(); // Make the child widgets @@ -58,7 +59,8 @@ EditWidget.prototype.execute = function() { index: {type: "string", value: this.editIndex}, "class": {type: "string", value: this.editClass}, "placeholder": {type: "string", value: this.editPlaceholder}, - "tabindex": {type: "string", value: this.editTabIndex} + "tabindex": {type: "string", value: this.editTabIndex}, + "focus": {type: "string", value: this.editFocus} }, children: this.parseTreeNode.children }]); diff --git a/core/ui/ControlPanel/Basics.tid b/core/ui/ControlPanel/Basics.tid index 11563a3bc..a4fc82e5f 100644 --- a/core/ui/ControlPanel/Basics.tid +++ b/core/ui/ControlPanel/Basics.tid @@ -24,6 +24,7 @@ caption: {{$:/language/ControlPanel/Basics/Caption}} |<$link to="$:/config/NewJournal/Title"><> |<$edit-text tiddler="$:/config/NewJournal/Title" default="" tag="input"/> | |<$link to="$:/config/NewJournal/Text"><> |<$edit tiddler="$:/config/NewJournal/Text" tag="textarea" class="tc-edit-texteditor" default=""/> | |<$link to="$:/config/NewJournal/Tags"><> |<$edit-text tiddler="$:/config/NewJournal/Tags" default="" tag="input"/> | +|<> |{{$:/snippets/minifocusswitcher}} | |<> |{{$:/snippets/minilanguageswitcher}} | |<> |<> | |<> |<> | diff --git a/core/ui/EditTemplate/body-editor.tid b/core/ui/EditTemplate/body-editor.tid index 9920b03c5..a299d063d 100644 --- a/core/ui/EditTemplate/body-editor.tid +++ b/core/ui/EditTemplate/body-editor.tid @@ -6,6 +6,7 @@ title: $:/core/ui/EditTemplate/body/editor class="tc-edit-texteditor tc-edit-texteditor-body" placeholder={{$:/language/EditTemplate/Body/Placeholder}} tabindex={{$:/config/EditTabIndex}} + focus={{{ [{$:/config/Autofocus}match[text]then[true]] ~[[false]] }}} ><$set diff --git a/core/ui/EditTemplate/fields.tid b/core/ui/EditTemplate/fields.tid index 4b5ab5d4b..ad0c78214 100644 --- a/core/ui/EditTemplate/fields.tid +++ b/core/ui/EditTemplate/fields.tid @@ -40,7 +40,7 @@ $value={{$:/temp/newfieldvalue}}/> <$text text=<>/>: -<$edit-text tiddler=<> field=<> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}}/> +<$edit-text tiddler=<> field=<> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}}/> <$button class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}> diff --git a/core/ui/EditTemplate/title.tid b/core/ui/EditTemplate/title.tid index 6496db075..0f3632ad1 100644 --- a/core/ui/EditTemplate/title.tid +++ b/core/ui/EditTemplate/title.tid @@ -1,7 +1,7 @@ title: $:/core/ui/EditTemplate/title tags: $:/tags/EditTemplate -<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus="true" tabindex={{$:/config/EditTabIndex}}/> +<$edit-text field="draft.title" class="tc-titlebar tc-edit-texteditor" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}}/> <$vars pattern="""[\|\[\]{}]""" bad-chars="""`| [ ] { }`"""> diff --git a/core/ui/EditTemplate/type.tid b/core/ui/EditTemplate/type.tid index 8bf206d74..64c941037 100644 --- a/core/ui/EditTemplate/type.tid +++ b/core/ui/EditTemplate/type.tid @@ -3,7 +3,7 @@ tags: $:/tags/EditTemplate \define lingo-base() $:/language/EditTemplate/
<$fieldmangler> -<> <$edit-text field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<> class="tc-edit-typeeditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}/> <$button popup=<> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}} <$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}} +<> <$edit-text field="type" tag="input" default="" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<> class="tc-edit-typeeditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}}/> <$button popup=<> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}} <$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}}
diff --git a/core/wiki/config/AutoFocus.tid b/core/wiki/config/AutoFocus.tid new file mode 100644 index 000000000..a1a9f71b1 --- /dev/null +++ b/core/wiki/config/AutoFocus.tid @@ -0,0 +1,2 @@ +title: $:/config/AutoFocus +text: title diff --git a/core/wiki/macros/tag-picker.tid b/core/wiki/macros/tag-picker.tid index 9f29c3665..b0c1543cb 100644 --- a/core/wiki/macros/tag-picker.tid +++ b/core/wiki/macros/tag-picker.tid @@ -18,7 +18,7 @@ $(actions)$
<$keyboard key="ENTER" actions=<>> -<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<> class="tc-edit-texteditor tc-popup-handle" tabindex=<>/> +<$edit-text tiddler="$:/temp/NewTagName" tag="input" default="" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<> class="tc-edit-texteditor tc-popup-handle" tabindex=<> focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}/> <$button popup=<> class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}} <$set name="tag" value={{$:/temp/NewTagName}}> diff --git a/core/wiki/minifocusswitcher.tid b/core/wiki/minifocusswitcher.tid new file mode 100644 index 000000000..ca9e1d4a0 --- /dev/null +++ b/core/wiki/minifocusswitcher.tid @@ -0,0 +1,7 @@ +title: $:/snippets/minifocusswitcher + +<$select tiddler="$:/config/Autofocus"> +<$list filter="title tags text type fields"> + + +