-
Notifications
You must be signed in to change notification settings - Fork 2.7k
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
Add commandfor & command attributes to HTMLButtonElement #9841
base: main
Are you sure you want to change the base?
Conversation
45e4032
to
9579336
Compare
I realize this is also in the steps for getting the popover target element, but in both cases I'm wondering why its specified to return null if the node is in the disable state? Doing so, at least with
that state gets removed. That's unexpected, to have that state removed based on whether the button is disabled or not. And for invokertarget - if it is really is going to do more than just show/hide content - there are a lot of other states that should still be exposed, regarless of if the element is in the disabled state or not. edit: I can file a bug for disabled / popovertarget if necessary - i just wanted to get insight on this first, before I went and made that issue. cc @mfreed7 |
This comment was marked as outdated.
This comment was marked as outdated.
7f0f9ea
to
834a8b1
Compare
See related spec PR whatwg/html#9841
Fwiw HTML requires a positive standards position or for chrome LGTMs on an intent to ship to be considered supportive. Saying that Mozilla have marked their position as positive so that's 1 implementor interested. I do wonder how this requirement works for a feature such as this which will require multiple PRs to add to the spec? |
I'm confused why this feature is being done as multiple PRs; it makes review a good deal harder. |
If it makes it easier to review I’m happy to put more into one PR. I figured it would be worthwhile splitting it into the core vs each elements behaviour as I imagine there will be more to discuss with each elements behaviour. |
Well, it'd make it easier for me, but I haven't signed up to review yet, so no need to make any changes until we get some more opinions :) Edited to add: the reason it makes it more difficult is that I don't think we want to accept the feature piecemeal. |
As per openui/open-ui#900 (comment) this'll need updating to only fire the event when the action is custom (has a hypen) or is recognised and valid (correct action name on correct element). TLDR is that this will allow us to add default actions in future without conflicting with user land code. |
In openui/open-ui#952 (comment) we resolved that "Invokers v1 will be popover and dialog invoking." This should help keep this initial PR as small as possible while also avoid the issue of reviewing stuff piecemeal. So #9875 can be merged into this along with dialog related changes. |
Chromium is explicitly supportive of this proposal, so I believe it has two implementer support (including Mozilla). Is this PR in a state that it can get a review? I'm happy to do so, if it'd help. |
I'd be happy to get reviews, I think this is in a good position for that. |
Done - I added a first set of comments. |
As asked on Chat, is there an a11y PR for this? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's quite a bit more wrapping nits I see, but I will do a cleanup pass once these and the a11y question are addressed and OP is complete (haven't checked).
There is: w3c/aria#2354, but it'll need a little reword due to how we've worked the logic for buttons. |
In whatwg/html#9841 the behaviour for commandfor= as a form owner has subtly changed: - <button commandfor=> (implicit submit) that has a form owner now does nothing (so we will log a warning to the console telling the user that this is the case and they should add `type=button` to make it a command button). - <button type=reset command..> and <button type=submit command..> that have a form owner should do the behaviour explicitly laid out by their `type`, and ignore and `command`/`commandfor` attributes semantics. In this case we log a warning to the console telling the user that the command/commandfor are being ignored. To keep changes light here, only the DefaultEventHandler/CommandForElement logic has changed; a more significant refactor might be needed to adjust `type_` to ensure it does not resolve to `kSubmit` implicitly, but that should be handled more delicately, I believe. Bug: 382238696 Change-Id: I7d5583d34a2d615faeed80905816edb3f261d60d
In whatwg/html#9841 the behaviour for commandfor= as a form owner has subtly changed: - <button commandfor=> (implicit submit) that has a form owner now does nothing (so we will log a warning to the console telling the user that this is the case and they should add `type=button` to make it a command button). - <button type=reset command..> and <button type=submit command..> that have a form owner should do the behaviour explicitly laid out by their `type`, and ignore and `command`/`commandfor` attributes semantics. In this case we log a warning to the console telling the user that the command/commandfor are being ignored. To keep changes light here, only the DefaultEventHandler/CommandForElement logic has changed; a more significant refactor might be needed to adjust `type_` to ensure it does not resolve to `kSubmit` implicitly, but that should be handled more delicately, I believe. Bug: 382238696 Change-Id: I7d5583d34a2d615faeed80905816edb3f261d60d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6070260 Auto-Submit: Keith Cirkel <[email protected]> Reviewed-by: Mason Freed <[email protected]> Commit-Queue: Keith Cirkel <[email protected]> Cr-Commit-Position: refs/heads/main@{#1393810}
In whatwg/html#9841 the behaviour for commandfor= as a form owner has subtly changed: - <button commandfor=> (implicit submit) that has a form owner now does nothing (so we will log a warning to the console telling the user that this is the case and they should add `type=button` to make it a command button). - <button type=reset command..> and <button type=submit command..> that have a form owner should do the behaviour explicitly laid out by their `type`, and ignore and `command`/`commandfor` attributes semantics. In this case we log a warning to the console telling the user that the command/commandfor are being ignored. To keep changes light here, only the DefaultEventHandler/CommandForElement logic has changed; a more significant refactor might be needed to adjust `type_` to ensure it does not resolve to `kSubmit` implicitly, but that should be handled more delicately, I believe. Bug: 382238696 Change-Id: I7d5583d34a2d615faeed80905816edb3f261d60d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6070260 Auto-Submit: Keith Cirkel <[email protected]> Reviewed-by: Mason Freed <[email protected]> Commit-Queue: Keith Cirkel <[email protected]> Cr-Commit-Position: refs/heads/main@{#1393810}
In whatwg/html#9841 the behaviour for commandfor= as a form owner has subtly changed: - <button commandfor=> (implicit submit) that has a form owner now does nothing (so we will log a warning to the console telling the user that this is the case and they should add `type=button` to make it a command button). - <button type=reset command..> and <button type=submit command..> that have a form owner should do the behaviour explicitly laid out by their `type`, and ignore and `command`/`commandfor` attributes semantics. In this case we log a warning to the console telling the user that the command/commandfor are being ignored. To keep changes light here, only the DefaultEventHandler/CommandForElement logic has changed; a more significant refactor might be needed to adjust `type_` to ensure it does not resolve to `kSubmit` implicitly, but that should be handled more delicately, I believe. Bug: 382238696 Change-Id: I7d5583d34a2d615faeed80905816edb3f261d60d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6070260 Auto-Submit: Keith Cirkel <[email protected]> Reviewed-by: Mason Freed <[email protected]> Commit-Queue: Keith Cirkel <[email protected]> Cr-Commit-Position: refs/heads/main@{#1393810}
In whatwg/html#9841 the behaviour for commandfor= as a form owner has subtly changed: - <button commandfor=> (implicit submit) that has a form owner now does nothing (so we will log a warning to the console telling the user that this is the case and they should add `type=button` to make it a command button). - <button type=reset command..> and <button type=submit command..> that have a form owner should do the behaviour explicitly laid out by their `type`, and ignore and `command`/`commandfor` attributes semantics. In this case we log a warning to the console telling the user that the command/commandfor are being ignored. To keep changes light here, only the DefaultEventHandler/CommandForElement logic has changed; a more significant refactor might be needed to adjust `type_` to ensure it does not resolve to `kSubmit` implicitly, but that should be handled more delicately, I believe. Bug: 382238696 Change-Id: I7d5583d34a2d615faeed80905816edb3f261d60d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6070260 Auto-Submit: Keith Cirkel <[email protected]> Reviewed-by: Mason Freed <[email protected]> Commit-Queue: Keith Cirkel <[email protected]> Cr-Commit-Position: refs/heads/main@{#1393810}
…r combinations, a=testonly Automatic update from web-platform-tests Re-design logic for commandfor form-owner combinations In whatwg/html#9841 the behaviour for commandfor= as a form owner has subtly changed: - <button commandfor=> (implicit submit) that has a form owner now does nothing (so we will log a warning to the console telling the user that this is the case and they should add `type=button` to make it a command button). - <button type=reset command..> and <button type=submit command..> that have a form owner should do the behaviour explicitly laid out by their `type`, and ignore and `command`/`commandfor` attributes semantics. In this case we log a warning to the console telling the user that the command/commandfor are being ignored. To keep changes light here, only the DefaultEventHandler/CommandForElement logic has changed; a more significant refactor might be needed to adjust `type_` to ensure it does not resolve to `kSubmit` implicitly, but that should be handled more delicately, I believe. Bug: 382238696 Change-Id: I7d5583d34a2d615faeed80905816edb3f261d60d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6070260 Auto-Submit: Keith Cirkel <[email protected]> Reviewed-by: Mason Freed <[email protected]> Commit-Queue: Keith Cirkel <[email protected]> Cr-Commit-Position: refs/heads/main@{#1393810} -- wpt-commits: 3d3ea3af3e2049be17b4d881c957550c13637ba4 wpt-pr: 49594
…r combinations, a=testonly Automatic update from web-platform-tests Re-design logic for commandfor form-owner combinations In whatwg/html#9841 the behaviour for commandfor= as a form owner has subtly changed: - <button commandfor=> (implicit submit) that has a form owner now does nothing (so we will log a warning to the console telling the user that this is the case and they should add `type=button` to make it a command button). - <button type=reset command..> and <button type=submit command..> that have a form owner should do the behaviour explicitly laid out by their `type`, and ignore and `command`/`commandfor` attributes semantics. In this case we log a warning to the console telling the user that the command/commandfor are being ignored. To keep changes light here, only the DefaultEventHandler/CommandForElement logic has changed; a more significant refactor might be needed to adjust `type_` to ensure it does not resolve to `kSubmit` implicitly, but that should be handled more delicately, I believe. Bug: 382238696 Change-Id: I7d5583d34a2d615faeed80905816edb3f261d60d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6070260 Auto-Submit: Keith Cirkel <[email protected]> Reviewed-by: Mason Freed <[email protected]> Commit-Queue: Keith Cirkel <[email protected]> Cr-Commit-Position: refs/heads/main@{#1393810} -- wpt-commits: 3d3ea3af3e2049be17b4d881c957550c13637ba4 wpt-pr: 49594
…r combinations, a=testonly Automatic update from web-platform-tests Re-design logic for commandfor form-owner combinations In whatwg/html#9841 the behaviour for commandfor= as a form owner has subtly changed: - <button commandfor=> (implicit submit) that has a form owner now does nothing (so we will log a warning to the console telling the user that this is the case and they should add `type=button` to make it a command button). - <button type=reset command..> and <button type=submit command..> that have a form owner should do the behaviour explicitly laid out by their `type`, and ignore and `command`/`commandfor` attributes semantics. In this case we log a warning to the console telling the user that the command/commandfor are being ignored. To keep changes light here, only the DefaultEventHandler/CommandForElement logic has changed; a more significant refactor might be needed to adjust `type_` to ensure it does not resolve to `kSubmit` implicitly, but that should be handled more delicately, I believe. Bug: 382238696 Change-Id: I7d5583d34a2d615faeed80905816edb3f261d60d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6070260 Auto-Submit: Keith Cirkel <chromiumkeithcirkel.co.uk> Reviewed-by: Mason Freed <masonfchromium.org> Commit-Queue: Keith Cirkel <chromiumkeithcirkel.co.uk> Cr-Commit-Position: refs/heads/main{#1393810} -- wpt-commits: 3d3ea3af3e2049be17b4d881c957550c13637ba4 wpt-pr: 49594 UltraBlame original commit: c8018e3c22b59bc1daf9a5bef312e955ba15bccb
…r combinations, a=testonly Automatic update from web-platform-tests Re-design logic for commandfor form-owner combinations In whatwg/html#9841 the behaviour for commandfor= as a form owner has subtly changed: - <button commandfor=> (implicit submit) that has a form owner now does nothing (so we will log a warning to the console telling the user that this is the case and they should add `type=button` to make it a command button). - <button type=reset command..> and <button type=submit command..> that have a form owner should do the behaviour explicitly laid out by their `type`, and ignore and `command`/`commandfor` attributes semantics. In this case we log a warning to the console telling the user that the command/commandfor are being ignored. To keep changes light here, only the DefaultEventHandler/CommandForElement logic has changed; a more significant refactor might be needed to adjust `type_` to ensure it does not resolve to `kSubmit` implicitly, but that should be handled more delicately, I believe. Bug: 382238696 Change-Id: I7d5583d34a2d615faeed80905816edb3f261d60d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6070260 Auto-Submit: Keith Cirkel <chromiumkeithcirkel.co.uk> Reviewed-by: Mason Freed <masonfchromium.org> Commit-Queue: Keith Cirkel <chromiumkeithcirkel.co.uk> Cr-Commit-Position: refs/heads/main{#1393810} -- wpt-commits: 3d3ea3af3e2049be17b4d881c957550c13637ba4 wpt-pr: 49594 UltraBlame original commit: c8018e3c22b59bc1daf9a5bef312e955ba15bccb
…r combinations, a=testonly Automatic update from web-platform-tests Re-design logic for commandfor form-owner combinations In whatwg/html#9841 the behaviour for commandfor= as a form owner has subtly changed: - <button commandfor=> (implicit submit) that has a form owner now does nothing (so we will log a warning to the console telling the user that this is the case and they should add `type=button` to make it a command button). - <button type=reset command..> and <button type=submit command..> that have a form owner should do the behaviour explicitly laid out by their `type`, and ignore and `command`/`commandfor` attributes semantics. In this case we log a warning to the console telling the user that the command/commandfor are being ignored. To keep changes light here, only the DefaultEventHandler/CommandForElement logic has changed; a more significant refactor might be needed to adjust `type_` to ensure it does not resolve to `kSubmit` implicitly, but that should be handled more delicately, I believe. Bug: 382238696 Change-Id: I7d5583d34a2d615faeed80905816edb3f261d60d Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6070260 Auto-Submit: Keith Cirkel <chromiumkeithcirkel.co.uk> Reviewed-by: Mason Freed <masonfchromium.org> Commit-Queue: Keith Cirkel <chromiumkeithcirkel.co.uk> Cr-Commit-Position: refs/heads/main{#1393810} -- wpt-commits: 3d3ea3af3e2049be17b4d881c957550c13637ba4 wpt-pr: 49594 UltraBlame original commit: c8018e3c22b59bc1daf9a5bef312e955ba15bccb
This adds the
commandfor
&command
attributes and a "command" event using theCommandEvent
interface.Button activation checks if the button has a "commandfor" target and if so performs invoker command behaviour depending on
command
and the target element.Some related (eventual) follow up issues around this feature:
Investigate making the invalid state of
<button type>
_not_ submit #10462; Investigate making the invalid state of<button type>
not submitLift restriction on buttons with implicit
type=submit
andcommand
/commandfor
being no-op #10832; Lift restriction on buttons with implicittype=submit
andcommand
/commandfor
being no-opAt least two implementers are interested (and none opposed):
Tests are written and can be reviewed and commented upon at:
Implementation bugs are filed:
MDN issue is filed: Add documentation for the "command" and "commandfor" attributes, and "command" event. mdn/content#30829
The top of this comment includes a clear commit message to use.
a11y & i18n are considered and relevant PRs are created: Add command & commandfor attribute related mappings w3c/aria#2354
(See WHATWG Working Mode: Changes for more details.)
/dom.html ( diff )
/form-elements.html ( diff )
/index.html ( diff )
/indices.html ( diff )
/interaction.html ( diff )
/interactive-elements.html ( diff )
/webappapis.html ( diff )