Re: [csswg-drafts] [web-animations-1] Allow setting timeline in Element.animate() (#5013)

Thanks for the feedback. Let's add `timeline` to  [`KeyframeAnimationOptions`](https://drafts.csswg.org/web-animations-1/#ref-for-dictdef-keyframeanimationoptions%E2%91%A1) which seems to be fairly straightforward.

As for matching the semantic of timeline param in `Animation` ctor, I believe  if we use an optional nullable type then we should be able to differentiate  between "explicit null", "not passing anything" cases.

For example I think the following IDL and text should give the desired behavior with the exact text as Animation constructor:

```webidl
dictionary KeyframeAnimationOptions : KeyframeEffectOptions {
    DOMString id = "";
    optional AnimationTimeline? timeline;
};
```

Animation constructor text:
> Run the procedure to set the timeline of an animation on animation passing 
timeline as the new timeline or, if a timeline argument is **missing**, 
passing the default document timeline of the Document associated with the 
Window that is the current global object.



**Unspecified value case:**

Per [Webidl](https://heycam.github.io/webidl/#dictionary-member-optional) an 
Unspecified optional value member is considered missing. So for:

```js
 div.animate({/* keyframes*/ }, { duration: 1000});
```
We should receive a missing timeline value which we trun into 
the default document timeline.

**Explicit null case:**

Since type is nullable passing null is valid and we will get null value which
we can pass into `set the timeline of an animation` procedure.

```js
 div.animate({/* keyframes*/ }, { duration: 1000, timeline: null});
```




-- 
GitHub Notification of comment by majido
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/5013#issuecomment-622012578 using your GitHub account

Received on Thursday, 30 April 2020 18:04:48 UTC