Skip to content

Commit 3033334

Browse files
committedSep 23, 2023
Add popover=hint
Fixes whatwg#9776
1 parent 210f0ea commit 3033334

File tree

1 file changed

+101
-39
lines changed

1 file changed

+101
-39
lines changed
 

‎source

+101-39
Original file line numberDiff line numberDiff line change
@@ -82768,6 +82768,13 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8276882768
<td>Does not close other popovers; does not <span data-x="popover light dismiss">light
8276982769
dismiss</span>.</td>
8277082770
</tr>
82771+
<tr>
82772+
<td><dfn attr-value for="html-global/popover"><code
82773+
data-x="attr-popover-hint">hint</code></dfn></td>
82774+
<td><dfn data-x="attr-popover-hint-state">hint</dfn></td>
82775+
<td>Closes other hint popovers when opened; has <span data-x="popover light dismiss">light
82776+
dismiss</span>; only one can be open at a time.</td>
82777+
</tr>
8277182778
</tbody>
8277282779
</table>
8277382780

@@ -82792,7 +82799,10 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8279282799
data-x="popover-showing-state">showing</dfn></p></li>
8279382800
</ul>
8279482801

82795-
<p>The <code>Document</code> has a <dfn>popover pointerdown target</dfn>, which is an <span
82802+
<p>Every <code>Document</code> has a <dfn>popover pointerdown target</dfn>, which is an <span
82803+
data-x="HTML elements">HTML element</span> or null, initially null.</p>
82804+
82805+
<p>Every <code>Document</code> has a <dfn>showing hint popover</dfn>, which is an <span
8279682806
data-x="HTML elements">HTML element</span> or null, initially null.</p>
8279782807

8279882808
<p>Every <span data-x="HTML elements">HTML element</span> has a <dfn>popover invoker</dfn>, which
@@ -82897,7 +82907,8 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8289782907

8289882908
<li>
8289982909
<p>If <var>element</var>'s <code data-x="attr-popover">popover</code> attribute is in the <span
82900-
data-x="attr-popover-auto-state">auto</span> state, then:</p>
82910+
data-x="attr-popover-auto-state">auto</span> state or <span
82911+
data-x="attr-popover-hint-state">hint</span> state, then:</p>
8290182912

8290282913
<ol>
8290382914
<li><p>Let <var>originalType</var> be the value of <var>element</var>'s <code
@@ -82909,8 +82920,23 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8290982920
<li><p>If <var>ancestor</var> is null, then set <var>ancestor</var> to
8291082921
<var>document</var>.</p></li>
8291182922

82912-
<li><p>Run <span data-x="hide-all-popovers-until">hide all popovers until</span> given
82913-
<var>ancestor</var>, false, and not <var>nestedShow</var>.</p></li>
82923+
<li>
82924+
<p>If <var>element</var>'s <code data-x="attr-popover">popover</code> attribute is in the
82925+
<span data-x="attr-popover-hint-state">hint</span> state, then:</p>
82926+
82927+
<ol>
82928+
<li><p>If <var>document</var>'s <span>showing hint popover</span> is not null, then run the
82929+
<span>hide popover algorithm</span> given <var>document</var>'s <span>showing hint
82930+
popover</span>, false, not <var>nestedShow</var>, and <var>throwExceptions</var>.</p></li>
82931+
82932+
<li><p>If <var>ancestor</var> is not <var>document</var>, then run <span
82933+
data-x="hide-all-popovers-until">hide all popovers until</span> given <var>ancestor</var>,
82934+
false, and not <var>nestedShow</var>.</p></li>
82935+
</ol>
82936+
</li>
82937+
82938+
<li><p>Otherwise, run <span data-x="hide-all-popovers-until">hide all popovers until</span>
82939+
given <var>ancestor</var>, false, and not <var>nestedShow</var>.</p></li>
8291482940

8291582941
<li><p>If <var>originalType</var> is not equal to the value of <var>element</var>'s <code
8291682942
data-x="attr-popover">popover</code> attribute, then throw a
@@ -82938,6 +82964,10 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8293882964
</ol>
8293982965
</li>
8294082966

82967+
<li><p>If <var>element</var>'s <code data-x="attr-popover">popover</code> attribute is in the
82968+
<span data-x="attr-popover-hint-state">hint</span> state, then set <var>document</var>'s
82969+
<span>showing hint popover</span> to <var>element</var>.</p></li>
82970+
8294182971
<li><p>Set <var>element</var>'s <span>previously focused element</span> to null.</p></li>
8294282972

8294382973
<li><p>Let <var>originallyFocusedElement</var> be <var>document</var>'s <span>focused area of the
@@ -83038,11 +83068,12 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8303883068

8303983069
<li>
8304083070
<p>If <var>element</var>'s <code data-x="attr-popover">popover</code> attribute is in the <span
83041-
data-x="attr-popover-auto-state">auto</span> state, then:</p>
83071+
data-x="attr-popover-auto-state">auto</span> state or the <span
83072+
data-x="attr-popover-hint-state">hint</span> state, then:</p>
8304283073

8304383074
<ol>
8304483075
<li><p>Run <span data-x="hide-all-popovers-until">hide all popovers until</span> given
83045-
<var>element</var>, <var>focusPreviousElement</var>, and <var>fireEvents</var>.</p></li>
83076+
<var>element</var>, <var>focusPreviousElement</var>, <var>fireEvents</var>, and false.</p></li>
8304683077

8304783078
<li>
8304883079
<p>If the result of running <span>check popover validity</span> given <var>element</var>,
@@ -83086,6 +83117,8 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8308683117
<li><p>Otherwise, <span>remove an element from the top layer immediately</span> given
8308783118
<var>element</var>.</p></li>
8308883119

83120+
<li><p>Set <var>document</var>'s <span>showing hint popover</span> to null.</p></li>
83121+
8308983122
<li><p>Set <var>element</var>'s <span>popover visibility state</span> to <span
8309083123
data-x="popover-hidden-state">hidden</span>.</p></li>
8309183124

@@ -83144,7 +83177,8 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8314483177

8314583178
<p>To <dfn data-x="hide-all-popovers-until">hide all popovers until</dfn>, given an <span
8314683179
data-x="HTML elements">HTML element</span> or <code>Document</code> <var>endpoint</var>, a boolean
83147-
<var>focusPreviousElement</var>, and a boolean <var>fireEvents</var>:</p>
83180+
<var>focusPreviousElement</var>, a boolean <var>fireEvents</var>, and a boolean
83181+
<var>hideUnrelatedPopovers</var>:</p>
8314883182

8314983183
<ol>
8315083184
<li><p>Let <var>document</var> be <var>endpoint</var>'s <span>node document</span>.</p></li>
@@ -83174,53 +83208,81 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8317483208
<var>closeAllOpenPopovers</var> and return.</p></li>
8317583209

8317683210
<li><p><span>Assert</span>: <var>endpoint</var>'s <code data-x="attr-popover">popover</code>
83177-
attribute is in the <span data-x="attr-popover-auto-state">auto</span> state.</p></li>
83178-
83179-
<li><p>Let <var>repeatingHide</var> be false.</p></li>
83211+
attribute is not in the <span data-x="attr-popover-manual-state">manual</span> state.</p></li>
8318083212

8318183213
<li>
83182-
<p>Perform the following steps at least once:</p>
83214+
<p>If <var>endpoint</var>'s <code data-x="attr-popover">popover</code> attribute is in the
83215+
<span data-x="attr-popover-hint-state">hint</span> state, then:</p>
8318383216

8318483217
<ol>
83185-
<li><p>Let <var>lastToHide</var> be null.</p></li>
83186-
83187-
<li><p>Let <var>foundEndpoint</var> be false.</p></li>
83188-
8318983218
<li>
83190-
<p>For each <var>popover</var> in <var>document</var>'s <span>auto popover list</span>:</p>
83219+
<p>If <var>hideUnrelatedPopovers</var> is true, then:</p>
8319183220

8319283221
<ol>
83193-
<li><p>If <var>popover</var> is <var>endpoint</var>, then set <var>foundEndpoint</var> to
83194-
true.</p></li>
83195-
83196-
<li><p>Otherwise, if <var>foundEndpoint</var> is true, then set <var>lastToHide</var> to
83197-
<var>popover</var> and <span>break</span>.</p></li>
83222+
<li><p>If <var>document</var>'s <span>showing hint popover</span> is not null and
83223+
<var>document</var>'s <span>showing hint popover</span> is not <var>endpoint</var>, then run
83224+
the <span>hide popover algorithm</span> given <var>focusPreviousElement</var>,
83225+
<var>fireEvents</var>, and <var>throwExceptions</var>.</p></li>
83226+
83227+
<li><p>While <var>document</var>'s <span>auto popover list</span> is not empty, run the
83228+
<span>hide popover algorithm</span> given <var>focusPreviousElement</var>,
83229+
<var>fireEvents</var>, and <var>throwExceptions</var>.</p></li>
8319883230
</ol>
8319983231
</li>
83232+
</ol>
83233+
</li>
8320083234

83201-
<li><p>If <var>foundEndpoint</var> is false, then run <var>closeAllOpenPopovers</var> and
83202-
return.</p></li>
83235+
<li>
83236+
<p>Otherwise:</p>
83237+
83238+
<ol>
83239+
<li><p>Let <var>repeatingHide</var> be false.</p></li>
8320383240

8320483241
<li>
83205-
<p>While <var>lastToHide</var> is not null and <var>lastToHide</var>'s <span>popover
83206-
visibility state</span> is <span data-x="popover-showing-state">showing</span> and
83207-
<var>document</var>'s <span>auto popover list</span> is not empty:</p>
83242+
<p>Perform the following steps at least once:</p>
8320883243

8320983244
<ol>
83210-
<li><p>Run the <span>hide popover algorithm</span> given <var>document</var>'s <span>auto
83211-
popover list</span>'s last element, <var>focusPreviousElement</var>, <var>fireEvents</var>,
83212-
and false.</p></li>
83213-
</ol>
83214-
</li>
83245+
<li><p>Let <var>lastToHide</var> be null.</p></li>
8321583246

83216-
<li><p>Set <var>repeatingHide</var> to true if <var>document</var>'s <span>auto popover
83217-
list</span> contains <var>endpoint</var> and <var>document</var>'s <span>auto popover
83218-
list</span>'s last element is not <var>endpoint</var>, otherwise false.</p></li>
83247+
<li><p>Let <var>foundEndpoint</var> be false.</p></li>
8321983248

83220-
<li><p>If <var>repeatingHide</var> is true, then set <var>fireEvents</var> to false.</p></li>
83221-
</ol>
83249+
<li>
83250+
<p>For each <var>popover</var> in <var>document</var>'s <span>auto popover list</span>:</p>
8322283251

83223-
<p>and keep performing them <span>while</span> <var>repeatingHide</var> is true.</p>
83252+
<ol>
83253+
<li><p>If <var>popover</var> is <var>endpoint</var>, then set <var>foundEndpoint</var> to
83254+
true.</p></li>
83255+
83256+
<li><p>Otherwise, if <var>foundEndpoint</var> is true, then set <var>lastToHide</var> to
83257+
<var>popover</var> and <span>break</span>.</p></li>
83258+
</ol>
83259+
</li>
83260+
83261+
<li><p>If <var>foundEndpoint</var> is false, then run <var>closeAllOpenPopovers</var> and
83262+
return.</p></li>
83263+
83264+
<li>
83265+
<p>While <var>lastToHide</var> is not null and <var>lastToHide</var>'s <span>popover
83266+
visibility state</span> is <span data-x="popover-showing-state">showing</span> and
83267+
<var>document</var>'s <span>auto popover list</span> is not empty:</p>
83268+
83269+
<ol>
83270+
<li><p>Run the <span>hide popover algorithm</span> given <var>document</var>'s <span>auto
83271+
popover list</span>'s last element, <var>focusPreviousElement</var>, <var>fireEvents</var>,
83272+
and false.</p></li>
83273+
</ol>
83274+
</li>
83275+
83276+
<li><p>Set <var>repeatingHide</var> to true if <var>document</var>'s <span>auto popover
83277+
list</span> contains <var>endpoint</var> and <var>document</var>'s <span>auto popover
83278+
list</span>'s last element is not <var>endpoint</var>, otherwise false.</p></li>
83279+
83280+
<li><p>If <var>repeatingHide</var> is true, then set <var>fireEvents</var> to false.</p></li>
83281+
</ol>
83282+
83283+
<p>and keep performing them <span>while</span> <var>repeatingHide</var> is true.</p>
83284+
</li>
83285+
</ol>
8322483286
</li>
8322583287
</ol>
8322683288

@@ -83231,7 +83293,7 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8323183293

8323283294
<p>To <dfn export>hide all popovers</dfn>, given a <code>Document</code> <var>document</var>, run
8323383295
<span data-x="hide-all-popovers-until">hide all popovers until</span> given <var>document</var>,
83234-
false, and false.</p>
83296+
false, false, and true.</p>
8323583297

8323683298
<p>To find the <dfn>topmost popover ancestor</dfn>, given a <code>Node</code>
8323783299
<var>newPopover</var>, and an <span data-x="HTML elements">HTML element</span> or null
@@ -83659,7 +83721,7 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
8365983721
<var>document</var>.</p></li>
8366083722

8366183723
<li><p>If <var>sameTarget</var> is true, then run <span data-x="hide-all-popovers-until">hide
83662-
all popovers until</span> given <var>ancestor</var>, false, and true.</p></li>
83724+
all popovers until</span> given <var>ancestor</var>, false, true, and true.</p></li>
8366383725
</ol>
8366483726
</li>
8366583727
</ol>

0 commit comments

Comments
 (0)
Please sign in to comment.