Re: [csswg-drafts] [css-values][css-backgrounds][css-animations][css-transitions][fill-stroke] How to handle linked list-valued properties? (#7164)

The CSS Working Group just discussed `list-valued properties`, and agreed to the following:

* `RESOLVED: Keep list-valued property definition as-is (as specified in B&B). Genericize definition and move to V&U.`

<details><summary>The full IRC log of that discussion</summary>
&lt;TabAtkins> Topic: list-valued properties<br>
&lt;TabAtkins> github: https://github.com/w3c/csswg-drafts/issues/7164<br>
&lt;TabAtkins> Rossen_: Who's in a good position to summarize?<br>
&lt;TabAtkins> fremy: We have a couple of list-valued properties (more than one value)<br>
&lt;TabAtkins> fremy: And sometimes these properties interact with each other, each with a list<br>
&lt;TabAtkins> fremy: So question is - how do you represent this value in computed/used values?<br>
&lt;TabAtkins> fremy: preserve author-provided length, repeat as necessary, truncate<br>
&lt;TabAtkins> fremy: Say author provides three values, bu tonly one is used, should used value report just the one or all three?<br>
&lt;Rossen_> q?<br>
&lt;TabAtkins> fremy: Lea mentioned on the call that for her it seems easier to ahve computed and used be the same<br>
&lt;TabAtkins> fremy: So this seems to mean repeating the value as necessary to match the controlling property's length, or truncating to match<br>
&lt;TabAtkins> fremy: sebastian had same<br>
&lt;TabAtkins> fremy: but seems strange to me<br>
&lt;TabAtkins> fremy: computed value is what you inherit from<br>
&lt;TabAtkins> fremy: seems strange to say you inherit value to children that doesn't have all the values author provided<br>
&lt;TabAtkins> fremy: Even if the parent doesn't use them, might want to use them in the children<br>
&lt;TabAtkins> fremy: But apart from that...<br>
&lt;emilio> q+<br>
&lt;TabAtkins> fantasai: issue was initially filed due to complexity of adding more such property groups<br>
&lt;TabAtkins> fantasai: specifically about box-shadow longhands<br>
&lt;TabAtkins> fantasai: So question was if there's a way to make this repeating list situation easier to implement, or at least consistent<br>
&lt;TabAtkins> fantasai: previously the spec deferred to bckground specs<br>
&lt;Rossen_> q?<br>
&lt;TabAtkins> fantasai: Which gets the length and repeats/truncates at used value time, computed value is as specified<br>
&lt;TabAtkins> emilio: Not in Blink tho<br>
&lt;Rossen_> ack emilio<br>
&lt;TabAtkins> emilio: the firefox behavior preserves the length of all lists<br>
&lt;TabAtkins> emilio: I think that's generally simpler, avoids interdependencies at computed value time,w hcih are annoying<br>
&lt;TabAtkins> emilio: Also it's weird to lose values because the controlling property wasn't long enough, when inheriting<br>
&lt;TabAtkins> emilio: So I prefer that behavior. IMPlementing Chrome behavior is just more special cases during style resolution<br>
&lt;TabAtkins> emilio: so I'd rather keep the props independent and match them up at used value time<br>
&lt;TabAtkins> dbaron: I think there may be some relationship between these rules and the interpolation rules<br>
&lt;Rossen_> ack dbaron<br>
&lt;TabAtkins> dbaron: One thing to watch out for is if we add to this set of properties, which have interp rules that do LCM interp rather than trunctation/repetition<br>
&lt;TabAtkins> dbaron: bc i think we have two interp variants<br>
&lt;TabAtkins> dbaron: there's def a variant where two diff lengths gives you a list of LCM length<br>
&lt;TabAtkins> dbaron: there's one where you get the longer length, padded with a neutral default for the shorter<br>
&lt;TabAtkins> TabAtkins: I assume the third would be to interp the shorter length and truncate?<br>
&lt;TabAtkins> dbaron: Don't think that's present in anything<br>
&lt;TabAtkins> astearns: There's def a variant where we just don't interp between diff lengths<br>
&lt;TabAtkins> fantasai: LCM seems awful<br>
&lt;TabAtkins> fantasai: 5 and 7 would give 35 values. probably not what the author wanted<br>
&lt;TabAtkins> dbaron: It does the right thing in many cases, such as stroke-dasharray<br>
&lt;TabAtkins> dbaron: Might be others that do that<br>
&lt;TabAtkins> fantasai: So my starting proposal is we keep the spec as-is (specified in B&amp;B), maybe clarify. computed value is as specified, used value is repeated or truncated as necessary.<br>
&lt;TabAtkins> fantasai: And make sure all specs use that behavior and file tests and bugs as appropriate<br>
&lt;TabAtkins> fantasai: If we shoud do something different somebody should propose it<br>
&lt;fantasai> TabAtkins: I agree, I think that's the right proposal<br>
&lt;fantasai> TabAtkins: iank_ &amp; co, does that sound like something we can do?<br>
&lt;TabAtkins> rune: dunno off the top of my head if we can do it<br>
&lt;dbaron> s/rune/futhark/<br>
&lt;TabAtkins> rune: I think it's probably fixable?<br>
&lt;TabAtkins> Rossen_: So not opposed?<br>
&lt;TabAtkins> futhark: Not right now based on what I know<br>
&lt;TabAtkins> Rossen_: And it makes sense as a path forward<br>
&lt;TabAtkins> s/rune/futhark/<br>
&lt;TabAtkins> Rossen_: So we have a proposal. Anything else to add?<br>
&lt;fantasai> TabAtkins: if this is the resolution, does that unblock our ability to do more sets of list-valued properties?<br>
&lt;fantasai> TabAtkins: or are we they still problematic to add?<br>
&lt;Rossen_> q<br>
&lt;TabAtkins> emilio: They're still harder to implement, but 🤷<br>
&lt;TabAtkins> emilio: Less special-casey than the current behavior for sure<br>
&lt;fantasai> s/behavior/Blink behavior/<br>
&lt;dbaron> s/current behavior/current Blink behavior/<br>
&lt;TabAtkins> Rossen_: so proposal is to keep the spec as is<br>
&lt;TabAtkins> Rossen_: did something need to be clarified?<br>
&lt;TabAtkins> fantasai: Don't specifically say the computed value is same as specified value, it's implied. can be louder in the spec so it's obvious<br>
&lt;TabAtkins> fantasai: Should review other list-valued specs besides B&amp;B to make sure it's fine<br>
&lt;TabAtkins> fantasai: And might want to add a generic definition in V&amp;U so we're not all reffing B&amp;B.<br>
&lt;fantasai> TabAtkins: Proposed resolution is keep spec as-is, add generic definition to V&amp;U<br>
&lt;TabAtkins> fantasai: And make sure all specs are consistent with it<br>
&lt;TabAtkins> Rossen_: So anythig to be added? Objections<br>
&lt;TabAtkins> RESOLVED: Keep list-valued property definition as-is (as specified in B&amp;B). Genericize definition and move to V&amp;U.<br>
</details>


-- 
GitHub Notification of comment by css-meeting-bot
Please view or discuss this issue at https://github.com/w3c/csswg-drafts/issues/7164#issuecomment-1201340918 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Monday, 1 August 2022 15:17:53 UTC