I've created an issue corresponding to this topic here: https://github.com/Jermolene/TiddlyWiki5/issues/3591
On Wednesday, November 28, 2018 at 8:14:03 AM UTC-6, Rob Hoelz wrote: > > 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]> 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]. >> 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/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/0045fc39-bf11-4534-a459-fdcd5ea09823%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.
