[CSSWG] Minutes Telecon 2024-11-20 [css-ui][css-view-transitions][css-color-adjust][css-conditional]

=========================================
  These are the official CSSWG minutes.
  Unless you're correcting the minutes,
 please respond by starting a new thread
   with an appropriate subject line.
=========================================


CSS UI
------

  - RESOLVED: Name the pseudo-element ::checkmark (Issue #10908:
              Pseudo-elements for checkmark and dropdown icon for
              appearance:base `<select>`)
  - RESOLVED: Go with ::picker-icon (Issue #10908)

CSS View Transitions
--------------------

  - noamr introduced the proposal to remove 'auto' (Issue #10995: Allow
      an auto-generated `view-transition-name` that doesn't default to
      ID). There were objections to the removal so discussion will
      return to github.

CSS Color Adjust
----------------

  - RESOLVED: Close no change (Issue #11097: Should forced-colors
              support `color-mix()`?)

CSS Conditional
---------------

  - RESOLVED: Rename "overflowing" to "scrollable" (Issue #11182:
              scroll-state(overflowing) is confusing because it ignores
              clipped overflowing content)

===== FULL MEETING MINUTES ======

Agenda: https://lists.w3.org/Archives/Public/www-style/2024Nov/0018.html

Present:
  Jake Archibald
  Adam Argyle
  Tab Atkins-Bittner
  Kevin Babbitt
  David Baron
  Oriol Brufau
  Stephen Chenney
  Emilio Cobos Álvarez
  Yehonatan Daniv
  Stephanie Eckles
  Elika Etemad
  Robert Flack
  Simon Fraser
  Mason Freed
  Chris Harrelson
  Jonathan Kew
  Roman Komarov
  Vladimir Levin
  Rune Lillesveen
  Chris Lilley
  Florian Rivoal
  Cassondra Roberts
  Noam Rosenthal
  Miriam Suzanne
  Alan Stearns
  Josh Tumath
  Bramus Van Damme
  Lea Verou

Scribe: TabAtkins

CSS UI
======

Pseudo-elements for checkmark and dropdown icon for appearance:base
    `<select>`
-------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/10908#issuecomment-2455470313

  fantasai: Just 2-3 straw polls
  fantasai: We've been discussing the pseudos for parts of form controls
  fantasai: First is the pseudo that represents the checkmark in form
            controls. check in checkbox, dot in radio button, indicator
            in select
  fantasai: The checkmark pseudo is always there, it's just not visible
            when not checked
  fantasai: so you can style it to an x when unchecked, etc, because
            it's still there, you just have to style it visible
  fantasai: So the options are ::checked and ::checkmark
  <jarhar> ::check and ::checkmark
  <JakeA> Checkbox contains a check, so `::check`
  <JakeA> I'm also fine with ::checkmark fwiw
  <TabAtkins> it contains a check mark in my idiolect ^_^
  <TabAtkins> (but I'm good with ::check)
  <fantasai> :checked pseudo-class also exists
  <fantasai> input[type=checkbox]:checked::check?mark? { style; }
  <jarhar> option::check(mark)
  <schenney> +1 to :checkmark, as this is the thing that is being
             drawn, not the verb "to check".
  <argyle> ::checkmark
  <fantasai> POLL: A) ::check B) ::checkmark

  lea: What is the pseudo on in a <select>? the <select> or the
       <option>?
  fantasai: The <option>
  lea: Have we considered ::marker?
  <jarhar> ::marker has been avoided in several conversations due to
           property limitations and other baggage
  fantasai: That's used for list-items already

  JakeA: The idea is that we'd use this as the base rendering of a
         checkbox input?

  lea: Have we considered anything that doesn't imply a particular
       rendering?
  lea: This implies it'll always look like a checkmark
  fantasai: we could call it a checked-mark
  <fantasai> ::checkedmark
  <fantasai> :checked
  <jfkthame> ::indicator ?
  TabAtkins: Since the pseudo-class is already :checked, I don't have a
             big problem with the name possible being
             non-representative of the actual appearance
  <lea> +1 for ::indicator
  fantasai: I'm still going with the two options unless someone has a
            strong feeling
  <fantasai> I object to ::indicator because it is too generic
  fantasai: "indicator" is super generic, a million things could be an
            indicator. This is specifically about the mark on form
            elements that can be checked
  lea: I agree indicator is too generic, marker is about for
       list-items, check/checkmark are too specific... I dunno
  JakeA: Since :checked is the pseudo-class, does that sway you at all?
         I agree with you, but I think that pushes me to support ::check
  <argyle> `:checked::checkmark` vs `:checked::check`
  lea: If anything, :checked indicates we need something more generic,
       :checked::check is funky
  fantasai: We have a lot of pseudos that are specific to form
            elements, they won't be reused. Discussion of what this
            pseudo *is* should be another issue

  <noamr> I thought this is time-boxed to straw polls. This discussion
          doesn't seem like either time-boxed or a straw poll
  <masonf> Straw poll could be 1) ::check, 2) ::checkmark, or 3)
           something else?
  astearns: trying to timebox, I think we should go with Mason's
            strawpoll.
  <lea> 3
  <schenney> (2)), because I agree that almost any other word like
             indicator or active, or selected is overloaded.
  <florian> 1
  <bramus> 2
  <kbabbitt> 2
  <astearns> 2
  <jfkthame> 2
  <TabAtkins> 1, 2
  <noamr> 2
  <stepheckles> 2
  <argyle> 2
  <kizu> 2
  <dbaron> 2
  <masonf> 2
  <joshtumath> 1 or 2
  <fantasai> 2, 1
  <futhark> 2
  <jarhar> 2
  <chrishtr> 2
  <JakeA> 2
  <florian> 1 preferred, 2 ok
  astearns: 2 is obviously the winner
  astearns: proposed resolution is ::checkmark

  RESOLVED: Name the pseudo-element ::checkmark

  fantasai: Next is the dropdown arrow on select. Proposal is to use
            the same pseudo for that and other pop-up controls (like
            date picker, time picker)
  fantasai: "this is the thing that indicates you can trigger a popup"
  fantasai: For some form control that's the only targetable area,
other form controls can cause it in a larger area
  fantasai: Current thinking is a single pseudo representing an icon
that can be clicked to open things
  <fantasai> https://github.com/w3c/csswg-drafts/issues/10908#issuecomment-2455470313
  fantasai: Long list of things that have been proposed
  <schenney> expander
  <jarhar> I like ::picker-icon

  JakeA: I don't like the ones that suggest it's the thing you click on
         to open it
  <TabAtkins> like ::picker-opener, etc
  JakeA: If it's just referring to that little arrow...
  <masonf> +1 to that logic: it's just the "icon", and it *might* be
           inside a button.

  argyle: Do we have a list of affected elements?
  argyle: we have ::picker(), can we involve that? ::picker-picker?
  <masonf> Pickers are (typically): select, input text with datalist,
           color picker, date/time picker
  fantasai: This is on the form element, select::bikeshed
  argyle: And details summary? same or different?
  fantasai: Totally separate

  lea: The current use-case - is this always an arrow in every
       platform? or other displays?
  fantasai: The icon will probably differ between form controls
  fantasai: but the current proposal is appearance:base, it'll probably
            be a disclosure triangle of some kind
  fantasai: author would be able to change it
  <masonf> But on a date picker, it's usually a calendar icon
  lea: Yeah, just asking about default styling, any case where this
       isn't an arrow/caret?
  fantasai: We might have seen a + sign before?
  <lea> I quite like `::opener`. `::expander` could also work.
        `::picker-opener` is too long
  <fantasai> lea, the reason for the ::picker- prefix is to tie it to
             the ::picker() pseudo-element which it opens
  <fantasai> or indicates opening

  <argyle> will this always invoke a picker? or can it also expand
           inline?

  dbaron: If we're gonna do something here we reuse for date pickers,
          there are some differences
  dbaron: Like how Jake mentioned, how the entire control is clickable
          in <select> isn't always true in date pickers, the popup is
          separate from the individual bits with other controls
  dbaron: Don't think there's necessarily a hard requirement that this
          is or isn't the same thing we use on date picker

  schenney: In this discussion people keep saying "icon", think this
            strongly argues for icon
  <masonf> It's a down-arrow icon on select and color, and a calendar
           icon on the date picker. So always an "icon".
  lea: "icon" could be decorative
  <TabAtkins> ::picker-icon
  <TabAtkins> sounds reasonable to me
  <joshtumath> +1
  argyle: "search" has several icons, one for datalist, one for clearing
  <JakeA> +1 for `::picker-icon`
  <lea> I would rather name it after its purpose, rather than a
        specific rendering
  argyle: inputs that have a list become picker-invokers also
  <dbaron> `::picker-icon` was one of the 2 most popular options in the
           prior poll referenced in jarhar's comment

  masonf: In search, the icon doesn't open a picker, it does something
          else
  argyle: So I imagine if I did ::icon in a search, I'd expect it to
          select both? ::picker-icon is clearly about the picker, makes
          sense
  argyle: Do we need to separate "picker button" from "picker icon"?
          one wrap the icon, can be styled, etc; the other is the
          content
  TabAtkins: You would use 'content' to insert a string or whatever
  <lea> `::picker-trigger`? `::picker-invoker`? `::picker-opener`?
         They're long, but not that much longer than `::picker-icon`
  <dbaron> masonf: for search, `::clear-icon` for the one that clears

  astearns: So main difference between the first item on the popular
            list (picker-icon) and the next three is the rendering vs
            what it does
  astearns: Want to go into some reasoning?
  fantasai: In some controls, the icon is the only clickable thing. In
            others it's an indicator, but you can click in multiple
            places. Varies between controls, and has varied over time.
  astearns: Suggest poll between icon and action?
  fantasai: Suggest everyone put their favorite, we take the top few
  lea: I like Alan's suggestion. don't feel strongly about the name,
       but do feel strongly about it describing the action
  <masonf> +1 to just jumping to names
  fantasai: Unsure the grouping is reasonable. could collect into two
            sets...?
  <dbaron> (I'm not sure if "button" is purpose or rendering...)
  <lea> dbaron, I would think purpose. `::picker-button` seems better
        than icon as well
  astearns: I'm convinced by David's statement that my categorization
            isn't correct.

  astearns: Let's straw-poll on the first four options.
  astearns: 1) ::picker-icon 2) ::picker-button 3) ::picker-opener
            4) ::picker-trigger
  <argyle> 1
  <fantasai> 1
  <masonf> 1
  <schenney> 1
  <TabAtkins> 1
  <stepheckles> 1
  <kbabbitt> 1
  <noamr> 1
  <jarhar> 1
  <astearns> 1
  <ydaniv> 1
  <dbaron> 1
  <JakeA> 1
  <bramus> 1
  <futhark> 1
  <florian> 1
  <JakeA> Because it's iconography within the picker/opener/trigger
  <joshtumath> 1
  <oriol> abstain
  <lea> anything other than 1
  <ChrisL> 1
  <flackr> 1
  astearns: Straw poll seems clear. Let's resolve on picker-icon.
            Objections?

  RESOLVED: Go with ::picker-icon

  astearns: Third straw poll?
  fantasai: That's it

CSS View Transitions
====================

Allow an auto-generated `view-transition-name` that doesn't default
    to ID
-------------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/10995#issuecomment-2471478451

  noamr: There was a resolution previously for the behavior of "auto"
  noamr: where it goes to the ID as a name, then falls back to
         element-identity
  noamr: Jake raised some good points
  noamr: myself and a few other googlers consulted as well
  noamr: We feel like there's no current good proposal for "auto".
         We're not against doing something with the word "auto" in the
         future, but we're not suggesting anything else for "auto"
         right now.
  noamr: So our suggestion is to remove "auto" from the spec for now.
         Leave "match-element"
  noamr: Then get community feedback, and perhaps redo auto in the
         future
  noamr: we'll keep "auto" as an invalid name, so we can use it in the
         future

  fantasai: Our position is we think the current definition provides a
            useful behavior to authors
  fantasai: It does something which is "hey, try to figure out the
            mapping before and after"
  fantasai: in the most obvious way
  fantasai: Two obvious ways are, does it match IDs, and is it the same
            element?
  fantasai: with ID being more explicit of a signal, so it wins
  fantasai: I think the polls about "what auto does" mixes up with a
            concept of auto-generated string
  fantasai: If you think about identity about a string, auto could be
            thought of as genning such a string
  fantasai: but that's not what "auto" usually means in CSS.
  fantasai: Here it's just "if there's some reasonable auto notion of
            matching, use that"
  fantasai: and this lets us use the same view transition for a bunch
            of elements without having to name them individually
  astearns: So would you object to removing auto for now?
  fantasai: Yes

  JakeA: match-element, I think people think it's more useful than it
         actually is
  JakeA: If you think of them as page transitions, that's what they're
         for right now...
  JakeA: They don't work in practice, because parts of the UI get...
  JakeA: We had an overlay in the list we reordered, we had to put that
         in the VT as well, but because it becomes inert that didn't
         work for us
  JakeA: we need scoped VTs for reordering
  astearns: Noam had to leave and we're at timebox - I think I'll cut
            you off and we'll move on
  bramus: I'll defer to the issue as well
  astearns: So take this back to the issue. It wasn't a quick
            discussion, we'll bring it up again.

CSS Color Adjust
================

Should forced-colors support `color-mix()`?
-------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/11097

  ChrisL: Everyone implements color-mix() with system colors. we use
          rgb value of those colors
  ChrisL: All good
  ChrisL: But what to do in forced colors mode?
  ChrisL: Spec says computed value is the mixture, used value is
          overridden by a system color
  ChrisL: That's what chrome does. Firefox lets you mix it, so you can
          do opacity variations/etc
  ChrisL: Should this be allowed?

  emilio: I implemented firefox behavior. I think it's reasonable, it
          was a specific request from other engineers on firefox desktop
  emilio: I have more concerns about relative colors, which have the
          same kind of issue
  emilio: but I think as long as the arguments are system colors or
          transparent, it's reasonable to allow
  emilio: but I don't care too strongly

  kbabbitt: As I commented in the issue, the goal of forced colors is
            to give the user control over the contrast settings that
            they're seeing
  kbabbitt: so I think mixing them and reflecting that value in the
            computed result is fine, but what actually gets presented
            to the user should be reflective of their chosen palette,
            which precludes mixed colors
  kbabbitt: For UI concerns, I have a brief example in the issue,
            there's other ways to reflect the states that someone might
            use mixed or partially transparent styles for. Using
            different outline styles, for example. I've seen this in
            high-contrast UIs to work around it being limited
  emilio: That puts a lot of burden on authors, though.
  emilio: A lot easier to say, like, "my buttons have system colors on
          fg and bg, and hover states are variations of that"
  emilio: A lot of generic CSS I've seen uses currentcolor and
          transparent
  emilio: Don't see the point of allowing currentcolor and not system
          colors
  emilio: If you don't allow it, you put the burden on authors to
          change the whole stylesheet, rather than things just working

  lea: What exactly is the proposed behavior if we don't allow it?
      invalid at parse time? how are authors supposed to deal, use MQs?
  lea: I was wondering, instead of disallowing certain things, can we
       just allow anything and cast the result to the closet allowed
       color at used value time?
  lea: That seems better for DX, unsure if feasible
  ChrisL: That's pretty much what the spec says, that you pick the
          closest allowed color
  ChrisL: Closest not being particularly well defined
  lea: Then I'm missing something, why wouldn't we allow color-mix()?
  ChrisL: We do allow color-mix(), the question is what to do with the
          result
  ChrisL: Use the computed value, or one of the forced values
  lea: I'd expect it to produce the result, then see which allowed
       color it's closest to
  <ChrisL> agree

  emilio: In firefox there's no particularly well-defined notion of
          what's "closest"
  emilio: firefox actually gives youthe mixed color and you can use it
  lea: I'd be surprised if the spec doesn't have a well-defined notion
       of closet
  <ChrisL> "the UA determines the appropriate forced system
           color—which should match the color that would result
           from an empty author style sheet whenever all of the
           element’s affected properties are likewise UA-determined."
  <ChrisL> ie handwaving
  <lea> oof. We should *at least* provide a way to determine closest,
        even if non-normative
  florian: Regardless of that, I think the spec and chrome do snap the
           result to the closest color; the question is whether we do
           chrome or firefox behavior
  emilio: I think chrome probably treats it something closer to revert
  florian: You mean chrome doesn't pick the closest color, it just
           chooses something?
  emilio: I'd be surprised, yes. I think it's more like if you use any
          other non-allowed color
  kbabbitt: I expect what emilio said is correct. Blink sees the
            color-mix(), sees it's not a system color, and substitutes

  TabAtkins: With regards to emilio's point about being able to do
             generic stylesheets that slightly change colors, part of
             the deal is, that subtle distinction would be invisible to
             users of forced colors mode anyway
  TabAtkins: those authors are using identical colors in such a state
             anyway
  TabAtkins: Those authors should be doing something different in
             forced colors mode regardless
  kbabbitt: +1 to what Tab just said
  kbabbitt: also priority of constituencies, should lean to user
            preference for what they're seeing than author convenience
  emilio: I see two kinds of forced color users. Ones that need a
          specific color palette, and ones that just want one.
  emilio: Depending on which user, the color-mix() works great for the
          latter
  emilio: I agree you need to do something with more contrast for the
          former case, but allowing color-mix() doesn't preclude that.
          It does make life easier for the second class.

  <lea> I'm still very confused. E.g. what is the result of `color:
        color-mix(in lab, allowedColor1 0%, allowedColor2);`? It should
        not be different than `color: color-mix(in lab, allowedColor1,
        allowedColor2 100%);` or `color: allowedColor2`

  astearns: I think user needs should override user wants
  florian: The primary intent of this feature is a11y, not theming
  florian: It *might* be used by people who like certain colors, but
           the primary intent is for people who need those colors
  florian: If it happens to work for the theme enjoyers, great, but
           we're not designing toward them
  emilio: But Tab's point is, for those users it might not make a
          difference either way
  TabAtkins: Not necessarily. If it's subtle, might not be
             distinguishable
  TabAtkins: if not subtle, could defeat the contrast goals of the user
  <ChrisL> tab++
  TabAtkins: if using their chosen colors, then good for them
  kbabbitt: On need vs want, another feature is preferred color
            schemes, a better fit for users who just *want* dark mode
            or a particular set of colors but can tolerate mixes
  kbabbitt: but as others have said, forced colors is primarily about
            users who *need* that level of contrast

  stepheckles: I've seen articles recently with folks becoming aware of
               color-scheme property, and discovering system colors as
               a part.
  stepheckles: Trying to get the ability to produce light/dark agnostic
               themes, before we have better support for light-dark()
  stepheckles: Also, the example in the GH issue didn't even use the
               forced-colors MQ
  stepheckles: So want to clarify - does color-mix() using system
               colors automatically get overriden because it's not a
               system color?
  stepheckles: I think if authors have a specific reason to need a
               specific color to work, like color swatches for
               products, they still have the ability to use
               forced-color-adjust
  ChrisL: Slightly confused about what was asking
  ChrisL: System colors work the same way as normal colors
  ChrisL: but specifically *when* we're in forced colors mode, there's
          this overriding
  stepheckles: The first examples in the issue just describe some
               examples without forced-colors MQ in use, so it's a
               little confusing
  ChrisL: I linked to a codepen, when we're not in forced colors it
          seems like all browsers are happy to use system colors, mix
          them, etc

  astearns: So I think I'm hearing we should resolve on no change to
            the spec, and consider firefox's forced-colors behavior to
            be a bug
  astearns: emilio, do you want to go back to the people with this
            request and have a convo?
  emilio: I could. I think this isn't the right decision, but I don't
          want to object.
  emilio: If you have a disabled button, being able to make
          semi-transparent button text...
  emilio: We don't have a great set of system colors to reflect the
          relevant state. this gives you the escape hatch to modify
          system colors for that
  emilio: I think in the ideal world we'd have system colors for all
          the states authors care about
  <TabAtkins> (making the text low contrast for disabled buttons is,
              very specifically, the behavior we want to avoid for
              forced-colors users, fwiw)

  ChrisL: We've seen some good example of only changing opacity,
          probably benign. But if we allow color-mix to be used in
          general, people can do all kinds of wacky stuff, people can
          defeat the point of the mode. So I'm comfortable with it
          being overridden.
  emilio: But authors could just use forced-color-adjust:none, right?
  astearns: Counter is that's the authors specifically *choosing* to
            override forced colors mode. Allowing color-mix() to work
            allows them to screw up colors by accident.
  emilio: I think overall they could do more good than harm, but I'm
          not objecting.
  astearns: Anyone else who'd object to resolving this no change?

  RESOLVED: Close no change.

  emilio: I guess by extension we should disallow relative colors?
  ChrisL: Yes, I'll open a separate issue due to time

CSS Conditional
===============

scroll-state(overflowing) is confusing because it ignores clipped
    overflowing content
-----------------------------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/11182

  futhark: There's scroll-state(overflowing) which is true if there is
           content overflowing and scrollable to in that axis
  futhark: Elika points out that there may be overflowing content that
           can't be scrolled to. She recommends renaming the value to
           'scrollable'
  <miriam> +1 scrollable
  <argyle> +1 scrollable
  futhark: I agree. Suggest we use this name unless people have other
           suggestions.
  <TabAtkins> +1
  fantasai: I think this is a good summary
  <kbabbitt> +1 scrollable

  astearns: Proposed resolution is to rename 'overflowing' to
            'scrollable'
  smfr: Is this only user-scrollable overflow? or also overflow:hidden,
        which can be programmatically scrolled?
  futhark: Overflowing content that can be scrolled to *with the UI*
  kizu: yeah same, in a lot of aspects 'hidden' behaves as other
        scrollable values like 'auto' or 'scroll'
  kizu: I think there are situations authors might want to know if
        there is clipped content that could be script-scrolled to
  <emilio> I think it should apply to hidden fwiw
  <emilio> (but not clip)
  fantasai: Maybe a separate issue, I think I agree it should apply to
            hidden as well
  fantasai: The author knows if it's hidden or not, this becomes an
            uninteresting query for hidden elements if it doesn't work
            on hidden
  fantasai: but I think that should be another issue
  <TabAtkins> +1 to fantasai
  astearns: Are you okay punting to a separate issue?
  kizu: Yup

  astearns: So proposed resolution, rename "overflowing" to
            "scrollable". objections?
  <emilio> +1 on the rename

  RESOLVED: Rename "overflowing" to "scrollable"

  <emilio> +1 to make it work on hidden too :)
  astearns: I'll get the other two async resolutions going today.
  <emilio> There's no point on allowing auto with scrollbar-width: none
           but not hidden for example

F2F Scheduling
==============

  fantasai: We had a poll for scheduling the f2f, would be great to
            finish out respondents
  <fantasai> https://app.rallly.co/invite/ShjWRuGtqnQG
  fantasai: we have a lot of responses, so I'll close it soon and start
            looking at scheduling space
  fantasai: it's looking like probably Feb 6th

Received on Friday, 22 November 2024 23:03:18 UTC