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.
