Skip to content

Commit 573442f

Browse files
committed
Allow top layer elements to be nested within popovers
Fixes #9998 Implemented in chromium here: https://chromium-review.googlesource.com/c/chromium/src/+/5229300
1 parent 8027fc5 commit 573442f

File tree

1 file changed

+47
-14
lines changed

1 file changed

+47
-14
lines changed

source

+47-14
Original file line numberDiff line numberDiff line change
@@ -61121,8 +61121,11 @@ interface <dfn interface>HTMLDialogElement</dfn> : <span>HTMLElement</span> {
6112161121
<li><p>Set <span>this</span>'s <span>previously focused element</span> to the
6112261122
<span>focused</span> element.</p></li>
6112361123

61124-
<li><p>Run <span>hide all popovers</span> given <span>this</span>'s <span>node
61125-
document</span>.</p></li>
61124+
<li><p>Let <var>hideUntil</var> be the result of running <span>topmost popover ancestor</span>
61125+
given <span>this</span>, null, and false.</p></li>
61126+
61127+
<li><p>Run <span data-x="hide-all-popovers-until">hide all popovers until</span> given
61128+
<var>hideUntil</var>, false, and true.</p></li>
6112661129

6112761130
<li><p>Run the <span>dialog focusing steps</span> given <span>this</span>.</p></li>
6112861131
</ol>
@@ -61184,8 +61187,11 @@ interface <dfn interface>HTMLDialogElement</dfn> : <span>HTMLElement</span> {
6118461187
<li><p>Set <span>this</span>'s <span>previously focused element</span> to the
6118561188
<span>focused</span> element.</p></li>
6118661189

61187-
<li><p>Run <span>hide all popovers</span> given <span>this</span>'s <span>node
61188-
document</span>.</p></li>
61190+
<li><p>Let <var>hideUntil</var> be the result of running <span>topmost popover ancestor</span>
61191+
given <span>this</span>, null, and false.</p></li>
61192+
61193+
<li><p>Run <span data-x="hide-all-popovers-until">hide all popovers until</span> given
61194+
<var>hideUntil</var>, false, and true.</p></li>
6118961195

6119061196
<li><p>Run the <span>dialog focusing steps</span> given <span>this</span>.</p></li>
6119161197
</ol>
@@ -84446,7 +84452,7 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8444684452
data-x="popover-showing-state">showing</span>; otherwise false.</p></li>
8444784453
</ol>
8444884454

84449-
<p>To <dfn data-x="hide-all-popovers-until">hide all popovers until</dfn>, given an <span
84455+
<p>To <dfn export data-x="hide-all-popovers-until">hide all popovers until</dfn>, given an <span
8445084456
data-x="HTML elements">HTML element</span> or <code>Document</code> <var>endpoint</var>, a boolean
8445184457
<var>focusPreviousElement</var>, and a boolean <var>fireEvents</var>:</p>
8445284458

@@ -84538,10 +84544,10 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8453884544
<span data-x="hide-all-popovers-until">hide all popovers until</span> given <var>document</var>,
8453984545
false, and false.</p>
8454084546

84541-
<p>To find the <dfn>topmost popover ancestor</dfn>, given a <code>Node</code>
84542-
<var>newPopover</var>, and an <span data-x="HTML elements">HTML element</span> or null
84543-
<var>invoker</var>, perform the following steps. They return an <span data-x="HTML
84544-
elements">HTML element</span> or null.</p>
84547+
<p>To find the <dfn export>topmost popover ancestor</dfn>, given a <code>Node</code>
84548+
<var>newPopoverOrTopLayerElement</var>, an <span data-x="HTML elements">HTML element</span> or
84549+
null <var>invoker</var>, and a boolean <var>isPopover</var>, perform the following steps. They
84550+
return an <span data-x="HTML elements">HTML element</span> or null.</p>
8454584551

8454684552
<div class="note">
8454784553
<p>The <span>topmost popover ancestor</span> algorithm will return the topmost (latest in the
@@ -84569,11 +84575,38 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8456984575
</div>
8457084576

8457184577
<ol>
84578+
<li>
84579+
<p>If <var>isPopover</var> is true:</p>
84580+
84581+
<ol>
84582+
<li><p><span>Assert</span>: <var>newPopoverOrTopLayerElement</var> is an <span data-x="HTML
84583+
elements">HTML element</span>.</p></li>
84584+
84585+
<li><p><span>Assert</span>: <var>newPopoverOrTopLayerElement</var>'s <code
84586+
data-x="attr-popover">popover</code> attribute is not in the <span
84587+
data-x="attr-popover-none-state">no popover state</span> or the <span
84588+
data-x="attr-popover-manual-state">manual</span> state.</p></li>
84589+
84590+
<li><p><span>Assert</span>: <var>newPopoverOrTopLayerElement</var>'s <span>popover visibility
84591+
state</span> is not in the <span data-x="popover-showing-state">popover showing
84592+
state</span>.</p></li>
84593+
</ol>
84594+
</li>
84595+
84596+
<li>
84597+
<p>Otherwise:</p>
84598+
84599+
<ol>
84600+
<li><p><span>Assert</span>: <var>invoker</var> is null.</p></li>
84601+
</ol>
84602+
</li>
84603+
8457284604
<li><p>Let <var>popoverPositions</var> be an empty <span>ordered map</span>.</p></li>
8457384605

8457484606
<li><p>Let <var>index</var> be 0.</p></li>
8457584607

84576-
<li><p>Let <var>document</var> be <var>newPopover</var>'s <span>node document</span>.</p></li>
84608+
<li><p>Let <var>document</var> be <var>newPopoverOrTopLayerElement</var>'s <span>node
84609+
document</span>.</p></li>
8457784610

8457884611
<li>
8457984612
<p>For each <var>popover</var> of <var>document</var>'s <span>showing auto popover
@@ -84587,8 +84620,8 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8458784620
</ol>
8458884621
</li>
8458984622

84590-
<li><p><span data-x="map set">Set</span> <var>popoverPositions</var>[<var>newPopover</var>] to
84591-
<var>index</var>.</p></li>
84623+
<li><p>If <var>isPopover</var> is true, then <span data-x="map set">Set</span>
84624+
<var>popoverPositions</var>[<var>newPopoverOrTopLayerElement</var>] to <var>index</var>.</p></li>
8459284625

8459384626
<li><p>Increment <var>index</var> by 1.</p></li>
8459484627

@@ -84616,8 +84649,8 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8461684649
</ol>
8461784650
</li>
8461884651

84619-
<li><p>Run <var>checkAncestor</var> given <var>newPopover</var>'s parent node within the
84620-
<span>flat tree</span>.</p></li>
84652+
<li><p>Run <var>checkAncestor</var> given <var>newPopoverOrTopLayerElement</var>'s parent node
84653+
within the <span>flat tree</span>.</p></li>
8462184654

8462284655
<li><p>Run <var>checkAncestor</var> given <var>invoker</var>.</p></li>
8462384656

0 commit comments

Comments
 (0)