Re: [WICG/webcomponents] [a11y]: permit aria-hidden=true on focusable shadow elements in FACE (Issue #1014)

I'm grateful to @alice for her time over element chat while she participates in the Igalia WebEnginesHackfest. She graciously donated her time and (considerable) expertise to try and understand my intent with this issue and work through possible solutions.

In summary:

- we're talking about a FACE that `delegatesFocus: true`, and wraps a single `<input>`. In various fora, the shorthand `<fancy-input>` represents this case
- `<fancy-input>` is not very well supported by current specs
- simply permitting `aria-hidden=true` on the shadow input, as this issue proposes, would not solve the problem as:
  - we want the AT focus to be on the shadow host
  - but the keyboard focus to be on the shadow input

The proposal would therefore be amended:

```
IF
  a shadow host delegatesfocus
  AND (
    is a FACE
    OR has internals attached
  )
THEN
  allow removing focusable shadow children from the AT
  have AT focus land on the host when keyboard focus is on the input
```

Alice recommended a workaround where
- the host does not set a role
- the custom element _moves_ most aria attrs (those not blocked by cross-root aria) from the host to the shadow

-----

@alice reports that rough experimentation with implementing the original proposal here (permitting aria-hidden) has better-than-expected results.

for completeness, this proposal (originally, and with this comment's amendation) assumes the component developer has to hook up all the plumbing via element internals, but the developer advantage of not having to reimplement `<input>` with `contenteditable` remains.

-- 
Reply to this email directly or view it on GitHub:
https://github.com/WICG/webcomponents/issues/1014#issuecomment-1580516107
You are receiving this because you are subscribed to this thread.

Message ID: <WICG/webcomponents/issues/1014/1580516107@github.com>

Received on Wednesday, 7 June 2023 10:53:44 UTC