[CSSWG] OpenUI-WHATWG/HTML-CSSWG Meeting Minutes 2024-11-21

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


OpenUI-WHATWG/HTML-CSSWG Meeting
================================

Selectors
---------

  - The group agreed to remove :closed for now and keep :open (Issue
      #11039: Should we have :open and :closed?)

CSS UI
------

  - RESOLVED: Use currentColor for borders, inherit the color,
              transparent background color (for in-page controls). Use
              system colors for pickers (Issue #10909: Colors to use
              for appearance:base `<select>`)
  - jahrar presented slides (
https://lists.w3.org/Archives/Public/www-archive/2024Nov/0002.html )
      for issue #10857 (UA stylesheet for appearance:base `<select>`)
      and requested feedback and questions in github.

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

Agenda: https://github.com/whatwg/html/issues/10778

Present:
  Joey Arhar
  David Baron
  Brecht De Ruyte
  Elika Etemad
  Mason Freed
  Chris Harrelson
  David Leininger
  Tim Nguyen
  Cassondra Roberts
  Alan Stearns
  Anne van Kesteren
  Greg Whitworth

Scribe: gregwhitworth
Scribe's scribe: masonf

Selectors
=========

Should we have :open and :closed?
---------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/11039

  jarhar: I tried to spec the open and closed pseudo classes in HTML
          that are in CSS and I was informed that they are redundant
          and remove the :closed pseudo selector
  brecht_dr: One benefit of having :closed is you can select a sibling
             in CSS with that state and you can make that default and
             only do it on open
  brecht_dr: I see some benefit to having this as well and we have this
             with disabled and almost no one uses enabled
  anne: In those cases you can use :not(:open)
  anne: If there are controls we might provide a picker; :close would
        not always match unless there is an open state
  anne: At least until we have a better handle on that open is easier
        and in the scenario where you'll know there is a picker you can
        do :not(:open)

  dbaron: I think historically CSS has pairs is so that you can
          distinguish between the ones they apply and those they don't
  dbaron: :close only matches things that could be :open
  dbaron: Could definition could be non-trivial to be defined and as we
          talk about inputs that "could" have a picker is not a trivial
          thing and :close would only apply to a picker like "color",
          "date" would match if they have a picker and they are closed
          now
  gregwhitworth: I feel like, David, you agreed with Anne, you can do
                 that with not
  dbaron: With input its harder to do that with not because you need to
          write input type= and get the selector for type exactly right
          and then put not open
  dbaron: It's harder to do with :not on inputs is you need to get the
          type attribute correct
  anne: I don't think we want to expose which controls have a picker
  anne: :closed would expose which controls have a picker
  ntim: The reason that is an issue is that the picker is not set and
        it may vary
  ntim: the set of elements that have a picker is not finalized*
  anne: iOS select multiple has a picker vs inline compared with Desktop

  jarhar: I really would like to move this forward and I'm fine with
          removing closed for now, does someone have strong feelings to
          keep closed right out of the gate
  <masonf> proposed resolution: support :open for now, leave :closed
           for later.
  argyle: Yeah, it seems obvious to include them and we think
          :not(:open) is the same then it seems solvable and they
          should be provided
  anne: :closed would only match an element that HAS a picker and that
        capability may change over time
  anne: :open will only match if the picker is shown and that will
        require a user action
  argyle: We can determine that today correct?
  anne: Whether it's web observable or not
  argyle: Isn't that a pseudo element of picker() making it web
          observable?
  argyle: As someone coming into this we have :open but not :close?
  ntim: The main problem here is someone uses :close selector on the
        web page and we expand the set of things that have pickers then
        :close will apply to more things with no action
  ntim: It's a compat hazard and it doesn't require any action for it
        to apply

  argyle: Can we teach "closed" to be to :not(:open)
  ntim: There is a difference
  masonf: This is akin to appearance: base in that there is compat
          concerns and once we have all the controls that have pickers
          we may come back and address them?
  anne: Maybe, we have to figure out the platform "thing"
  anne: There was TAG feedback on whether these should be feasible
        or not
  anne: So I think that would be TBD

  <jarhar> proposed resolution: remove :closed for now and keep :open
  argyle: I'm in agreement with jarhar that sympathizes and I'll not
          blocking it
  <masonf> +1

CSS UI
======

Colors to use for appearance:base `<select>`
--------------------------------------------
  github: https://github.com/w3c/csswg-drafts/issues/10909

  ntim: [Presenting a presentation on proposed colors]
  Slides: https://lists.w3.org/Archives/Public/www-archive/2024Nov/0003.html

  masonf: Thank you for the preso and history lesson
  masonf: My question is about forced colors and I assumed we would
          need the MQ but it seems like you found we may not need to do
          that?
  ntim: It's always ensured with currentcolor and transparent background
  ntim: You don't get the semantic colors that the user has defined

  <dbaron> The resolution
https://github.com/w3c/csswg-drafts/issues/11097#issuecomment-2489223857
           from yesterday might be relevant here
  dbaron: Yesterday the CSSWG had a discussion around forced-color and
          color-mix and it doesn't allow you to override the colors as
          it falls back to the set
  ntim: That may mean that we don't need the special color
  dbaron: The flip side is the risk that in forced colors mode there is
          no way to identify disabled style

  brecht_dr: The one example you showed us with the one covered in
             yellow
  brecht_dr: I'm curious if this works but is this something that can
             be annoying that you're using this in forced colors?
  brecht_dr: I don't know but I would like to know as this would be
             annoying
  ntim: The idea is not only for HC but also for cognitive disability
        for instance everything that is blue is a button
  ntim: Everything that is green is a text input, etc
  ntim: The user preference is the thing to respect here regardless
  ntim: We want to force system colors in forced-colors mode and the
        theory of how is to just do what works

  masonf: The first one is the proposal about transparency and
          currentcolor and system colors
  argyle: I'm curious if this proposal that we would like ghost styling
          for all form inputs as though it's a div with a border and
          would have no background
  fantasai: Correct
  masonf: By default, of course the dev could add one
  argyle: We have colors in system colors
  fantasai: But none that are guaranteed to have contrast with system
            colors

  masonf: What is the problem
  argyle: I see more issues with this than currentcolor with system
          colors than this
  fantasai: It's the background that is underneath unless you change
            the color on the input
  fantasai: You can get into this today
  fantasai: You can set the color without setting the background color
            today and true since CSS1
  argyle: I would have assumed everything is accessible by default
  argyle: it comes with healthy defaults for background + text, etc
  <ntim> PROPOSED RESOLUTION: Use currentColor for borders, inherit the
         color, transparent background color (for in-page controls).
         Use system colors for pickers.
  <ntim> We force system colors in forced colors mode, figure out what
         would be the best mechanism.
  fantasai: You'll get this if you set the color to the background that
            doesn't contrast with the background

  argyle: I don't know a design system that is ghost alone
  ntim: Material Design
  ntim: the proposal inherits the color from the parent element
  argyle: They have an inherited contrast and they could have good
          contrast out of the box
  anne: none of the HTML elements have their own background
  anne: that's the reasoning behind this proposal
  anne: isn't that the point of this
  argyle: I thought the principle was to make this "safe" and
          accessible by default
  fantasai: What is the difference between this and an H3
  argyle: I'm not saying they're the same
  <fantasai> or a <strong> element
  anne: They have the same requirements
  anne: How are they different
  argyle: They have states and interactivity
  argyle: They're quite different
  anne: none of those impact the styles
  ntim: People expect backgrounds behind them is that we expect them
        and there is no extra background requirement
  argyle: If you want to go super minimal and that's the most minimal
          starting place and you're saying people will fix it
  fantasai: If it's not they have bigger problems

  brecht_dr: I do think it's important to have base because you decided
             to set it to that but I do understand from argyle and
             differentiation from that and a div
  brecht_dr: if you have a border on an H3 and an interactive element
             right from the start
  brecht_dr: I'm not sure if that is right
  fantasai: We don't have a border on H3 on it
  fantasai: Maybe you want to make some style changes then
  brecht_dr: I agree on that
  <masonf> On a white background, that's the case today though.
  <fantasai> +1 masonf
  brecht_dr: You want something is contrasted and not contrasted

  gregwhitworth: When we kicked off appearance:base, the styles will be
                 interoperable. That was fundamental.
  gregwhitworth: When you do appearance:base, you know how everything
                 will be. We did a lot of research on forced contrast.
                 In theory, even today you can collide colors.
  gregwhitworth: Interoperable styles - we have the same DOM and same
                 styles. I'd prefer background colors, because that's
                 how I build them, but I can easily do that. Just add a
                 background-color. I'll always do that.
  gregwhitworth: Tim, there's a difference between popovers and
                 inlines, right? On popovers there will be a background
                 color.
  ntim: Right.

  chrishtr: The most important thing is compatible styles that are easy
            to override and the second most is consistency with how
            elements work with the web
  chrishtr: Second thing we can stroll poll
  <masonf> Straw poll: 1) transparent background colors, 2) system
           colors
  <dbaron> Is the straw poll just about the in-page part of the
           controls?
  <fantasai> Should be, yes

  davidleininger: I want to be clear on appearance: base is that
                  currentcolor comes into inputs as that doesn't
                  currently work
  davidleininger: There are so many other little things that can impact
                  this
  fantasai: We inherit from the parent, not from the body
  davidleininger: If it inherits from the parent and it inherits from
                  the parent and it's a mismatch how do we handle that?
  ntim: The text color inherits from the parent and the background of
        parent inherits as well so as long as the contrast is correct
        then this should work
  davidleininger: I can see this not having a reasonable pair and
                  you're putting a background on a fieldset but it's
                  not meant to be transparent, I can see it causing
                  potential issues and maybe that's something we're
                  ok with
  ntim: You'll want to set the text color on the fieldset if you're
        setting the background
  davidleininger: I'm not going to lose sleep over it

  <masonf> Straw poll: for *in-page controls* (not popover pickers): 1)
           transparent background colors, 2) system colors
  <argyle> "base" could learn a lot from the wildly popular "headless
           ui" libs, since that sounds like what this group is hoping
           "base" can be?
  <argyle> https://nerdy.dev/headless-boneless-and-skinless-ui#headless-ui
  <fantasai> masonf, you forgot about inheriting the color :)
  <fantasai> maybe? POLL: for *in-page* part of the control (not
             popover pickers): 1) inherit 'color', transparent
             'background' or 2) use system colors
  <masonf> fantasai, yeah. Colors *are* inherited, they're just
           overridden in the current stylesheet. Right?
  <masonf> +1 to fantasai's version of the poll. Just to be completely
           transparent. ;-)

  anne: So they would not set the color property
  davidleininger: People build things in terrible ways all the time
  davidleininger: I'm going to throw this standard element inside of
                  this element and it's going to house the form but the
                  form is white and they use a div that is grey
                  background and they apply appearance: base and it's a
                  grey one now there is no background
  davidleininger: The have had a white background for so long that it
                  could mess with things
  anne: They could not use the H3 in that context
  anne: If you set display: none on your root should we disable that?
  davidleininger: We're not making that the default
  masonf: The label on the element on the would not have contrast

  dandclark: I'll agree with gregwhitworth and chrishtr is the priority
             and either of these options are viable for that
  dandclark: Apologies if I missed this and we need to have multiple
             colors such as range, seems like we're locked into one
             foreground color?
  dandclark: How would you expect that to work
  ntim: We could use mixes of current color with lumances and have one
        color, etc

  <dbaron> POLL: for *in-page* part of the control (not popover
           pickers): 1) inherit 'color', transparent 'background' or 2)
           use system colors
  <argyle> #2
  <masonf> 1+
  <masonf> 1
  <chrishtr> 1
  <ntim> 1
  <fantasai> 1
  <gregwhitworth> abstain
  <astearns> abstain
  <jarhar> 1
  <dbaron> 1
  <davidleininger> 2
  <dandclark> 1
  <emilio> 2
  <brecht_dr> 2

  RESOLVED: Use currentColor for borders, inherit the color,
            transparent background color (for in-page controls). Use
            system colors for pickers.

  <ntim> We force system colors in forced colors mode, figure out what
         would be the best mechanism.

UA stylesheet for appearance:base `<select>`
--------------------------------------------
  scribe: dbaron
  github: https://github.com/w3c/csswg-drafts/issues/10857

  jarhar: [presents presentation]
  Slides: https://lists.w3.org/Archives/Public/www-archive/2024Nov/0002.html

  <argyle> margin-inline-start instead of justify-content, how come?
           justify-content will continue to work if authors put
           checkmarks on the inline-end, where inline-start only works
           for checkmarks at the start
  <emilio> Can we avoid flex / border-radius? The less we change the
           general layout model the better, IMHO...
  fantasai: Key question here is do we make buttons look different from
            inputs. If yes, second question applies, and we need to
            decide how. Proposal is using either background-color,
            border-radius, or both.
  fantasai: Advantage of background-color is it's something authors
            will almost always override anyway. But if we use a
            background color it's more likely to run into color
            contrast than if we use a border-radius.
  fantasai: We should try to make minimal differences. I'd probably go
            with a or b and not c so there's fewer things to override.

  brecht_dr: I agree with ??
  brecht_dr: Resetting things gets tedious, fewer things to reset is
             better.

Received on Saturday, 23 November 2024 00:35:31 UTC