Skip to content

Commit

Permalink
toggle event coalescing and renaming
Browse files Browse the repository at this point in the history
  • Loading branch information
josepharhar committed Jan 18, 2023
1 parent 484ddeb commit 2549f6b
Showing 1 changed file with 114 additions and 41 deletions.
155 changes: 114 additions & 41 deletions source
Original file line number Diff line number Diff line change
Expand Up @@ -81173,6 +81173,18 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
<p>Every <span data-x="HTML elements">HTML element</span> has a <dfn>popover invoker</dfn>, which
is an <span data-x="HTML elements">HTML element</span> or null, initially set to null.</p>

<p>Every <span data-x="HTML elements">HTML element</span> has a <dfn>popover toggle task</dfn>,
initially null, which is either null or a <span>struct</span> which has:</p>

<dl>
<dt><dfn data-x="popover-toggle-task-task">Task</dfn></dt> <dd>A task which fires a
<code>ToggleEvent</code>.</dd>

<dt><dfn data-x="popover-toggle-task-old-state">Old state</dfn></dt>
<dd>A string which represents the <span data-x="popover-toggle-task-task">task</span>'s event's
value for the <code data-x="dom-ToggleEvent-oldState">oldState</code> attribute.</dd>
</dl>

<p>The following <span data-x="concept-element-attributes-change-ext">attribute change
steps</span> are used for all <span>HTML elements</span>:</p>

Expand Down Expand Up @@ -81237,10 +81249,10 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
document</span>'s <span>top layer</span>.</p></li>

<li><p>If the result of <span data-x="concept-event-fire">firing an event</span> named <code
data-x="event-beforetoggle">beforetoggle</code>, using <code>PopoverToggleEvent</code>, with the
<code data-x="dom-Event-cancelable">cancelable</code> attribute initialized to true, the <code
data-x="dom-PopoverToggleEvent-currentState">currentState</code> attribute initialized to "<code
data-x="">closed</code>", and the <code data-x="dom-PopoverToggleEvent-newState">newState</code>
data-x="event-beforetoggle">beforetoggle</code>, using <code>ToggleEvent</code>, with the <code
data-x="dom-Event-cancelable">cancelable</code> attribute initialized to true, the <code
data-x="dom-ToggleEvent-oldState">oldState</code> attribute initialized to "<code
data-x="">closed</code>", and the <code data-x="dom-ToggleEvent-newState">newState</code>
attribute initialized to "<code data-x="">open</code>" at <var>element</var> is false, then
return.</p></li>

Expand Down Expand Up @@ -81326,12 +81338,41 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
data-x="attr-popover-none-state">no popover state</span>, then set <var>element</var>'s
<span>previously focused element</span> to <var>originallyFocusedElement</var>.</p></li>

<li><p><span>Queue an element task</span> given the <span>user interaction task source</span> and
<var>element</var> to <span data-x="concept-event-fire">fire an event</span> named <code
data-x="event-toggle">toggle</code>, using <code>PopoverToggleEvent</code>, with the <code
data-x="dom-PopoverToggleEvent-currentState">currentState</code> attribute initialized to "<code
data-x="">open</code>", and the <code data-x="dom-PopoverToggleEvent-newState">newState</code>
attribute initialized to "<code data-x="">open</code>" at <var>element</var>.</p></li>
<li><p>Let <var>oldState</var> be "<code data-x="">closed</code>".</p></li>

<li>
<p>If <var>element</var>'s <span>popover toggle task</span> is not null, then:</p>

<ol>
<li><p>Set <var>oldState</var> to <var>element</var>'s <span>popover toggle task</span>'s
<span data-x="popover-toggle-task-old-state">old state</span>.</p></li>

<li><p>Remove <var>element</var>'s <span>popover toggle task</span>'s <span
data-x="popover-toggle-task-task">task</span> from its <span>task queue</span>.</p></li>

<li><p>Set <var>element</var>'s <span>popover toggle task</span> to null.</p></li>
</ol>
</li>

<li>
<p><span>Queue an element task</span> given the <span>user interaction task source</span> and
<var>element</var> to run the following steps:</p>

<ol>
<li><p><span data-x="concept-event-fire">fire an event</span> named <code
data-x="event-toggle">toggle</code>, using <code>ToggleEvent</code>, with the <code
data-x="dom-ToggleEvent-oldState">oldState</code> attribute initialized to <var>oldState</var>,
and the <code data-x="dom-ToggleEvent-newState">newState</code> attribute initialized to "<code
data-x="">open</code>" at <var>element</var>.</p></li>

<li><p>Set <var>element</var>'s <span>popover toggle task</span> to null.</p></li>
</ol>
</li>

<li><p>Set <var>element</var>'s <span>popover toggle task</span> to a struct with <span
data-x="popover-toggle-task-task">task</span> set to the just-queued <span
data-x="concept-task">task</span> and <span data-x="popover-toggle-task-old-state">old
state</span> set to <var>oldState</var>.</p></li>
</ol>

<p>The <dfn method for="HTMLElement"><code data-x="dom-hidePopover">hidePopover()</code></dfn>
Expand Down Expand Up @@ -81396,11 +81437,10 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {

<ol>
<li><p><span data-x="concept-event-fire">Fire an event</span> named <code
data-x="event-beforetoggle">beforetoggle</code>, using <code>PopoverToggleEvent</code>, with
the <code data-x="dom-PopoverToggleEvent-currentState">currentState</code> attribute
initialized to "<code data-x="">open</code>", and the <code
data-x="dom-PopoverToggleEvent-newState">newState</code> attribute initialized to "<code
data-x="">closed</code>" at <var>element</var>.</p></li>
data-x="event-beforetoggle">beforetoggle</code>, using <code>ToggleEvent</code>, with the <code
data-x="dom-ToggleEvent-oldState">oldState</code> attribute initialized to "<code
data-x="">open</code>", and the <code data-x="dom-ToggleEvent-newState">newState</code>
attribute initialized to "<code data-x="">closed</code>" at <var>element</var>.</p></li>

<li>
<p>If the result of running <span>check popover validity</span> given <var>element</var> and
Expand All @@ -81426,14 +81466,47 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
<li><p>Set <var>element</var>'s <span>popover visibility state</span> to <span
data-x="popover-hidden-state">hidden</span>.</p></li>

<li><p>If <var>dontFireEvents</var> is false, then <span>queue an element task</span> given the
<span>user interaction task source</span> and <var>element</var> to <span
data-x="concept-event-fire">fire an event</span> named <code data-x="event-toggle">toggle</code>,
using <code>PopoverToggleEvent</code>, with the <code
data-x="dom-Event-cancelable">cancelable</code> attribute initialized to false, the <code
data-x="dom-PopoverToggleEvent-currentState">currentState</code> attribute initialized to "<code
data-x="">closed</code>", and the <code data-x="dom-PopoverToggleEvent-newState">newState</code>
attribute initialized to "<code data-x="">closed</code>" at <var>element</var>.</p></li>
<li>
<p>If <var>dontFireEvents</var> is false, then:</p>

<ol>
<li><p>Let <var>oldState</var> be "<code data-x="">open</code>".</p></li>

<li>
<p>If <var>element</var>'s <span>popover toggle task</span> is not null, then:</p>

<ol>
<li><p>Set <var>oldState</var> to <var>element</var>'s <span>popover toggle task</span>'s
<span data-x="popover-toggle-task-old-state">old state</span>.</p></li>

<li><p>Remove <var>element</var>'s <span>popover toggle task</span>'s <span
data-x="popover-toggle-task-task">task</span> from its <span>task queue</span>.</p></li>

<li><p>Set <var>element</var>'s <span>popover toggle task</span> to null.</p></li>
</ol>
</li>

<li>
<p><span>Queue an element task</span> given the <span>user interaction task source</span> and
<var>element</var> to run the following steps:</p>

<ol>
<li><p><span data-x="concept-event-fire">fire an event</span> named <code
data-x="event-toggle">toggle</code>, using <code>ToggleEvent</code>, with the <code
data-x="dom-ToggleEvent-oldState">oldState</code> attribute initialized to
<var>oldState</var>, and the <code data-x="dom-ToggleEvent-newState">newState</code>
attribute initialized to "<code data-x="">closed</code>" at <var>element</var>.</p></li>

<li><p>Set <var>element</var>'s <span>popover toggle task</span> to null.</p></li>
</ol>
</li>

<li><p>Set <var>element</var>'s <span>popover toggle task</span> to a struct with <span
data-x="popover-toggle-task-task">task</span> set to the just-queued <span
data-x="concept-task">task</span> and <span data-x="popover-toggle-task-old-state">old
state</span> set to <var>oldState</var>.</p></li>
</ol>
</li>

<li><p>Let <var>previouslyFocusedElement</var> be <var>element</var>'s <span>previously focused
element</span>.</p></li>
Expand Down Expand Up @@ -81996,50 +82069,50 @@ dictionary <dfn dictionary>DragEventInit</dfn> : <span>MouseEventInit</span> {
</li>
</ol>

<h4>The <code>PopoverToggleEvent</code> interface</h4>
<h4>The <code>ToggleEvent</code> interface</h4>

<pre><code class="idl">[Exposed=Window]
interface <dfn interface>PopoverToggleEvent</dfn> : <span>Event</span> {
constructor(DOMString type, optional <span>PopoverToggleEventInit</span> eventInitDict = {});
readonly attribute DOMString currentState;
interface <dfn interface>ToggleEvent</dfn> : <span>Event</span> {
constructor(DOMString type, optional <span>ToggleEventInit</span> eventInitDict = {});
readonly attribute DOMString oldState;
readonly attribute DOMString newState;
};

dictionary <dfn dictionary>PopoverToggleEventInit</dfn> : <span>EventInit</span> {
DOMString currentState = "";
dictionary <dfn dictionary>ToggleEventInit</dfn> : <span>EventInit</span> {
DOMString oldState = "";
DOMString newState = "";
};</code></pre>

<dl class="domintro">
<dt><code data-x=""><var>event</var>.<span subdfn
data-x="dom-PopoverToggleEvent-currentState">currentState</span></code></dt>
data-x="dom-ToggleEvent-oldState">oldState</span></code></dt>

<dd>
<p>Set to "<code data-x="">closed</code>" when transitioning from closed to open, or set to
"<code data-x="">open</code>" when transitioning from open to closed.</p>
</dd>

<dt><code data-x=""><var>event</var>.<span subdfn
data-x="dom-PopoverToggleEvent-newState">newState</span></code></dt>
data-x="dom-ToggleEvent-newState">newState</span></code></dt>

<dd>
<p>Set to "<code data-x="">open</code>" when transitioning from closed to open, or set to "<code
data-x="">closed</code>" when transitioning from open to closed.</p>
</dd>
</dl>

<p>The <dfn attribute for="PopoverToggleEvent"><code
data-x="dom-PopoverToggleEvent-currentState">currentState</code></dfn> attribute must return the
value it was initialized to. It is initialized to "<code data-x="">open</code>" if the element
with the <code data-x="attr-popover">popover</code> attribute's <span>popover visibility
state</span> is <span data-x="popover-showing-state">showing</span>; otherwise "<code
<p>The <dfn attribute for="ToggleEvent"><code
data-x="dom-ToggleEvent-oldState">oldState</code></dfn> attribute must return the value it
was initialized to. It is initialized to "<code data-x="">open</code>" if the element with the
<code data-x="attr-popover">popover</code> attribute's <span>popover visibility state</span> is
<span data-x="popover-showing-state">showing</span>; otherwise "<code
data-x="">closed</code>".</p>

<p>The <dfn attribute for="PopoverToggleEvent"><code
data-x="dom-PopoverToggleEvent-newState">newState</code></dfn> attribute must return the value it
was initialized to. It is initialized to "<code data-x="">closed</code>" if the element with the
<code data-x="attr-popover">popover</code> attribute's <span>popover visibility state</span> is
<span data-x="popover-showing-state">showing</span>; otherwise "<code data-x="">open</code>".</p>
<p>The <dfn attribute for="ToggleEvent"><code
data-x="dom-ToggleEvent-newState">newState</code></dfn> attribute must return the value it was
initialized to. It is initialized to "<code data-x="">closed</code>" if the element with the <code
data-x="attr-popover">popover</code> attribute's <span>popover visibility state</span> is <span
data-x="popover-showing-state">showing</span>; otherwise "<code data-x="">open</code>".</p>


<h2 split-filename="browsers" id="browsers">Loading web pages</h2>
Expand Down

0 comments on commit 2549f6b

Please sign in to comment.