[CSSWG] Minutes TPAC F2F 2017-11-07 Part I: .style append/replace, list marker layout, scroll-snap & scrolling APIs [cssom][css-lists][css-scroll-snap]

[This continues the meeting minutes previously labelled “San Francisco”;
the meeting was actually at TPAC in Burlingame. Apologies for the delay.]

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


CSSOM
-----

   - RESOLVED: Make it so that setters to the .style api are appended
               rather than put in place

CSS Lists
---------

   - There was interest in getting a better definition for list-item
       outside marker positioning into the spec.
   - RESOLVED: Add Francois as co-editor to the Lists spec.

CSS Scroll-Snap
---------------

   - RESOLVED: When using scrollIntoView you SHOULD take scroll snap
               margin into account.
   - RESOLVED: scrollIntoView MUST use the element position if it has
               one and snapping is on.
   - RESOLVED: Implementation MAY use the snap position if snapping is
               off.
   - RESOLVED: We will make the changes to specs as necessary to ack
               scroll snap when no arguments are provided to
               ScrollIntoView.
   - RESOLVED: Keep scrollIntoView() options as they are.

===== FULL MINUTES BELOW ======

Agenda: https://wiki.csswg.org/planning/tpac-2017#proposed-agenda

Present:
   Rachel Andrew, Invited Expert
   Rossen Atanassov, Microsoft
   L. David Baron, Mozilla
   Christian Biesinger, Google
   Tantek Çelik, Mozilla
   Dave Cramer, Hachette Livre
   Emil Eklund, Google
   Elika Etemad, Invited Expert
   Javier Fernandez, Igalia
   Rob Flack, Google
   Simon Fraser, Apple
   Chris Harrelson, Google
   Daniel Holbert, Mozilla
   Jihye Hong, LGE
   Koji Ishii, Google
   Brian Kardell, JS Foundation
   Brad Kemper, Invited Expert
   Ian Kilpatrick, Google
   Tomoya Kimura, VOYAGER Japan
   Vladimir Levantovsky, Monotype
   Chris Lilley, W3C
   Peter Linss, Invited Expert
   Myles Maxfield, Apple
   Xidorn Quan, Mozilla
   Simon Pieters, Invted Expert
   Naina Raisinghani, Google
   François Remy, Microsoft
   Melanie Richards, Microsoft
   Florian Rivoal, Vivliostyle
   Alan Stearns, Adobe
   Surma, Google
   Dave Tapuska, Google
   Lea Verou, Invited Expert
   Jet Villegas, Mozilla
   Greg Whitworth, Microsoft
   Eric Willigers, Google

Scribe: gregwhitworth

CSSOM
=====

logical/physical property cascade and the .style API
----------------------------------------------------
   github: https://github.com/w3c/csswg-drafts/issues/1898

   TabAtkins: Someone pointed out that there are problems with the way
              logical properties are defined when trying to use the DOM
              APIs.
   TabAtkins: They get resolved in the normal order and then go through
              the cascade and we deal with the physical and logical
              based on ordering and writing mode.
   TabAtkins: When you set a property it gets appended to the list of
              properties in the style attribute
   TabAtkins: and if you set one that's already there it just replaces
              it
   TabAtkins: so this can cause it to be out of sync with what would
              happen in the cascade.
   TabAtkins: The proposal is to amend the CSSOM that if something is
              there it is always appended.
   TabAtkins: Related to this
   TabAtkins: we had an issue with !important and we resolved to append
              to make this work.

   dbaron: I'm happy to make that change.
   dbaron: We had a long discussion and resolved the opposite way:
   dbaron: a setter should append.
   dbaron: At the time implementations were inconsistent due to
           optimizations
   dbaron: for existing properties in the fast path they would replace
           and others they would append.
   dbaron: One question, would having to do that mess up optimizations?
   TabAtkins: When we discussed it internally we were fine making the
              change.
   dbaron: I found the minutes from 2013 but I'm looking for the other
           one.
   <dbaron> Things I found were https://lists.w3.org/Archives/Public/www-style/2013Sep/0469.html
            and https://lists.w3.org/Archives/Public/www-style/2013Oct/0007.html
            but I think there was further followup after the latter

   astearns: So I'm clear, the suggestion to append or remove and then
             append?
   TabAtkins: Those are equivalent.
   dbaron: I think it may turn out that it's not equivalent in the
           future.
   TabAtkins: We should figure out which one we want, it will need to
              have a note to determine this.
   dholbert: You could inspect the style attr and determine that way.
   TabAtkins: The current model limits to only one.

   astearns: I'm hearing two engines happy to change.
   astearns: Any compat concerns?
   dbaron: Possibly.
   astearns: The compat issue would be limited to logical props
             shorthands?
   TabAtkins: No.
   fantasai: It would only affect people looking at style attr value and
             expecting a particular order
   fantasai: which doesn't make much sense, so it's probably not very
             common.
   florian: I doubt it's common.
   Rossen: Tools and editors might be doing this.
   TabAtkins: I'd be surprised if the editor was reading the style attr
              and writing to .style.
   Rossen: They could.

   astearns: The proposed resolution is to change CSSOM to append
             values via the .style API and add a note.
   TabAtkins: Yeah, and try to figure that out in the future.
   astearns: Any other opinions? objections?

   RESOLVED: Make it so that setters to the .style api are appended
             rather than put in place

   <dbaron> some links to discussion: https://bugzilla.mozilla.org/show_bug.cgi?id=172073
            https://lists.w3.org/Archives/Public/www-style/2008Feb/0116.html
            https://lists.w3.org/Archives/Public/www-style/2008Feb/0118.html
   <dbaron> (and there's more that I haven't found yet)

CSS Lists
=========

Interop on List-item outside marker
-----------------------------------
   github: https://github.com/w3c/csswg-drafts/issues/1934

   [fremy projects]
   [notes: https://1drv.ms/b/s!Av6HldQ1OB8gppU68lZS-mwqvguVcg ]
   fremy: More precisely the positioning of the marker.
   fremy: You can center things, but it's 2017 and we still don't know
          where to put the bullets.
   fremy: Got a bug to put the bullet in the right place.
   fremy: [shows bug in Edge]
   fantasai: Wait it is spec conformant?
   dbaron: Yes it is.
   fremy: [shows Chrome]

   fremy: Let's fix it.
   fremy: So I started to look at the spec and it's missing.
   fremy: Spec isn't ready to implement.
   fremy: Put the 2.1 spec text and technically Edge is matching but
          the spec is very vague.
   dbaron: I think I may have been responsible for that note.
   fremy: I get the impression that nothing is defined.
   dbaron: In Chrome it is inside the principal box so it violates the
           2.1 text.
   fremy: We want to fix this issue, but we want to spec it.
   fantasai: Yes.
   tantek: All of those sentences come from long discussions and not
           agreeing.
   [References are to the 2.1 text, which defines things as mostly undefined]
   fremy: So I'll describe how Edge is implementing this.

   <leaverou> since we're talking about weird bullet positioning, I'll
              quietly drop this Chrome & Edge issue here, in case it's
              relevant… http://dabblet.com/gist/3731c920fa0ee56efe3ec24a33a88964

   [fremy shows slides and he will post them a bit later]

   fremy: There are two different steps, find out which line box do you
          need to affect with the bullet
   fremy: then horizontally position the bullet.
   fantasai: How we end up describing this, we'll need to really think
             about the markers - what they need to do and what they're
             trying to achieve typographically
   fantasai: we shouldn't need to switch the model.
   TabAtkins: Attaching it to the first <li>, and the first item may be
              overflow: hidden and the marker can disappear.
   dbaron: That doesn't happen in Gecko because we position it to the
           align but it's not actually contained in that.
   dbaron: Back when Gecko did what was in fremy feedback and when we
           fixed it we don't get bugs.

   iank: We're looking at re-implementing markers, our current list
         marker behavior is not nice.
   iank: We're doing something very similar to what you described.
   iank: I'll need to check with Koji, we're doing something very
         similar to what you described, so if you could specify it that
         sounds great.
   fremy: That's what we want.
   eae: Now is the right time for us to spec this.

   <TabAtkins> <li><div style="overflow:hidden">...</div> <= list
               marker is clipped in Chrome!
   fremy: To reply to Tab, to have overflow: hidden we can't put it
          inside of a non-bfc and this is would not happen.

   astearns: So what is the action?
   fremy: I wanted to know if there was interest, it seems like there
          is.
   fremy: Sure I'll be a co-editor but I care more about interop.

   RESOLVED: Add Francois to the Lists spec

   <leaverou> TabAtkins: A bit late but bullet is not clipped in Chrome
              in your example, it just inserts a line, see here:
              http://dabblet.com/gist/07b894c9f6c1bbc3237c422172d0e5b9
   <Rossen> leaverou, there is a bullet, right?
   <leaverou> Rossen: yes. Tab said there wouldn't be.
   <Rossen> leaverou: good, we have interop then :)

CSS Scroll-Snap
===============

Interaction of scroll-snap and JS scrolling APIs
------------------------------------------------
   github: https://github.com/w3c/csswg-drafts/issues/1707

   TabAtkins: The scroll snap spec defines that if you do a fragment
              nav and it defines margin or something, you should pay
              attention to those.
   TabAtkins: It doesn't have any guidance on similar scrollIntoView
              APIs rather than just target scrolling.
   TabAtkins: We have the API opt into that
   TabAtkins: the API has other properties of its own.

   florian: When you say some properties what are those?
   fantasai: The things we were considering: the scroll snap margin
             that's the indication that there should be additional space
   fantasai: if it has a snap position that's an indication that you
             should snap that position.
   fantasai: The third thing, the UA could opt into using the snap
             position even if snapping is not turned on because the UA
             is trying to determine this and they may utilize this info
             from the author for the best end user behavior.
   astearns: It's a bit vague, but you're going for a must to consider
             the padding and positioning.

   smfr: If it's an element is in scrolled to it but look at it's
         container's scroll margin?
   fantasai: Usually you're looking at the border box for SIV and
             we're proposing to take scroll margin into account.
   florian: The other aspect about snap position, if snapping is not
            turned on but it has position you may use that to position.
   smfr: Would you only look at the targeted item or the ancestor chain?
   fantasai: Just the one that's being targeted.
   smfr: It seems weird that your taking a property that's meant solely
         for scroll snapping and you're adding it to the SIV.
   fantasai: This is adding author intent to the SIV.
   smfr: You could add props to SIV.
   fantasai: This makes it so that the author doesn't have to replicate
             that info into each JS call.
   smfr: Is the UA allowed to override scroll snap margins?

   florian: Is it implied that we should take scroll padding?
   fantasai: Yes.
   florian: I recall doing it in general, but wasn't aware we did it
            for this API.
   fantasai: That was intentional, you shouldn't be able to get in a
             state in JS that you can't get to as a user.

   astearns: The two of you - smfr and Rossen - showed some concern.
   myles: We have to make sure that websites that turn off scroll
          snapping, with this change the margin will now have effect.
   fantasai: Usually this will get you a better experience.
   myles: I'll be for implementing this and seeing if this has a web
          compat issue.
   fantasai: I don't think we should have a web compat issue.
   myles: I think we can resolve on this.
   astearns: I'm hearing some movement to resolving.
   astearns: Anyone object?

   RESOLVED: When using scroll-into-view you should take scroll snap
             margin into account
   RESOLVED: scroll-into-view must use the element position if it has
             one and snapping is on
   RESOLVED: Implementation may use the snap position if snapping is off

   florian: Should this change intersection observer?
   TabAtkins: I don't think we should bring this in?

Scroll Into View options
------------------------
   github: https://github.com/w3c/csswg-drafts/issues/1708

   fantasai: There are several different options that target an
             element, such as scroll into view.
   fantasai: Then there is the focus api.
   fantasai: They take a bunch of args for smooth scrolling or not, and
             how that element should be aligned within the viewport.
   fantasai: The default behavior should be following the scroll
             snap if scroll snap specifies something; currently the
             API definition overrides scroll-snap.
   fantasai: The second question is, are those options even necessary
             if there are scroll snap options?

   TabAtkins: We discussed this internally, there may be areas where
              you want to do one off alignment.
   fantasai: Do you have a usecase?
   eae: One is up and down arrows, you may want to align to the top or
        the bottom.
   iank: If you have a news feed you may want to use one or the either
         based on direction.
   dbaron: We had a discussion about these options a few weeks ago.
   dbaron: In that discussion I pasted the link to our internal code
           and if we want use cases where we use it.
   <dbaron> The Gecko internal API is documented here:
            https://searchfox.org/mozilla-central/rev/7e090b227f7a0ec44d4ded604823d48823158c51/layout/base/nsIPresShell.h#669-763

   smfr: Is scrollIntoView default the same as SIV false?
   smfr: We may scroll it into the top or the bottom, just as long as
         it's in the view.
   TabAtkins: This became a weird api for legacy issues.
   eae: Our default is either true or false based on distance.
   <smfr> webkit has scrollIntoViewIfNotVisible(bool centerIfNotVisible)

   florian: Your usecase of the newsfeed I think we should solve that
            in CSS scroll snapping.
   myles: But that criteria of direction could be a bunch of different
          criteria, I don't think we should do that.
   dbaron: Some of the complicated ones come from the a11y code.
   iank: It looks like scrollIntoView args might be different than
         scrollIntoView with bool.
   iank: If it's bool we set the block to start.
   TabAtkins: That isn't per spec.
   iank: ok
   eae: Ours is completely broken.
   TabAtkins: I may open an issue on this.

   astearns: I'm hearing at least 4 threads of conversation.
   astearns: Do we need to have any more discussion about scrolling the
             least amount?
   TabAtkins: That's a separate thing to consider for scroll snap.
   astearns: 1. The argument at the end should be dropped - sounds like
                they should not be.
             2. Should scroll snap win when there are no args in SIV -
                that sounds like there are no arguments against that.
   <dbaron> there seem to be different behaviors for: various a11y
            things, going to named anchors, focus changes, caret
            position changes, dom apis to scroll element into view, and
            some other things (e.g., things related to form autofill
            popups or devtools)
   fantasai: The two specs conflict.
   fantasai: The OM spec doesn't ack scroll snap.
   astearns: Does anyone have any objection to making those changes?

   RESOLVED: We will make the changes to specs as necessary to ack
             scroll snap when no arguments are provided to
             ScrollIntoView
   fantasai: Anything that does scrolling needs to be evaluated to
             allow scroll-snap to specify default scroll positioning.

   astearns: Any objections with not mucking with the ScrollIntoView()
             args?

   RESOLVED: To keep scrollIntoView() options as they are

Received on Saturday, 23 December 2017 14:59:50 UTC