@siblingpastry@mastodon.world
@siblingpastry@mastodon.world avatar

siblingpastry

@siblingpastry@mastodon.world

Technical consultant at TPGi, JavaScript accessibility specialist, writer, musician, neurodivergent (ADHD), vegetarian, socialist.

This profile is from a federated server and may be incomplete. Browse more on the original instance.

aardrian, to accessibility
@aardrian@toot.cafe avatar

[1/2]
VoiceOver / Safari / macOS bug(s) confirmation requested.

Visit https://cdpn.io/aardrian/debug/VoQbLm

Navigate the first table using VO table navigation commands.

Using Safari 17.5 / macOS 14.5, VO returns the count of all rows, even hidden rows. It also lets me navigate hidden rows.

VO with Chrome has no issue.

Attached video (no captions other than speech viewer) shows this in action.

Navigating a table in VO / Safari, where it announces every row in the table, even the hidden ones.

siblingpastry, (edited )
@siblingpastry@mastodon.world avatar

@aardrian I have the same versions, and I get the same results.

Curious thing though -- if you open and close each expander once, it's fine after that -- the hidden rows are no longer navigable, nor included in the row count.

So for a brutal workaround lol:

document.querySelector('#btnMSa').click();  
document.querySelector('#btnEDENSa').click();  
window.requestAnimationFrame(() => {  
 document.querySelector('#btnMSa').click();  
 document.querySelector('#btnEDENSa').click();  
});  
dgar, to random
@dgar@aus.social avatar

The existence of “Greenwich mean time” would suggest the existence of “Greenwich kind time”.

siblingpastry,
@siblingpastry@mastodon.world avatar

@dgar We call it mean to remind you bloody colonials who’s in charge 🇬🇧⛓️

SteveFaulkner, to accessibility
@SteveFaulkner@mastodon.social avatar

⌨️Flutter Wang

"it is important to highlight that Full Keyboard Access (FKA) on Flutter does not exist. If you are planning on building an app using Flutter, FKA users will not be able to use your app"

#a11y #mobile #flutter

https://www.tpgi.com/mobile-tabs-part-3-flutter/

siblingpastry, (edited )
@siblingpastry@mastodon.world avatar

@VamptVo @SteveFaulkner John's done fantastic work writing-up solution boilerplates for a range of mobile frameworks and situations.

And yeah, the more of them I read, the more I'm just like -- Flutter is bollocks for accessibility. I might start calling it Flubber.

joelanman, to accessibility
@joelanman@hachyderm.io avatar

It's unclear whether it passes wcag but from our research I think it's much clearer to mark optional fields as 'optional' than have asterisks or 'required' next to every field and have optional fields implied by the lack of them.

If you're asking for data, the default should be it's because it is required. This is part of GDPR

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman We treat that as a pass. So long as the difference between required and optional is clear (one way or the other) then it passes 3.3.2.

But required fields still have to be programmatically declared, and my personal opinion is that visual indication patterns should be consistent with that way round.

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman If it has visual indication, but no programmatic declaration (required or aria-required) then I’d fail it against 4.1.2.

So yeah, if you’re only marking optional fields with visual labels, and not declaring required fields with those attributes, that’s a pass for 3.3.2 but a fail for 4.1.2

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman But there is no state called “optional” and states have to be programmatically communicated. Either it’s “required” or it isn’t, there’s no declarative optional state.

You might be able to make a case that you’re passing the intent if not the letter, but that’s a judgment call, it would depend on the overall situation.

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman Ah well, now we’re getting into whether static states are covered by 4.1.2. The general consensus seems to be that they are, and that’s our company stance, but there is debate. I’m AFK right now but there’s a GH thread I’ll find for you later.

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman Here's the thread I was referring to -- https://github.com/w3c/wcag/issues/3523

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman I think it depends how you read it -- you could find justification in either point of view from the opinions there.

We had this debate recently, and we decided that we would consider static states to be part of 4.1.2.

But often in cases like this, these details form a part of overall decisions -- if an interface is clearly shit, how do we justify failing it without abusing the intent or letter of relevant SCs.

For your case, the greater inclination would be to justify passing it.

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman Where are you now -- a mixture?

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman We had a recent client who made the same assertion, and that's what made us challenge our standing guidance to mark required fields. From which debate, we told the client, yeah okay that's fine.

But, we still insist on programmatic required attributes.

The inconsistency of that doesn't sit quite right with me. I think that for general usability, you're right, but for AT usability, required indication is better because it's a semantic state. And to my mind, that takes precedence.

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman There may also be cases where neither is needed. For something like a login and password form, those fields are always required. That's such an established pattern, you could say that the states are already clear enough that they don't need to be marked.

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman It also hinges on how you define "programmatically determinable". I don't really accept that text descriptions count as programmatically determinable, even if they're programmatically associated, but that's a hard hill to die on lol.

siblingpastry,
@siblingpastry@mastodon.world avatar

@yatil @joelanman Only thing with that is the difference between visual and semantic might be confusing for sighted screen reader users. That's the inconsistency that bugs me.

But yeah, I would accept that in conformance terms.

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman The impactful difference is for braille output. Braille software uses abbreviations like "req" to reduce verbosity, and it can't do that with text descriptions, because they're not programmatically determinable.

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman @yatil It could be yeah, then it's similar to using the hand cursor for buttons -- given that there's a wide variety in real-world use, may as well stick to what's "correct" (ambiguity in that word notwithstanding lol)

siblingpastry,
@siblingpastry@mastodon.world avatar

@yatil @joelanman It just seems slightly odd to me, when visual labels don't match semantic descriptions (or the lack of them). Your example is clear yeah, and maybe I'm the only person who thinks it's odd :-)

joelanman, to javascript
@joelanman@hachyderm.io avatar

given delete is a keyword in JavaScript, what word do you use for a function that deletes in your own code? del, destroy, other?

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman deleteThing or remove if it wants to be a single word.

siblingpastry,
@siblingpastry@mastodon.world avatar

@joelanman nb. you can use reserved words as property names via square bracket notation. Definitely not a good idea though.

matuzo, to random
@matuzo@front-end.social avatar

Just a quick reminder that there's a scripting media feature.

@media (scripting: enabled) {  
 /* js is enabled */  
}

@media (scripting: none) {  
 /* js isn't enabled */  
}  

https://matuzo.at/blog/2023/100daysof-day106

siblingpastry,
@siblingpastry@mastodon.world avatar

@matuzo This is too new to rely on. Even Firefox, which implemented it first, has only had support for 12 months. Features younger than 2 years are not suitable for production use.

siblingpastry, to javascript
@siblingpastry@mastodon.world avatar

Here's a very-niche but then-very-useful #javascript trick I realized today -- you can create empty text-nodes to use as node references, for things like DOM insertion, range boundaries, or whatever.

I needed this to set the end of a range immediately before an element's closing tag, when references to existing child nodes might be invalidated by race conditions.

You don't even need to persist the references for removal, since a single call to context.normalize() cleans them all away.

siblingpastry,
@siblingpastry@mastodon.world avatar

@ollicle Interesting, I hadn't considered using comments. They'd have to be manually cleaned-up though. Could probably use cdata nodes as well.

What do you mean by, play alongside?

siblingpastry,
@siblingpastry@mastodon.world avatar

@ollicle Oh you were asking about dealing with sibling text nodes? Yeah, that :-) Normalizing isn't something you tend to need very often, but it's uniquely useful when you do.

That's a good point about spotting in dev tools, I guess it would depend on what you needed. If the nodes need to be around for a while, it would be more useful to be able to inspect them. My use-case is very transient, they're added and gone again in the space of a synchronous function call.

urlyman, to random
@urlyman@mastodon.social avatar

Policy stealing between Labour and the Tories seems to be more of a two-way street than it should be.

The texture of Labour’s response to the National Service thing is going to be… informative

siblingpastry,
@siblingpastry@mastodon.world avatar

@urlyman It’ll be the same principle, except that conscriptees will be made to do content moderation and social services risk assessments.

urlyman, to random
@urlyman@mastodon.social avatar

Wonder if anyone will keep track of appearances gifted by mainstream media to Farage et al during campaigning, vs visibility given to the Green Party

siblingpastry,
@siblingpastry@mastodon.world avatar

@urlyman gammontracker.co.uk is available 💡

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • thenastyranch
  • rosin
  • GTA5RPClips
  • osvaldo12
  • love
  • Youngstown
  • slotface
  • khanakhh
  • everett
  • kavyap
  • mdbf
  • DreamBathrooms
  • ngwrru68w68
  • provamag3
  • magazineikmin
  • InstantRegret
  • normalnudes
  • tacticalgear
  • cubers
  • ethstaker
  • modclub
  • cisconetworking
  • Durango
  • anitta
  • Leos
  • tester
  • JUstTest
  • All magazines