-
Couldn't load subscription status.
- Fork 3k
Add dialog light dismiss behavior #10737
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
Conversation
|
This is exciting! Unfortunately I am going OOO for a week starting ~now, so won't get a chance to review too soon. Hopefully others will be able to help with some reviews, but I would like to get a chance to carefully review the close watcher integration, etc. before this lands. Would you mind commenting on what approach you took to the mutability of the closedby attribute? We discussed that a bit in #9373, and I think we came up with a tentative proposal, but I'm not sure it was battle-tested. |
Looks like |
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.
This looks great to me!
That's totally fine - no rush. I did this one in the opposite order that I usually do: spec first, prototype after. So I'm moving on to prototype it now, which might reveal other flaws. But I thought since @lukewarlow had gotten the spec into such decent shape, that I'd clean it up and open the PR in case folks saw other flaws there that I could address in the prototype.
As @keithamus said, I just kept what @lukewarlow did in the original PR, and used a new |
source
Outdated
| <p>The <code data-x="attr-dialog-closedby">closedby</code> attribute's <i data-x="invalid value | ||
| default">invalid value default</i> and <i data-x="missing value default">missing value | ||
| default</i> are both the <dfn data-x="attr-closedby-auto-state">Auto</dfn> state. The <span | ||
| data-x="attr-closedby-auto-state">auto</span> state matches <span | ||
| data-x="attr-closedby-closerequest-state">closerequest</span> when the element is modal; | ||
| otherwise <span data-x="attr-closedby-none-state">none</span>.</p> |
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 very inconsistent spelling of states here. They should match the capitalization and words of how they are introduced. And should typically be followed by the word state (though that's not linked).
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.
Also, perhaps the statement of fact is better as a note?
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 very inconsistent spelling of states here. They should match the capitalization and words of how they are introduced. And should typically be followed by the word state (though that's not linked).
Yep, I agree. I fixed them all up, I think. Please let me know if you see any others I missed. All are now lowercase.
Also, perhaps the statement of fact is better as a note?
Sorry - can you help me understand this? Which "statement of fact"?
|
Gentle ping on this PR. All checkboxes are checked and it has an editor approval. |
|
Fwiw regarding implementor interest I raised mozilla/standards-positions#998 and WebKit/standards-positions#329 |
Oh, thanks! I didn't realize those had been filed. I added them to the OP block. |
|
Back from vacation, and merged! Please remember to send a PR renaming the tests from .tentative. |
|
Would |
Yes, that closes the dialog. Here's a demo you can play around with in Chrome canary (w/ experimental web flag): https://jsfiddle.net/vco1mdth/ |
|
PR to remove tentative from tests at web-platform-tests/wpt#50100 |
Welcome back, and thanks! |
This adds a few things:
A
closedbyattribute that can be used to control the light dismiss behavior of dialogs:<dialog closedby=none>- no user-triggered closing of dialogs at all.<dialog closedby=closerequest>- user pressing ESC (or other close trigger) closes the dialog<dialog closedby=any>- user clicking outside the dialog, or pressing ESC, closes the dialog. Akin topopover=autobehavior.<dialog>- i.e. noclosedbyattribute - default/old behavior. Behaves likeclosedby=closerequestfor modal dialogs, andclosedby=nonefor modeless dialogs.This PR also (per the request) adds a
dialog.requestClose()which fires thecancelevent, and then (if that isn't cancelled) fires thecloseevent and closes the dialog.I also consolidated the "light dismiss" activities into one algorithm, which will need to be called by Add popover light dismiss integration w3c/pointerevents#460 if that ever gets some attention.
Some interesting related links:
<dialog>#9373 - the WHATWG discussionclosedbycloserequestCloses #9373
(See WHATWG Working Mode: Changes for more details.)
/dnd.html ( diff )
/dom.html ( diff )
/index.html ( diff )
/indices.html ( diff )
/infrastructure.html ( diff )
/interaction.html ( diff )
/interactive-elements.html ( diff )
/popover.html ( diff )
/semantics-other.html ( diff )