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] 
> <mailto:[email protected]>.
> To post to this group, send email to [email protected] 
> <mailto:[email protected]>.
> Visit this group at https://groups.google.com/group/tiddlywikidev 
> <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 
> <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/101A9684-B847-482D-A4F4-A47D8191A982%40gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to