Good idea, Jeremy!  I was originally writing this up as a ticket on GitHub, 
but I figured it'd get more exposure here.  I'll open a ticket straight 
away.

-Rob

On Wednesday, November 28, 2018 at 5:53:23 AM UTC-6, Jeremy Ruston wrote:
>
> Hi Rob
>
> Great, a proper overhaul of the popup mechanism is long overdue — the 
> popup mechanism was one of the first, and most demanding, interactive 
> mechanisms to be added to TW5 and I think we can now do a lot better.
>
> Perhaps the details may be best discussed on a new GitHub ticket,
>
> Best wishes
>
> Jeremy.
>
>
>
>
>
> On 28 Nov 2018, at 03:39, Rob Hoelz <[email protected] <javascript:>> 
> wrote:
>
> Hi everyone,
>
> I have been thinking for a while about the popup system after trying to 
> fix a bug I reported, and I think the popup system could benefit from a 
> little overhaul.  I hope I'm not overreaching here - I would just really 
> appreciate some feedback on these ideas!
>
> What circumstances are the popup system used in?
>
> To start, I looked through all references to "popup" in the TiddlyWiki 
> codebase (not including non-official plugins).  I found the plugin system 
> is used for these four UI patterns:
>
>
>    - Dropdowns (ex. search results, edit toolbar popups) - this is 
>    probably the most common
>    - Menus (a special case of dropdown - ex. the export menu)
>    - Accordion UI pattern (ex. *$:/Manager*, plugin info, tiddler info 
>    when you click "more > info" in the view toolbar)
>    - Dialogs (ex. the confirmation prompt when you try to delete tiddlers 
>    matching a filter in *$:/AdvancedSearch*)
>
> So, bearing those four use cases in mind...
>
> What are the requirements of the popup system?
>
> We need popups to open when we activate the corresponding UI element
>
> This mostly corresponds to* <$edit-text> *and *<$button>* - but I don't 
> see why we should limit ourselves to these.  I like keeping the current 
> shorthand - it makes the common case easy to do, plus it's backwards 
> compatible.
>
> We need popups to close under certain conditions
>
> In my opinion, a popup should close under two conditions:
>
>
>    - If I click on a UI element that completes the workflow that the 
>    popup was summoned to complete (applies to dropdowns, menus, and dialogs). 
>  
>    For example:
>       - Clicking on a tag in the tag dropdown
>       - Clicking on a button in a "confirm" dialog popup
>       - Clicking on a tiddler in the "create wikitext link" dropdown
>    - If I click on or *otherwise grant focus* to an element outside of 
>    the popup
>       - Dialogs are kind of the exception here - clicking outside of a 
>       dialog should probably not close it, but I don't think it's the end of 
> the 
>       world if it does
>       - Another exception is the "popup handle" - an input element that's 
>       bound to the popup.  A prime example of this is the search query edit 
> field 
>       - clicking in it shouldn't close the search results
>    
> Clicking within a popup shouldn't close it, I think - which is contrary to 
> the current default behavior.  I think most people would expect a popup to 
> stick around until they interact with it meaningfully, dimiss it with the 
> button they summoned it with, or click outside of it.
>
> What would a new popup system look like?
>
> I rather like the idea of a new action widget - *<$action-popup>* - to be 
> the common interface between wikitext and the popup mechanism.  It can be 
> the plumbing upon which the higher-level interfaces offered by 
> *<$edit-text>* and *<$button>* are built.
>
> A widget can be bound to a popup (similar to how *focusPopup* works now) 
> - clicking on a widget will not close its own popup (but *will* close 
> others).
>
> The current popup system currently maintains state in JS; I would really 
> like for the state to be maintained entirely in the tiddler store for 
> consistency purposes.
>
> The current system supports nesting of popups - as far as I can tell, this 
> is only really used for popups that behave like menus, so maybe the right 
> thing to do is to break out a distinct "menu" widget.  Doing so might 
> simplify state management quite a bit!  It might also make sense to break 
> out a distinct "dialog" widget.
>
> I'm tempted to tie certain bits of extra state to a popup - eg. the search 
> text for "create wikitext link", so that it gets cleared as well when a 
> popup is closed, but maybe that's trying to do too much.
>
> Thinking Ahead
>
> (I have no idea why it just decided to go double-space) There are some 
> other things that users might want popups to do someday; for example, 
> Tobias' appear plugin augments the popup system with some additional 
> behavior, and users might want features like tearoff menus in the future.  
> We can't predict *everything* everyone might want, but it might be a good 
> time to incorporate augmentations like Tobias' and identify other possible 
> uses for the popup system.
>
> Thanks for reading!  Please let me know if you have any suggestions, or if 
> you find flaws in my ideas!  I'd be happy to undertake this work, as long 
> as it's a solution everyone's happy with.
> -Rob
>
>
> -- 
> You received this message because you are subscribed to the Google Groups 
> "TiddlyWikiDev" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] <javascript:>.
> To post to this group, send email to [email protected] 
> <javascript:>.
> Visit this group at https://groups.google.com/group/tiddlywikidev.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/tiddlywikidev/6c257911-599d-4d04-b51d-172a14075737%40googlegroups.com
>  
> <https://groups.google.com/d/msgid/tiddlywikidev/6c257911-599d-4d04-b51d-172a14075737%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWikiDev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/tiddlywikidev.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywikidev/91c52bc6-76b7-435d-83a8-038319947f8b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to