-
Notifications
You must be signed in to change notification settings - Fork 3.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Now, popups will follow this process when showing/hiding: showPopup(): 1. Move the popup to the top layer, and remove the UA display:none style. 2. Update style. (Transitions can start from this state.) 3. Set the :top-layer or (whatever) pseudo class. 4. Update style. (Animations/transitions happen here.) hidePopup(): 1. Remove the :top-layer pseudo class. 2. Update style. (Animations/transitions start here.) 3. If the hidePopup() call is not due to a "force out" situation, wait at this step until all finished promises on popup.getAnimations() resolve. 4. Remove the popup from the top layer, and add the UA display:none style. 5. Update style. See this issue for more details: openui/open-ui#335 Bug: 1307772 Change-Id: Ia20eb6e9533c1a0b1029ca1279d42fe2648300af
- Loading branch information
1 parent
4996a54
commit 5ed4cd5
Showing
5 changed files
with
227 additions
and
0 deletions.
There are no files selected for viewing
34 changes: 34 additions & 0 deletions
34
html/semantics/popups/popup-animated-display-ref.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
<!DOCTYPE html> | ||
|
||
<div class=topmost></div> | ||
<div class=fakepopup>This is a popup</div> | ||
|
||
|
||
<style> | ||
.fakepopup { | ||
/* Per spec: */ | ||
display: block; | ||
position: fixed; | ||
top: 0; | ||
/* Per settings in test file: */ | ||
width: 100px; | ||
height: 100px; | ||
border: 1px solid; | ||
padding: 1em; | ||
margin: 1em; | ||
background: white; | ||
color: black; | ||
/* The animated property */ | ||
left: 100px; | ||
} | ||
.topmost { | ||
position:fixed; | ||
top:0; | ||
left:0; | ||
width:1000px; | ||
height:1000px; | ||
background:green; | ||
margin:0; | ||
padding:0; | ||
} | ||
</style> |
61 changes: 61 additions & 0 deletions
61
html/semantics/popups/popup-animated-hide-display.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
<!DOCTYPE html> | ||
<html class="reftest-wait"> | ||
<meta charset="utf-8"> | ||
<link rel=author href="mailto:masonf@chromium.org"> | ||
<link rel=help href="https://open-ui.org/components/popup.research.explainer"> | ||
<link rel=match href="popup-animated-display-ref.tentative.html"> | ||
|
||
<div popup>This is a popup</div> | ||
<div class=topmost></div> | ||
|
||
<style> | ||
[popup] { | ||
width: 100px; | ||
height: 100px; | ||
border: 1px solid; | ||
padding: 1em; | ||
margin: 1em; | ||
background: white; | ||
color: black; | ||
left: 0; | ||
transition: left 20s steps(2, jump-end) -10s; | ||
} | ||
[popup]:top-layer { | ||
left: 200px; | ||
} | ||
.topmost { | ||
position:fixed; | ||
z-index: 999999; | ||
top:0; | ||
left:0; | ||
width:1000px; | ||
height:1000px; | ||
background:green; | ||
margin:0; | ||
padding:0; | ||
} | ||
</style> | ||
|
||
<script> | ||
window.onload = () => { | ||
requestAnimationFrame(() => { | ||
requestAnimationFrame(() => { | ||
// This will show the popup, hide the popup, and start the transition. | ||
const popup = document.querySelector('[popup]'); | ||
popup.showPopup(); | ||
popup.getAnimations()[0].finish(); | ||
if (getComputedStyle(popup).left != "200px") | ||
popup.remove(); | ||
popup.hidePopup(); | ||
document.getAnimations()[0].ready.then(() => { | ||
requestAnimationFrame(() => { | ||
requestAnimationFrame(() => { | ||
// Take a screenshot now. | ||
document.documentElement.classList.remove('reftest-wait'); | ||
}); | ||
}); | ||
}); | ||
}); | ||
}); | ||
} | ||
</script> |
16 changes: 16 additions & 0 deletions
16
html/semantics/popups/popup-animated-hide-finishes-ref.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
<!DOCTYPE html> | ||
|
||
<div class=topmost></div> | ||
|
||
<style> | ||
.topmost { | ||
position:fixed; | ||
top:0; | ||
left:0; | ||
width:1000px; | ||
height:1000px; | ||
background:green; | ||
margin:0; | ||
padding:0; | ||
} | ||
</style> |
60 changes: 60 additions & 0 deletions
60
html/semantics/popups/popup-animated-hide-finishes.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
<!DOCTYPE html> | ||
<html class="reftest-wait"> | ||
<meta charset="utf-8"> | ||
<link rel=author href="mailto:masonf@chromium.org"> | ||
<link rel=help href="https://open-ui.org/components/popup.research.explainer"> | ||
<link rel=match href="popup-animated-hide-finishes-ref.tentative.html"> | ||
|
||
<div popup>This is a popup</div> | ||
<div class=topmost></div> | ||
|
||
<style> | ||
[popup] { | ||
width: 100px; | ||
height: 100px; | ||
border: 1px solid; | ||
padding: 1em; | ||
margin: 1em; | ||
background: white; | ||
color: black; | ||
left: 0px; | ||
/* Immediate transition: */ | ||
transition: left 1s -1s; | ||
} | ||
[popup]:top-layer { | ||
left: 200px; | ||
} | ||
[popup]::backdrop { | ||
background-color: red; | ||
} | ||
.topmost { | ||
position:fixed; | ||
z-index: 999999; | ||
top:0; | ||
left:0; | ||
width:1000px; | ||
height:1000px; | ||
background:green; | ||
margin:0; | ||
padding:0; | ||
} | ||
</style> | ||
|
||
<script> | ||
window.onload = () => { | ||
requestAnimationFrame(() => { | ||
requestAnimationFrame(() => { | ||
// This will show the popup, hide the popup, and start the hide transition, | ||
// which should immediately finish. | ||
document.querySelector('[popup]').showPopup(); | ||
document.querySelector('[popup]').hidePopup(); | ||
requestAnimationFrame(() => { | ||
requestAnimationFrame(() => { | ||
// Take a screenshot now. | ||
document.documentElement.classList.remove('reftest-wait'); | ||
}); | ||
}); | ||
}); | ||
}); | ||
} | ||
</script> |
56 changes: 56 additions & 0 deletions
56
html/semantics/popups/popup-animated-show-display.tentative.html
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,56 @@ | ||
<!DOCTYPE html> | ||
<html class="reftest-wait"> | ||
<meta charset="utf-8"> | ||
<link rel=author href="mailto:masonf@chromium.org"> | ||
<link rel=help href="https://open-ui.org/components/popup.research.explainer"> | ||
<link rel=match href="popup-animated-display-ref.tentative.html"> | ||
|
||
<div popup>This is a popup</div> | ||
<div class=topmost></div> | ||
|
||
<style> | ||
[popup] { | ||
width: 100px; | ||
height: 100px; | ||
border: 1px solid; | ||
padding: 1em; | ||
margin: 1em; | ||
background: white; | ||
color: black; | ||
left: 0; | ||
transition: left 20s steps(2, jump-end) -10s; | ||
} | ||
[popup]:top-layer { | ||
left: 200px; | ||
} | ||
.topmost { | ||
position:fixed; | ||
z-index: 999999; | ||
top:0; | ||
left:0; | ||
width:1000px; | ||
height:1000px; | ||
background:green; | ||
margin:0; | ||
padding:0; | ||
} | ||
</style> | ||
|
||
<script> | ||
window.onload = () => { | ||
requestAnimationFrame(() => { | ||
requestAnimationFrame(() => { | ||
// This will show the popup, and start the transition. | ||
document.querySelector('[popup]').showPopup(); | ||
document.getAnimations()[0].ready.then(() => { | ||
requestAnimationFrame(() => { | ||
requestAnimationFrame(() => { | ||
// Take a screenshot now. | ||
document.documentElement.classList.remove('reftest-wait'); | ||
}); | ||
}); | ||
}); | ||
}); | ||
}); | ||
} | ||
</script> |