EuiColorPicker uses standard portal DOM positioning, intentional popover entrance#2038
Conversation
| top: 0, | ||
| }); | ||
| const [lastColor, setlastColor] = useState<HSV | {}>({}); | ||
| export const EuiSaturation: FunctionComponent<EuiSaturationProps> = forwardRef( |
There was a problem hiding this comment.
This diff is unfortunate. The gist is that I added forwardRef and a single ref, which changes a bunch of indentation. Nothing important to review in the file.
chandlerprall
left a comment
There was a problem hiding this comment.
Code changes LGTM; Tested mouse & keyboard interaction locally, including with the added container example.
The popover is not closable by keyboard when focus is still on the color picker, tabbing off of the color picker's elements allows Escape to close the popover. I'm not sure if this should be a blocker or not.
|
|
I honestly don't think this component needs the dropdown arrow. It just adds noise and extra tab to get out of the input. I do think it needs better VO instruction when you tab into it since all you get is: For me, when the picker is in a popover, and I escape to close the picker, it doesn't focus back on the input like the normal one does. But I think that's the only flaw I saw. |
Yep. On it.
The popover thing was a mistake a made in the docs. Fixed now. I did notice that the modal steals focus no matter what, though (you can see it happen with the select in the first example here: https://elastic.github.io/eui/#/layout/modal). I'm going to open an issue for it.
I could see this (as @snide mentioned at one point) being more like |
I'll dissent, but not strongly. I navigate form fields primarily with the keyboard, and I don't think I would discover that the color picker opens without some visual indication. Maybe I would try the up & down arrows to see if it some how modifies the field value, and find instead that My 2¢, take it or leave it :) |
Also think the arrow, even if it's just an indication and not a button (which I still think is fine to make just visual), is helpful to be there. Even in @cchaos' mock above... yes, it does add visual noise, but even with that gradient there it lets me know the gradient itself is clickable and will probably do something (even if I don't know what that something is). I think it's useful the same way the carets are useful on old fashioned primary, filled buttons. It just telegraphs what happens next. |
Yay @chandlerprall found a popover bug. If you have an I'll open a bug for this Bug: #2042 |
|
Latest commit makes the arrow a visual indicator only. See how that feels. |
cchaos
left a comment
There was a problem hiding this comment.
It looks like I'm outnumbered 😜 I'm happy that it's not a button at least and maybe we can revisit just the "compressed" version when those get implemented.


Summary
Uses the idea behind #1988 to address positioning inconsistency when
EuiColorPickeris placed in a popover. Often, the problem can be "fixed" withposition: fixed, but wecanshould do better.The immediate change here is that the nested
EuiPortalis no longer injected within the color picker component tree. Instead, it uses its shallow, late placement in the DOM to always ensure positioning (like otherEuiPopoverthings).The second change would resolve #1988, if accepted. It takes the concept from #1914 (comment), which asserts that popover-aided form elements should generally behave like native
selectelements:The fundamental changes:
EuiComboBox, et al.).z-indexand positioning management math by fully embracing the EUI Platform™.Checklist
- [ ] This was checked in mobile- [ ] Any props added have proper autodocs- [ ] This required updates to Framer X components