@@ -1846,9 +1846,9 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
1846
1846
</ol>
1847
1847
</li>
1848
1848
1849
- <li><p>If <var>removedNode</var>'s <code data-x="attr-popover" >popover</code> attribute is not in
1850
- the <span data-x="attr-popover-none-state">no popover state</span>, then run the <span>hide
1851
- popover algorithm</span> given <var>removedNode</var>, false, false, and false.</p></li>
1849
+ <li><p>If <var>removedNode</var>'s <span >popover state</span> is not in the <span
1850
+ data-x="attr-popover-none-state">no popover state</span>, then run the <span>hide popover
1851
+ algorithm</span> given <var>removedNode</var>, false, false, and false.</p></li>
1852
1852
1853
1853
<li>
1854
1854
<p>For each <var>descendant</var> of <var>removedNode</var>'s <span data-x="inclusive
@@ -4185,6 +4185,12 @@ a.setAttribute('href', 'https://example.com/'); // change the content attribute
4185
4185
<li><dfn data-x-href="https://drafts.csswg.org/css-contain/#content-visibility">'content-visibility'</dfn> property</li>
4186
4186
<li><dfn data-x-href="https://drafts.csswg.org/css-contain/#propdef-content-visibility" data-x="content-visibility-auto">'auto'</dfn> value for <span>'content-visibility'</span></li>
4187
4187
</ul>
4188
+
4189
+ <p>The following terms are defined in <cite>CSS Anchor Positioning</cite>: <ref>CSSANCHOR</ref></p>
4190
+
4191
+ <ul class="brief">
4192
+ <li><dfn data-x-href="https://drafts.csswg.org/css-anchor-position-1/#implicit-anchor-element">implicit anchor element</dfn></li>
4193
+ </ul>
4188
4194
</dd>
4189
4195
4190
4196
@@ -53263,6 +53269,18 @@ interface <dfn interface>HTMLButtonElement</dfn> : <span>HTMLElement</span> {
53263
53269
53264
53270
</div>
53265
53271
53272
+ <p>To get the <dfn>button parent select</dfn> given a <code>button</code> <var>button</var>:</p>
53273
+
53274
+ <ol>
53275
+ <li><p>If <var>button</var>'s <span>parent</span> is a <code>select</code>, then return
53276
+ <var>button</var>'s <span>parent</span>.</p></li>
53277
+
53278
+ <li><p>If <var>button</var>'s <span>root</span> is a <span>shadow root</span> whose <span>shadow
53279
+ host</span> is a <code>select</code>, then return that <code>select</code>.</p></li>
53280
+
53281
+ <li><p>Return null.</p></li>
53282
+ </ol>
53283
+
53266
53284
53267
53285
53268
53286
@@ -53557,6 +53575,7 @@ interface <dfn interface>HTMLSelectElement</dfn> : <span>HTMLElement</span> {
53557
53575
options</span> <dfn data-x="ask for a reset">asks for a reset</dfn>, then run that
53558
53576
<code>select</code> element's <span>selectedness setting algorithm</span>.</p>
53559
53577
53578
+ <!-- TODO should this be combined and rewritten with <option> element activation behavior? -->
53560
53579
<p>If the <code data-x="attr-select-multiple">multiple</code> attribute is present, and the
53561
53580
element is not <span data-x="concept-fe-disabled">disabled</span>, then the user agent should
53562
53581
allow the user to <dfn data-x="concept-select-toggle">toggle</dfn> the <span
@@ -54065,6 +54084,23 @@ interface <dfn interface>HTMLDataListElement</dfn> : <span>HTMLElement</span> {
54065
54084
54066
54085
</div>
54067
54086
54087
+ <p>To get the <dfn>datalist parent select</dfn>, given a <code>datalist</code>
54088
+ <var>datalist</var>:</p>
54089
+
54090
+ <ol>
54091
+ <li><p>If <var>datalist</var>'s <span>parent</span> is a <code>select</code>, then return
54092
+ <var>datalist</var>'s <span>parent</span>.</p></li>
54093
+
54094
+ <li><p>If <var>datalist</var>'s <span>root</span> is a <span>shadow root</span> whose
54095
+ <span>shadow host</span> is a <code>select</code>, then return that <code>select</code>.</p></li>
54096
+
54097
+ <li><p>Return null.</p></li>
54098
+ </ol>
54099
+
54100
+ <p>When a <code>datalist</code> <var>datalist</var> has a non-null <span>datalist parent
54101
+ select</span> <var>select</var>, then <var>select</var> is the <span>implicit anchor
54102
+ element</span> of <var>datalist</var>.</p>
54103
+
54068
54104
54069
54105
<h4>The <dfn element><code>optgroup</code></dfn> element</h4>
54070
54106
@@ -54346,6 +54382,35 @@ interface <dfn interface>HTMLOptionElement</dfn> : <span>HTMLElement</span> {
54346
54382
<var>removedOption</var>'s <span>option element mutation observer</span>.</p></li>
54347
54383
</ol>
54348
54384
54385
+ <p>The <span>activation behavior</span> of an <code>option</code> <var>option</var> is to run the
54386
+ following steps:</p>
54387
+
54388
+ <ol>
54389
+ <li><p>Let <var>select</var> be the <span>option element ancestor select</span> given
54390
+ <var>option</var>.</p></li>
54391
+
54392
+ <li><p>If <var>select</var> is null, then return.</p></li>
54393
+
54394
+ <li><p>Set <var>option</var>'s <span data-x="concept-option-selectedness">selectedness</span> to
54395
+ true.</p></li>
54396
+
54397
+ <li><p>Set <var>option</var>'s <span data-x="concept-option-dirtiness">dirtiness</span> to
54398
+ true.</p></li>
54399
+
54400
+ <li><p><span>Send <code>select</code> update notifications</span> given
54401
+ <var>select</var>.</p></li>
54402
+
54403
+ <li>
54404
+ <p>If <var>select</var> is being rendered as a <span>drop-down box</span> with <span>base
54405
+ appearance</span>:</p>
54406
+
54407
+ <ol>
54408
+ <li><p>Run the <span>hide popover algorithm</span> given the first item in <var>select</var>'s
54409
+ <span>select datalist slot</span>'s <span>assigned nodes</span>.</p></li>
54410
+ </ol>
54411
+ </li>
54412
+ </ol>
54413
+
54349
54414
<dl class="domintro">
54350
54415
<dt><code data-x=""><var>option</var>.<span subdfn data-x="dom-option-selected">selected</span></code></dt>
54351
54416
@@ -74406,10 +74471,10 @@ Demos:
74406
74471
<dt><dfn selector noexport><code data-x="selector-popover-open">:popover-open</code></dfn></dt>
74407
74472
<dd>
74408
74473
<p>The <code data-x="selector-popover-open">:popover-open</code> <span>pseudo-class</span> is
74409
- defined to match any <span data-x="html elements">HTML element</span> whose <code
74410
- data-x="attr-popover"> popover</code> attribute is not in the <span
74411
- data-x="attr-popover-none-state">no popover state</span> and whose <span>popover visibility
74412
- state</span> is <span data-x="popover-showing-state">showing</span>.</p>
74474
+ defined to match any <span data-x="html elements">HTML element</span> whose <span>popover
74475
+ state</span> is not in the <span data-x="attr-popover-none-state">no popover state</span> and
74476
+ whose <span> popover visibility state</span> is <span
74477
+ data-x="popover-showing-state">showing</span>.</p>
74413
74478
</dd>
74414
74479
74415
74480
<dt><dfn selector noexport><code data-x="selector-enabled">:enabled</code></dfn></dt>
@@ -80673,9 +80738,9 @@ dictionary <dfn dictionary>ToggleEventInit</dfn> : <span>EventInit</span> {
80673
80738
element.</p>
80674
80739
80675
80740
<p>When the <code data-x="attr-fe-autofocus">autofocus</code> attribute is specified on an element
80676
- inside <code>dialog</code> elements or <span>HTML elements</span> whose <code
80677
- data-x="attr-popover"> popover</code> attribute is set , then it will be focused when the dialog or
80678
- popover becomes shown.</p>
80741
+ inside <code>dialog</code> elements or <span>HTML elements</span> whose <span>popover state</span>
80742
+ is not the <span data-x="attr-popover-none-state">no popover state</span> , then it will be focused
80743
+ when the dialog or popover becomes shown.</p>
80679
80744
80680
80745
<p>The <code data-x="attr-fe-autofocus">autofocus</code> attribute is a <span>boolean
80681
80746
attribute</span>.</p>
@@ -80687,8 +80752,8 @@ dictionary <dfn dictionary>ToggleEventInit</dfn> : <span>EventInit</span> {
80687
80752
<li><p>If <var>element</var> is a <code>dialog</code> element, then return
80688
80753
<var>element</var>.</p></li>
80689
80754
80690
- <li><p>If <var>element</var>'s <code data-x="attr-popover" >popover</code> attribute is not in the
80691
- <span data-x="attr-popover-none-state">no popover state</span>, then return
80755
+ <li><p>If <var>element</var>'s <span >popover state</span> is not in the <span
80756
+ data-x="attr-popover-none-state">no popover state</span>, then return
80692
80757
<var>element</var>.</p></li>
80693
80758
80694
80759
<li><p>Let <var>ancestor</var> be <var>element</var>.</p></li>
@@ -80702,8 +80767,8 @@ dictionary <dfn dictionary>ToggleEventInit</dfn> : <span>EventInit</span> {
80702
80767
<li><p>If <var>ancestor</var> is a <code>dialog</code> element, then return
80703
80768
<var>ancestor</var>.</p></li>
80704
80769
80705
- <li><p>If <var>ancestor</var>'s <code data-x="attr-popover" >popover</code> attribute is not in
80706
- the <span data-x="attr-popover-none-state">no popover state</span>, then return
80770
+ <li><p>If <var>ancestor</var>'s <span >popover state</span> is not in the <span
80771
+ data-x="attr-popover-none-state">no popover state</span>, then return
80707
80772
<var>ancestor</var>.</p></li>
80708
80773
</ol>
80709
80774
</li>
@@ -85052,6 +85117,17 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85052
85117
<p>Every <span data-x="HTML elements">HTML element</span> has a <dfn>popover close watcher</dfn>,
85053
85118
which is a <span>close watcher</span> or null, initially null.</p>
85054
85119
85120
+ <p>To get the <dfn>popover state</dfn> for an <span data-x="html elements">HTML element</span>
85121
+ <var>element</var>:</p>
85122
+
85123
+ <ol>
85124
+ <li><p>If <var>element</var> is a <code>datalist</code> with a non-null <span>datalist parent
85125
+ select</span>, then return <span data-x="attr-popover-auto-state">auto</span>.</p></li>
85126
+
85127
+ <li><p>Return the value of <var>element</var>'s <code data-x="attr-popover">popover</code>
85128
+ attribute.</p></li>
85129
+ </ol>
85130
+
85055
85131
<p>The following <span data-x="concept-element-attributes-change-ext">attribute change
85056
85132
steps</span>, given <var>element</var>, <var>localName</var>, <var>oldValue</var>,
85057
85133
<var>value</var>, and <var>namespace</var>, are used for all <span>HTML elements</span>:</p>
@@ -85145,12 +85221,12 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85145
85221
<li><p>Let <var>shouldRestoreFocus</var> be false.</p></li>
85146
85222
85147
85223
<li>
85148
- <p>If <var>element</var>'s <code data-x="attr-popover" >popover</code> attribute is in the <span
85224
+ <p>If <var>element</var>'s <span >popover state</span> is in the <span
85149
85225
data-x="attr-popover-auto-state">auto</span> state, then:</p>
85150
85226
85151
85227
<ol>
85152
- <li><p>Let <var>originalType</var> be the value of <var>element</var>'s <code
85153
- data-x="attr-popover">popover</code> attribute .</p></li>
85228
+ <li><p>Let <var>originalType</var> be the <var>element</var>'s <span>popover
85229
+ state</span> .</p></li>
85154
85230
85155
85231
<li><p>Let <var>ancestor</var> be the result of running the <span>topmost popover
85156
85232
ancestor</span> algorithm given <var>element</var>, <var>invoker</var>, and true.</p></li>
@@ -85162,8 +85238,8 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85162
85238
<var>ancestor</var>, false, and not <var>nestedShow</var>.</p></li>
85163
85239
85164
85240
<li>
85165
- <p>If <var>originalType</var> is not equal to the value of <var>element</var>'s <code
85166
- data-x="attr-popover">popover</code> attribute , then:</p>
85241
+ <p>If <var>originalType</var> is not equal to the value of <var>element</var>'s <span>popover
85242
+ state</span> , then:</p>
85167
85243
85168
85244
<ol>
85169
85245
<li><p>If <var>throwExceptions</var> is true, then throw a
@@ -85224,10 +85300,10 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85224
85300
85225
85301
<li><p>Run the <span>popover focusing steps</span> given <var>element</var>.</p></li>
85226
85302
85227
- <li><p>If <var>shouldRestoreFocus</var> is true and <var>element</var>'s <code
85228
- data-x="attr-popover"> popover</code> attribute is not in the <span
85229
- data-x="attr-popover-none-state">no popover</span> state, then set <var>element</var>'s
85230
- <span>previously focused element</span> to < var>originallyFocusedElement</var>.</p></li>
85303
+ <li><p>If <var>shouldRestoreFocus</var> is true and <var>element</var>'s <span>popover
85304
+ state</span> is not in the <span data-x="attr-popover-none-state">no popover</span> state, then
85305
+ set <var>element</var>'s <span>previously focused element</span> to
85306
+ <var>originallyFocusedElement</var>.</p></li>
85231
85307
85232
85308
<li><p><span>Queue a popover toggle event task</span> given <var>element</var>, "<code
85233
85309
data-x="">closed</code>", and "<code data-x="">open</code>".</p></li>
@@ -85320,7 +85396,7 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85320
85396
</li>
85321
85397
85322
85398
<li>
85323
- <p>If <var>element</var>'s <code data-x="attr-popover" >popover</code> attribute is in the <span
85399
+ <p>If <var>element</var>'s <span >popover state</span> is in the <span
85324
85400
data-x="attr-popover-auto-state">auto</span> state, then:</p>
85325
85401
85326
85402
<ol>
@@ -85469,8 +85545,8 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85469
85545
<li><p>If <var>endpoint</var> is a <code>Document</code>, then run
85470
85546
<var>closeAllOpenPopovers</var> and return.</p></li>
85471
85547
85472
- <li><p><span>Assert</span>: <var>endpoint</var>'s <code data-x="attr-popover" >popover</code>
85473
- attribute is in the <span data-x="attr-popover-auto-state">auto</span> state.</p></li>
85548
+ <li><p><span>Assert</span>: <var>endpoint</var>'s <span >popover state</span> is in the <span
85549
+ data-x="attr-popover-auto-state">auto</span> state.</p></li>
85474
85550
85475
85551
<li><p>Let <var>repeatingHide</var> be false.</p></li>
85476
85552
@@ -85568,9 +85644,8 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85568
85644
<li><p><span>Assert</span>: <var>newPopoverOrTopLayerElement</var> is an <span data-x="HTML
85569
85645
elements">HTML element</span>.</p></li>
85570
85646
85571
- <li><p><span>Assert</span>: <var>newPopoverOrTopLayerElement</var>'s <code
85572
- data-x="attr-popover">popover</code> attribute is not in the <span
85573
- data-x="attr-popover-none-state">no popover state</span> or the <span
85647
+ <li><p><span>Assert</span>: <var>newPopoverOrTopLayerElement</var>'s <span>popover state</span>
85648
+ is not in the <span data-x="attr-popover-none-state">no popover state</span> or the <span
85574
85649
data-x="attr-popover-manual-state">manual</span> state.</p></li>
85575
85650
85576
85651
<li><p><span>Assert</span>: <var>newPopoverOrTopLayerElement</var>'s <span>popover visibility
@@ -85654,10 +85729,10 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85654
85729
<p>While <var>currentNode</var> is not null:</p>
85655
85730
85656
85731
<ol>
85657
- <li><p>If <var>currentNode</var>'s <code data-x="attr-popover" >popover</code> attribute is in
85658
- the <span data-x="attr-popover-auto-state">auto</span> state and <var>currentNode</var>'s
85659
- <span>popover visibility state</span> is <span data-x="popover-showing-state">showing</span>,
85660
- then return <var>currentNode</var>.</p></li>
85732
+ <li><p>If <var>currentNode</var>'s <span >popover state</span> is in the <span
85733
+ data-x="attr-popover-auto-state">auto</span> state and <var>currentNode</var>'s <span>popover
85734
+ visibility state</span> is <span data-x="popover-showing-state">showing</span>, then return
85735
+ <var>currentNode</var>.</p></li>
85661
85736
85662
85737
<li><p>Set <var>currentNode</var> to <var>currentNode</var>'s parent in the <span>flat
85663
85738
tree</span>.</p></li>
@@ -85717,8 +85792,8 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85717
85792
85718
85793
<ol>
85719
85794
<li>
85720
- <p>If <var>element</var>'s <code data-x="attr-popover" >popover</code> attribute is in the
85721
- <span data-x="attr-popover-none-state">no popover</span> state, then:</p>
85795
+ <p>If <var>element</var>'s <span >popover state</span> is in the <span
85796
+ data-x="attr-popover-none-state">no popover</span> state, then:</p>
85722
85797
85723
85798
<ol>
85724
85799
<li><p>If <var>throwExceptions</var> is true, then throw a
@@ -85777,11 +85852,10 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85777
85852
<li><p>Let <var>popovers</var> be « ».</p></li>
85778
85853
85779
85854
<li><p><span data-x="list iterate">For each</span> <code>Element</code> <var>element</var> in
85780
- <var>document</var>'s <span>top layer</span>: if <var>element</var>'s <code
85781
- data-x="attr-popover">popover</code> attribute is in the <span
85782
- data-x="attr-popover-auto-state">auto state</span> and <var>element</var>'s <span>popover
85783
- visibility state</span> is <span data-x="popover-showing-state">showing</span>, then <span
85784
- data-x="list append">append</span> <var>element</var> to <var>popovers</var>.</p></li>
85855
+ <var>document</var>'s <span>top layer</span>: if <var>element</var>'s <span>popover state</span>
85856
+ is in the <span data-x="attr-popover-auto-state">auto state</span> and <var>element</var>'s
85857
+ <span>popover visibility state</span> is <span data-x="popover-showing-state">showing</span>,
85858
+ then <span data-x="list append">append</span> <var>element</var> to <var>popovers</var>.</p></li>
85785
85859
85786
85860
<li><p>Return <var>popovers</var>.</p></li>
85787
85861
</ol>
@@ -85927,6 +86001,21 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
85927
86001
the attr-associated element">get the <code data-x="">popovertarget</code>-associated
85928
86002
element</span>.</p></li>
85929
86003
86004
+ <li>
86005
+ <p>If <var>popoverElement</var> is null and <var>node</var> is a <code>button</code> and
86006
+ <var>node</var>'s <span>button parent select</span> is not null, then:</p>
86007
+
86008
+ <ol>
86009
+ <li><p>Let <var>parentSelect</var> be <var>node</var>'s <span>button parent
86010
+ select</span>.</p></li>
86011
+
86012
+ <li><p>If <var>parentSelect</var> is rendered as a <span>drop-down box</span> with <span>base
86013
+ appearance</span>, then set <var>popoverElement</var> to the first item in
86014
+ <var>parentSelect</var>'s <span>select button slot</span>'s <span>assigned
86015
+ nodes</span>.</p></li>
86016
+ </ol>
86017
+ </li>
86018
+
85930
86019
<li><p>If <var>popoverElement</var> is null, then return null.</p></li>
85931
86020
85932
86021
<li><p>If <var>popoverElement</var>'s <code data-x="attr-popover">popover</code> attribute is in
@@ -86034,11 +86123,10 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
86034
86123
<li><p>Let <var>targetPopover</var> be <var>currentNode</var>'s <span>popover target
86035
86124
element</span>.</p></li>
86036
86125
86037
- <li><p>If <var>targetPopover</var> is not null and <var>targetPopover</var>'s <code
86038
- data-x="attr-popover">popover</code> attribute is in the <span
86039
- data-x="attr-popover-auto-state">auto</span> state and <var>targetPopover</var>'s <span>popover
86040
- visibility state</span> is <span data-x="popover-showing-state">showing</span>, then return
86041
- <var>targetPopover</var>.</p></li>
86126
+ <li><p>If <var>targetPopover</var> is not null and <var>targetPopover</var>'s <span>popover
86127
+ state</span> is in the <span data-x="attr-popover-auto-state">auto</span> state and
86128
+ <var>targetPopover</var>'s <span>popover visibility state</span> is <span
86129
+ data-x="popover-showing-state">showing</span>, then return <var>targetPopover</var>.</p></li>
86042
86130
86043
86131
<li><p>Set <var>currentNode</var> to <var>currentNode</var>'s ancestor in the <span>flat
86044
86132
tree</span>.</p></li>
@@ -143171,6 +143259,9 @@ INSERT INTERFACES HERE
143171
143259
<dt id="refsCSSALIGN">[CSSALIGN]</dt>
143172
143260
<dd><cite><a href="https://w3c.github.io/csswg-drafts/css-align/">CSS Box Alignment</a></cite>, E. Etemad, T. Atkins. W3C.</dd>
143173
143261
143262
+ <dt id="refsCSSANCHOR">[CSSANCHOR]</dt>
143263
+ <dd><cite><a href="https://drafts.csswg.org/css-anchor-position-1/">CSS Anchor Positioning</a></cite>, T. Atkins, E. Etemad, I. Kilpatrick. W3C.</dd>
143264
+
143174
143265
<dt id="refsCSSANIMATIONS">[CSSANIMATIONS]</dt>
143175
143266
<dd><cite><a href="https://w3c.github.io/csswg-drafts/css-animations/">CSS Animations</a></cite>, D. Jackson, D. Hyatt, C. Marrin, S. Galineau, L. Baron. W3C.</dd>
143176
143267
0 commit comments