07:21
<zcorpan>
Eric Portis (he/him): LGTM
07:24
<zcorpan>
I guess we should revive https://github.com/whatwg/html/pull/6695 cc Jake Archibald
08:18
<annevk>
Hmm, why does locking an issue restrict it to people with write access. That's kinda prohibitive. Would be nice if there was a "has engaged with this organization prior to this issue" variant.
08:44
<annevk>
Well, the XSLT issue is locked to people with write access unfortunately. Can't be reading that all day.
10:58
<Jake Archibald>
Hah, yeah. I'll get that PR up to date.
12:03
<Jake Archibald>
Filing my yearly-ish complaint about the HTML spec's wrapping making it hard to search
12:04
<jmdyck>
(I make myself a version without so many linebreaks, just for ease of searching.)
12:19
<keithamus>
annevk: writing tests now for styling of :heading(n), I'm confronted with: should the default styles for :heading(7..9) also be tweaked? We could simply set them to the same has :heading(6) or something?
12:20
<keithamus>
Feels weird that :heading(7) is now larger than :heading(6)
12:22
<annevk>
keithamus: ah, good point. Matching 6 seems reasonable, but not sure if that would violate some guidelines.
12:22
<zcorpan>
keithamus: maybe as part of adding headingoffset
12:22
<keithamus>
zcorpan: indeed
12:23
<annevk>
(Adding that attribute is what we're discussing.)
12:25
<keithamus>
AFAIK there aren't guidelines on the visual size of a heading, only that they are in order. Anything close to looking like a guideline for each heading only mentions h1-h6... so I think we may be in slightly uncharted territory
12:32
<zcorpan>
Making the text even smaller seems bad, it would be unreadable. Bold italic could work, but only gets us another level. Maybe alternating bold / bold+italic? Another thing for authors to "reset" though
12:51
<annevk>
keithamus: I suggest we keep them bold, but give them all the same margins and font-size as p.
12:52
<annevk>
keithamus: I guess this does raise the question as to whether we spell it :heading(7, 8, 9) or :heading(7), .... Meh.
12:53
<zcorpan>
n+7
12:53
<keithamus>
I was going to hedge and spell it :heading(7), ... šŸ˜†
12:54
<keithamus>
:heading(7) is valid whether settle on <AnB> or <integer># so it skirts the whole discussion/conclusion
12:54
<annevk>
:nod:
12:57
<zcorpan>
Same as p matches no other heading style, but same font-size as :heading(4). Not sure that's better than matching :heading(6)
13:04
<annevk>
Oh, I didn't realize. Wow. None of those defaults are great then.
13:13
<Jake Archibald>
zcorpan: https://html.spec.whatwg.org/multipage/images.html#sizes-attributes - if I say "if element has a sizes attribute", would that be false if the element had a sizes attribute but the value was invalid?
13:13
<zcorpan>
Jake Archibald: no
13:14
<Jake Archibald>
I'm concerned about the "A sizes attribute is an attribute with requirements defined in this section." followed by "If present, the value must be a valid source size list."
13:14
<Jake Archibald>
So I was worried that it wouldn't 'have' one if it didn't meet the requirements
13:15
<zcorpan>
It's the DOM definition of attribute being present
13:30
<keithamus>

annevk: I think we also want headingReset to be true when the Dialog is in the modal state. Whether or not the IDL reflects that I am unsure of, but I am sure we don't want to expect developers to manually add it so....

Do I add headingReset getter steps or do I add additional steps in the computed level steps?

13:47
<Jake Archibald>
It feels like it shouldn't be getter steps, else el.headingReset = el.headingReset becomes weird
13:48
<Jake Archibald>
I wonder if it's a bit too magic in general.
13:48
<annevk>
Not sure that's a property we generally care about though. Hmm.
13:49
<keithamus>
I'm perfectly happy just adding something akin to or inclusiveAncestor is a dialog whose is modal is true
13:49
<annevk>
I think we generally make the getter compute the actual state if we can.
13:50
<annevk>
That does create weirdness for the case Jake mentions, but I think that's generally weird because we compute quite a bit.
13:52
<Jake Archibald>
Interesting. Which other cases of this exist? I know stuff like input.type = input.type can set the attribute to "text" even if it was absent or invalid, but that seems fine (the default isn't contextual). input.value = input.value has side-effects, but… is that a good thing? document.cookie is a mess of course.
13:53
<Jake Archibald>
Eh, I guess you're right, you can't assume obj.prop = obj.prop is 'safe' on the web
13:53
<keithamus>
probably button.type which is contextual
13:53
<keithamus>
dialog.closedby also
13:54
<Jake Archibald>
Good points. Yeah, I formally retract my concern 😁
13:55
<Jake Archibald>
Given button.type, headingReset should be computed
14:06
<keithamus>
Here's with implicit font size of 1em for 7-9
14:06
<keithamus>

html.css:

:heading(7), :heading(8), :heading(9) {
  margin-block: 1em;
}
14:10
<annevk>
keithamus: that certainly has meme potential. Matching h6 is probably better then? (Or we don't support >6 in HTML, but I suspect that will also make people upset even though some (one?) screen readers reportedly treat >6 as 1.)
14:15
<keithamus>
yes I think so
14:44
<keithamus>
This all begs the question... <h> when??
14:47
<Jake Archibald>
zcorpan: what do you think in terms of source.sizes if it has no sizes attr, but the related img does?
14:52
<keithamus>
so if dialog doesn't have a content attribute of headingreset, it can return true if is modal is true?
14:52
<keithamus>
But if it has a content attribute it must respect it?
14:53
<keithamus>
This is effectively the same though, as it's a boolean attribute - so the presence of it dictates is truthiness. I don't think you can set it to a value which would represent false?
14:57
<Jake Archibald>
Correct
14:58
<Jake Archibald>
In terms of spec, I'd write it as if modals force heading resetting
17:42
<annevk>
keithamus: it seems weird if it only resets while it's in the modal state because that means if you open it another way the headings would have a different level.
17:42
<annevk>
keithamus: that makes it effectively depend on an API call. I don't think that's good.
17:43
<keithamus>
keithamus: it seems weird if it only resets while it's in the modal state because that means if you open it another way the headings would have a different level.
I think that’s right though. A dialog which is not modal should have the document heading structure. A modal dialog should have its own discrete heading structure.
17:44
<annevk>
I think we even have examples where calling both showModel and show are okay. It would be extremely confusing I think to have those end up with different heading levels.
17:53
<annevk>
We can discuss it, but I think it would be better if we don't add special heading reset semantics anywhere. Just make people request it explicitly as an expert feature. (Maybe if some element down the line clearly calls for it we can reconsider, but dialog in its current form isn't quite it I think.)
17:56
<keithamus>
We can discuss it, but I think it would be better if we don't add special heading reset semantics anywhere. Just make people request it explicitly as an expert feature. (Maybe if some element down the line clearly calls for it we can reconsider, but dialog in its current form isn't quite it I think.)

I disagree. The headingreset attribute was precisely carved out for modals, which need to have an h1 title - I think this is actually a wcag recommendation IIRC.

I think if there was ever an element that would have implicit headingreset, it would be a modal dialog.

17:57
<annevk>
But we don't have such an element.
17:57
<annevk>
And you can already use <h1> there if you need it.
17:57
<keithamus>
This is the point, you won’t be able to. You’d have to manually add headingreset to your dialogs.
17:59
<annevk>
I could see adding it to dialog elements, period, but having heading levels depend on the state seems bad.
18:00
<keithamus>
I agree it’s not nice but I don’t think either adding it to all dialogs, or not adding it to any, result in a better situation for users.
18:01
<keithamus>
If developers have to opt in to headingreset on modals then it becomes another thing that - if missed - becomes detrimental to users. If developers have to opt out by adding hesdinglevel=N it might negate the benefit of the feature (because they’d have to figure out the N which is sometimes not possible).
18:03
<annevk>
I think it's also bad for users if the outline of the document ends up shifting when they open a dialog.
18:03
<keithamus>
It does anyway. The entire page becomes inert.
18:04
<annevk>
That's an interaction thing. I'm talking about the semantics on which you might build new UIs and such.
18:04
<keithamus>

I think none of the options are great but IMO adding to just modals is confusing for developers but the best option for users. Adding to all dialogs by default is the worst option because it’s wrong for users and difficult to workaround for users.

If we really must then I suppose leaving it for the developer to add headingreset is better than forcing it all the time but it is a distant second imo.

18:06
<keithamus>
I don’t understand your point about semantics for new UIs.
18:08
<annevk>
I don't think the semantics of the document should change based on the state of a control. What :heading(x) matches should stay consistent throughout.
20:32
<Noam Rosenthal>
If you have the same <dialog> element that can be in both modal and non-modal state in the context of the same document, would you expect it to have different heading styles/behavior based on that modal state, or would the author put headingreset on that particular <dialog> so that both cases appear the same?
20:33
<Noam Rosenthal>
keithamus: ^
20:37
<keithamus>
If you have the same element that can be in both modal and non-modal state in the context of the same document, would you expect it to have different heading styles/behavior based on that modal state, or would the author put headingreset on that particular so that both cases appear the same?
I struggle to imagine a case where a dialog might become modal. It seems to me it is a single element that expresses two concepts.
20:37
<keithamus>
If you have an example I’d love to see it. Not trying to skirt the question.
20:38
<keithamus>
But I suppose I would expect the heading structure to change. When modal it’s effectively its own page so having a heading structure that starts at 1 so a user can ā€œreach backā€ to the root heading could be useful.
20:40
<Noam Rosenthal>
hmm let's say you have a design system component for error notifications based on dialogs, with a <dialog id=error> element. Whether that dialog is shown in a modal way or not depends on which error it is and the context
20:45
<Noam Rosenthal>
I would find it surprising that showModal() changes things not to do with interactivity... but perhaps we can make this behavior feel a bit more explicit by having headingreset="when-modal" or "auto" or some such that hints that headingreset is a product of state
21:00
<Noam Rosenthal>
if this use case is not interesting and I always intend to use a particular <dialog> element as a modal, perhaps putting a headingreset on it is not a bad way to express an explicit intent of using it as a modal in the future