Commit Graph

8 Commits

Author SHA1 Message Date
Bryan Housel
e08bfb2add Simplify accept/cancel event dispatchers, store datum in _choice 2018-12-12 15:26:18 -05:00
Bryan Housel
fc1f7e4d46 Trigger a change event when accepting combo option with return, tab
(closes #4900, closes #5449)

Some browsers need an explicit `change` event triggered on the input field
when a value has been changed by the combo and accepted by pressing return
or tab.  This was only an issue on combos that aren't part of uiFields,
since the uiFields are all setup to respond to `change`,`input`,`blur` etc.
2018-12-11 23:25:47 -05:00
Bryan Housel
39b3f1df68 Avoid creating comboboxes
(closes #5568)

Several strategies in here:
- Move uiCombobox() from inside the render function to class variable
- Don't render stuff like the raw tag editor when it's collapsed
- Don't show as many fields/combos on hover
- Don't instantiate fields (like universal/more) until they're actually shown
- Bind the combo on enter selection not on update selection
2018-12-11 16:07:00 -05:00
Bryan Housel
6732ca6eda Comboboxes no longer show on focus.. update tests 2018-12-11 01:19:51 -05:00
Bryan Housel
ff646fa2c8 Dispatch a 'cancel' event if the user hits escape 2018-12-11 00:09:55 -05:00
Bryan Housel
6cf1d63b48 Make sure dropdown doesn't remain visible
(closes #5575)

Also improves keyboard navigation, and adds some scrollintoview
workarounds to make sure that the selected option is visible
while also not causing the whole page to move.
2018-12-10 23:54:06 -05:00
Bryan Housel
15a54cab17 Use context.container instead of passing it in 2018-12-10 14:14:27 -05:00
Bryan Housel
e5dedeff8b Move lib/d3.combobox.js -> ui/combobox.js
As with other things from this lib/ folder, little original code remains
and turning these things into reusable d3 plugins is not a priority.
2018-12-10 12:38:21 -05:00