-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Customizable <select>
element
#9799
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
@whatwg/forms |
This comment was marked as spam.
This comment was marked as spam.
Thank you for bringing this proposal to the WHATWG Joey! I thought this would be a good opportunity to outline how colleagues and I feel about extending HTML in this area. In particular, we feel that new and existing form controls:
We understand that the (Aside: #5791 seems very related to this issue.) |
I think the explainer doesn't explain the need for a new element in a convincing way, because the multiple examples look addressable in the context of (From off-explainer examples, I gather that the ambition level of the feature is much higher than the explainer makes appear.) |
Thanks for taking a look and discussing with colleagues Anne!
If we made appearance:none or a new appearance value like appearance:base as discussed here and here have a standardized style, then the default appearance:auto appearance could look the same as OS controls. That would be up to each UA to decide, as it is currently for all other form controls.
Agreed! Styleability is the primary driving use case for the current proposal.
Agreed! Domenic left some feedback in this vein and we completely revamped the proposal to use existing HTML element patterns by using new tag names instead of slot and behavior attributes.
Agreed! Existing elements conform to this by letting the browser/OS provide a native picker which unfortunately can’t be styled or customized by web developers, right? It was recommended that we let the browser use native pickers for selectlist on mobile here. Ideally developers would be enabled to make their own pickers that work on these platforms when they want to as well.
Agreed! This is also a core requirement for the proposal. I have been working closely with accessibility experts participating in OpenUI to ensure that the accessibility mappings and keyboard behaviors follow the current best practices in ARIA.
Agreed! The content is fully customizable/replaceable, so it should be localizable and internationalizable, right? The only thing I can think of is supporting right-to-left and vertical writing modes when rendering where the listbox popup goes, which is something we are doing for other form control elements and we can easily do via Anchor Positioning for selectlist. Is there anything else you had in mind here?
It sounds like yall would prefer to reuse the existing
I agree that duplication should be avoided. Selectlist is not a complete duplicate of select. |
Thanks for the feedback! I am improving the examples here: openui/open-ui#918 |
I just wanted to point out Windows doesn't provide flag emojis so this specific example is a good use case for needing images not emoji. |
If you use
For It would also have the benefit of having a consistent design with (There are some challenges here with how to match these options and their elements from CSS, but that seems like a surmountable problem.) I haven't looked at survey in detail, but I'd assume that if |
I’ve been discussing with @annevk and @pxlcoder about how to move forward here, and we have reached agreement on some things. Please correct if I misrepresent anything!
|
I'm concerned by the implications of the multiple attribute. How does it work with the new parsing? That being said I am excited by the progressive enhancement possibilities. |
@annevk The majority you cannot and it isn't solely about styling but also extending them. While
@josepharhar @annevk so will this likewise have the child of |
The idea (as I see it) is to still have a The UA shadowroot will certainly adapt if and when needed to support slotting in and replacing the default button and listbox. Does that answer your question? I'm not sure if I understood it well. |
As per the spec discussion, we are going to allow <button>s in <select> to replace the opener button and <datalist>s in <select> to replace the listbox instead of creating a <selectlist> element. whatwg/html#9799 Bug: 1511354 Change-Id: If2ee766c57faf655ab31c6714be7fd682efcc177
As per the spec discussion, we are going to allow <button>s in <select> to replace the opener button and <datalist>s in <select> to replace the listbox instead of creating a <selectlist> element. whatwg/html#9799 Bug: 1511354 Change-Id: If2ee766c57faf655ab31c6714be7fd682efcc177
As per the spec discussion, we are going to allow <button>s in <select> to replace the opener button and <datalist>s in <select> to replace the listbox instead of creating a <selectlist> element. whatwg/html#9799 Bug: 1511354 Change-Id: If2ee766c57faf655ab31c6714be7fd682efcc177
As per the spec discussion, we are going to allow <button>s in <select> to replace the opener button and <datalist>s in <select> to replace the listbox instead of creating a <selectlist> element. whatwg/html#9799 Bug: 1511354 Change-Id: If2ee766c57faf655ab31c6714be7fd682efcc177
As per the spec discussion, we are going to allow <button>s in <select> to replace the opener button and <datalist>s in <select> to replace the listbox instead of creating a <selectlist> element. whatwg/html#9799 Bug: 1511354 Change-Id: If2ee766c57faf655ab31c6714be7fd682efcc177
Adding agenda+ to move this to stage 1 |
I updated the explainer to be |
I added accessibility related PRs to the OP |
Will there be a polyfill? |
I'm not planning on creating a polyfill. Ideally, select elements in non-supporting browsers will still be perfectly usable but not have the new appearance of customizable select. |
@josepharhar thanks, it makes sense if the browser parser will ignore any of the new relaxed allowed elements. |
This comment has been minimized.
This comment has been minimized.
I would like to contribute my thoughts to this endeavor. I haven't been exactly sure how to go about that. So initially I wrote up a small blog post, but found no good way to share it (I had nothing but problems trying to get on matrix chat). Then I found this issue, and decided I'd just try sharing it here. The post is not long, but for a super quick overview, I am suggesting the following:
(If this would be better vetted elsewhere, please let me know. I don't have a lot of time to spare but am willing to do what I can.) |
We sort of had this before as a datalist element, but we decided to remove that here: openui/open-ui#1082
You can already make customizable select appear like a modal by applying styles to Since its all in CSS, this has the added benefit of being able to change this based on media queries.
Not sure I completely understand, but if you don't want the user to change the value then you can use the disabled attribute on the select element. If you want an option to be selected by default, then you can set the selected attribute on it. Neither of these things are new with customizable select. |
tl;dr If this progresses normally, what is the likely timeline for it to be generally supported by major browsers? An open source project I am involved with (CiviCRM) is looking for good accessible alternatives to the select2 widget that failed to be accepted into the WordPress Gutenberg editor about 6 years ago due to pushback from a11y advocates. There don't seem to be any but this initiative would be ideal. However, some of us are thinking that waiting for it is likely over-optimistic on our part. Does it stand a good chance of seeing the light of day including being implemented by all major browsers in the next few years? Hard to guess, I know, but we aren't knowledgeable about how to assess things so far upstream from our work. TIA. |
Well that's unfortunate -- seems datalist is getting axed across the board. From what I read the option container is now just a div (with a popover attribute). That's what really bothers me about this, it creates a ghost div that has no explicit representation in the HTML. Notice @mfreed7 asked if we would still be able to wrap the option elements in a
So the issue is it is too reminiscent of the text selection pseudo-selector, is that it? Shrug Minor issue anyway. I was thinking about this and I am not sure how useful If I understand it correctly, it can also be emulated by putting content outside the select and styling it look like a select. With a little CSS adjustment it would look pretty much the same. Only thing that might not be easy is exact positioning (popover oddness there) and the placement of the dropdown marker icon (but I'd imagine for such uses the marker will get hidden anyway). Note, I tried it in Chrome for comparison and To me, what would be much more useful is a way for options to have longer descriptions, but only a short version ends up on the select button. E.g. consider a list of states where you want the the select button to have just the two letter abbreviation but the options to also have the full name, like
That's a good point! You are right I updated my post to retract the "attachment" being based on HTML structure. I still think there option elements container needs to have an explicit manifestation in the HTML though.
I'll try the disabled attribute and see how that works. Thanks. As for the selected attribute, that's actually what I don't want to have to do -- rather, if the |
This proposal includes parser, styling, and rendering changes to make the
<select>
element fully customizable by authors.Explainer: https://open-ui.org/components/customizableselect
Spec PRs:
<select>
parser #10557<selectedcontent>
element #10633CSS spec PRs:
Accessibility PRs:
selectedcontent
element and allowances for 'button' part of select w3c/html-aria#528Related HTML issues:
<selectedoption>
element #10520appearance:base
<select>
not to require user activation beforeshowPicker()
? #10604<select>
elements #10317<select>
#10310Related CSS issues:
<selectedoption>
element for<select>
w3c/csswg-drafts#10242<select>
stylability w3c/csswg-drafts#10333::picker(select)
match:popover-open
? w3c/csswg-drafts#10775<select>
w3c/csswg-drafts#10857<select>
w3c/csswg-drafts#10908<select>
w3c/csswg-drafts#10909Standards positions:
selectedcontent
element mozilla/standards-positions#1142<select>
parser WebKit/standards-positions#414<select>
parser mozilla/standards-positions#1086The text was updated successfully, but these errors were encountered: