Contact emails

[email protected]

Explainer

https://github.com/whatwg/html/pull/7319

Specification

https://html.spec.whatwg.org/multipage/input.html#dom-input-showpicker

Summary

The HTMLInputElement showPicker() method allows web developers to
programmatically show a browser picker for input elements (temporal, color,
file, and those with suggestions like datalist or autofill).

Blink component

Blink>Forms
<https://bugs.chromium.org/p/chromium/issues/list?q=component:Blink%3EForms>

Motivation

Developers have been asking for years for a way to programmatically open a
browser date picker. See
https://www.google.com/search?q=programmatically+open+date+picker+site:stackoverflow.com
<https://www.google.com/search?q=programmatically+open+date+picker+site%3Astackoverflow.com>

Because of that, they had to rely on custom widget libraries and CSS hacks
for specific browsers.

This is currently possible in some browsers, for some controls, via the
click() method. However this is not interoperable (
https://github.com/whatwg/html/issues/6909#issuecomment-897097048) and
considered a bad idea (
https://github.com/whatwg/html/issues/3232#issuecomment-345279014).
Providing showPicker() gives developers a supported alternative to click(),
and will allow us to align Chromium's click() behavior with the
specification and other browsers in a future Intent to Ship.

Initial public proposal

https://github.com/whatwg/html/issues/6909

TAG review

https://github.com/w3ctag/design-reviews/issues/688

TAG review status

Pending

Risks
Interoperability and Compatibility

For interoperability: This feature was developed in collaboration with
Gecko engineers, who are positive. It also will help with improving click()
interoperability in the future, which is currently messy (
https://github.com/whatwg/html/issues/6909#issuecomment-897097048).

For compatibility: this feature is specified and designed to give browsers
flexibility in whether they display a picker, or how they display it.
Developers cannot observe either of these things (except for file pickers,
which fire certain events), so we will not be constrained by any
JavaScript-observable behavior if we need to make future changes to form
control UIs.

Gecko: Positive -
https://github.com/whatwg/html/pull/7319#issuecomment-988837778

WebKit: No signal -
https://lists.webkit.org/pipermail/webkit-dev/2021-December/032071.html

Web developers: Positive -
https://twitter.com/quicksave2k/status/1420320560345661440 (6 Retweets and
29 Likes) - https://github.com/whatwg/html/issues/6909 (9 👍  and 5 ❤️)
show that developers like this particular solution. Plus the evidence of
developer interest in the use case, per the Motivation section above.


Debuggability

No specific DevTools changes are required. This feature is treated like any
other JS method.
Will this feature be supported on all six Blink platforms (Windows, Mac,
Linux, Chrome OS, Android, and Android WebView)?

Yes

Is this feature fully tested by web-platform-tests
<https://chromium.googlesource.com/chromium/src/+/master/docs/testing/web_platform_tests.md>
?

No. We are able to test the error case behaviors but the actual showing of
the picker is not testable using WPT.

https://github.com/web-platform-tests/wpt/tree/master/html/semantics/forms/the-input-element


Flag name

chrome://flags/#enable-experimental-web-platform-features

Requires code in //chrome?

False

Tracking bug

https://bugs.chromium.org/p/chromium/issues/detail?id=939561

Estimated milestones

M99

Link to entry on the Chrome Platform Status

https://www.chromestatus.com/feature/5692248021794816

Links to previous Intent discussions

Intent to prototype:
https://groups.google.com/a/chromium.org/g/blink-dev/c/fEebe5uXQ1I

-- 
You received this message because you are subscribed to the Google Groups 
"blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAPpwU5Lh3nwAzZs4P1eHdg80dViZomPc%2BY0HpQ9HYpxgUSgnQA%40mail.gmail.com.

Reply via email to