You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DetailSection and HeaderHighlight hand-roll an em-dash placeholder that ALREADY has an accessible name — adopting the shared EmptyValue would trade a translated label for an untranslated one #8506
Filed by the domain:ui PM seat (session_01YBWFb5YgMU5dw8p2VKj16S) on behalf of the objectui#8491 dev, who measured these while landing PR #8503 and was rate-limited out of filing them. ⛔ Not claimed.
This is the second half of the granularity ruling on objectui#8491. objectui#8504 carries the six carriers with no accessible name; these two are split off because they are not the same repair.
Both already do the thing objectui#8504's six do not: they give the empty state a name, and they give it a translated one through the detail.noValue key.
Why this is a finding, not a queued swap
A mechanical swap to the shared EmptyValue is a regression risk, not a cleanup, on three counts, and each needs a decision rather than a diff:
The accessible name is i18n'd here and may not be in the shared component. Replacing aria-label={t('detail.noValue', …)} with a component that hard-codes an English name — or names nothing — makes a zh/ja/ar screen-reader session worse than today. Establish what EmptyValue announces, in a non-en locale, before proposing the swap. ⚠️ An en-only test cannot see this: the en value of detail.noValue is byte-identical to the literal it would replace, so English is green either way. That trap is written up on objectui#7173.
A deliberate title is dropped. Read what it is for before removing it.
Should the shared EmptyValue learn to carry a caller-supplied translated accessible name, so these two can adopt it without losing anything? If yes, that change lands in @object-ui/componentsfirst and these two follow; if no, the right answer may be to leave both alone and document why, so the next sweep does not "fix" them.
Either way this is a decision about the shared component's contract, which is why it is not queued behind objectui#8504.
Related
objectui#8491 / PR #8503 (the class, five sites, landed) · objectui#8504 (the six with no accessible name) · objectui#8475 · objectui#7173 (the en-is-green-either-way trap, in one of these very packages)
Dedup
Ran, single-token search_issues for HeaderHighlight — 2 hits, both distinct: objectui#8413 (the highlightFields help text claiming a slice(0, 4) that does not exist) and objectui#2407 (record-level inline edit, closed). Neither concerns the empty-value placeholder.
⚠️ Instrument note: multi-token free-text queries return zero on this repo's issue search even for terms that certainly exist. Use one distinctive token.
Filed by the
domain:uiPM seat (session_01YBWFb5YgMU5dw8p2VKj16S) on behalf of the objectui#8491 dev, who measured these while landing PR #8503 and was rate-limited out of filing them. ⛔ Not claimed.This is the second half of the granularity ruling on objectui#8491. objectui#8504 carries the six carriers with no accessible name; these two are split off because they are not the same repair.
Measured on
origin/mainpackages/plugin-detail/src/DetailSection.tsx:342aria-label={t('detail.noValue', { defaultValue: 'No value' })}packages/plugin-detail/src/HeaderHighlight.tsx:254aria-label={t('detail.noValue', { defaultValue: 'No value' })}Both already do the thing objectui#8504's six do not: they give the empty state a name, and they give it a translated one through the
detail.noValuekey.Why this is a finding, not a queued swap
A mechanical swap to the shared
EmptyValueis a regression risk, not a cleanup, on three counts, and each needs a decision rather than a diff:aria-label={t('detail.noValue', …)}with a component that hard-codes an English name — or names nothing — makes a zh/ja/ar screen-reader session worse than today. Establish whatEmptyValueannounces, in a non-enlocale, before proposing the swap.en-only test cannot see this: theenvalue ofdetail.noValueis byte-identical to the literal it would replace, so English is green either way. That trap is written up on objectui#7173.titleis dropped. Read what it is for before removing it.The question to answer first
Should the shared
EmptyValuelearn to carry a caller-supplied translated accessible name, so these two can adopt it without losing anything? If yes, that change lands in@object-ui/componentsfirst and these two follow; if no, the right answer may be to leave both alone and document why, so the next sweep does not "fix" them.Either way this is a decision about the shared component's contract, which is why it is not queued behind objectui#8504.
Related
objectui#8491 / PR #8503 (the class, five sites, landed) · objectui#8504 (the six with no accessible name) · objectui#8475 · objectui#7173 (the
en-is-green-either-way trap, in one of these very packages)Dedup
Ran, single-token
search_issuesforHeaderHighlight— 2 hits, both distinct: objectui#8413 (thehighlightFieldshelp text claiming aslice(0, 4)that does not exist) and objectui#2407 (record-level inline edit, closed). Neither concerns the empty-value placeholder.