Open rahimabdi opened 4 weeks ago
@rahimabdi could you clarify how you're testing the not-string undefined
value with the W3C HTML validator? I'm definitely not getting failures for HTML like <button>some text</button>
(i.e. with no attribute defined), and I don't believe the validator is looking at scripting or setting of IDL attributes. Some of the things you have marked as failures under the "undefined value" column are kinda throwing me a bit 😅
Also dropping this here as well (I posted it in a reply comment in a PR, but thought it'd be easier to find here too):
I made a test page to output the browser-mapped values when ARIA attributes are set to the string "undefined", not set at all, or set programmatically to undefined: https://jsfiddle.net/pobwvgs9/
I checked it in Chrome, Edge, Safari, and Firefox on macOS and Windows (Safari only on mac), and all of them had the same not-undefined results for the string "undefined". The results for not-defined and programmatic = undefined values are what I'd expect & what matches the spec, while the string "undefined" are not.
Discussed briefly during the ARIA working group meeting: https://www.w3.org/2024/05/16-aria-minutes#t09
Consensus that the string "undefined" should not be considered undefined.
@rahimabdi could you clarify how you're testing the not-string
undefined
value with the W3C HTML validator? I'm definitely not getting failures for HTML like<button>some text</button>
(i.e. with no attribute defined), and I don't believe the validator is looking at scripting or setting of IDL attributes. Some of the things you have marked as failures under the "undefined value" column are kinda throwing me a bit 😅
@smhigley For the undefined
assignment (not the string), I took each of the state/properties and set it as follows: stateOrProperty=undefined
, e.g., aria-expanded=undefined
. I've never implemented these in this manner, or seen them implemented this way, but the spec language (and HTML Validator) seem to be OK with it.
I think the spec may benefit from greater clarity on what it means for a state/property to be undefined, and to delaminate all the ways something can be undefined. I counted the following techniques:
aria-current
). Does this one need a default value?I am on board with consistency within the spec itself. Are you proposing a PR to do so?
Otherwise I cannot tell from your comment what you feel the next step should be.
Describe the change
In order to address https://github.com/w3c/aria/issues/2156, @spectranaut /@smhigley /@aardrian suggested clarification in the spec of how to assign
undefined
for states and properties; namely, to clarify thatundefined
represents a value (e.g.,aria-expanded=undefined
) rather than a string (e.g.,aria-expanded="undefined"
). This change may also involve explicitly stating the absence of a value is equivalent toundefined
.It's unclear where this should be documented (perhaps Section 6.2 Characteristics of States and Properties).
Unconventional techniques for assigning an
undefined
valueThere may need to be additional clarification on the following assignment methods:
stateOrProperty = ""
(this one is referenced in thearia-current
section as being allowed via the empty string, i.e., "If the attribute is not present or its value is the empty string...")stateOrProperty = null
Potentially erroneous spec examples of
"undefined"
string valueThe following two
undefined
references use the string value which may be confusing and require updating:aria-hidden
state description section:Validator testing of
undefined
vs."undefined"
W3C HTML Validator shows the following parsing results when
undefined
is assigned as a value (stateOrProperty=undefined
) vs. a string (stateOrProperty="undefined"
).undefined
:"undefined"
stringundefined
valuearia-checked
role="checkbox"
,role="radio"
aria-current
(may be missingundefined
in its Values table, see https://github.com/w3c/aria/issues/2176)<button>
,<a>
,role="button"
,role="link"
aria-expanded
<button>
,<a>
,role="button"
,role="link"
aria-grabbed
aria-hidden
(very recently added as part of https://github.com/w3c/aria/pull/2090)<button>
,<a>
,role="button"
,role="link"
aria-orientation
role="scrollbar"
,"role="slider"
,role="tablist"
aria-pressed
<button>
,role="button"
aria-selected
role="tab"
aria-multiselectable
(may be missingundefined
in its Values table, see https://github.com/w3c/aria/issues/2176)role="tablist"
,role="listbox"
Link to the version of the specification or documentation you were looking at
Link to documentation: https://w3c.github.io/aria
Does the issue exists in the editors draft (the editors draft is the most recent draft of the specification)?
Yes.