MemberJunction / MemberJunction/MJ
Sibling controls still have no accessible-name inputs (mj-combobox, mj-switch, mj-numeric-input, mj-datepicker, mj-page-search) + decide on the dev-mode unnamed warning
- Dominant language
- TSQL
- Stars
- 29
- Forks
- 6
- Avg merge
- 1d 8h
- Merged PRs (30d)
- 308
Description
Follow-up from #3863, which added `AriaLabel` / `AriaLabelledBy` / `AriaDescribedBy` / `InputId` to `mj-dropdown`.
Several sibling controls in `@memberjunction/ng-ui-components` ship with **no accessible-name input at all**. Enumerating them in one place so each does not get its own independently-invented API later — the naming shape `mj-dropdown` now uses should be the template.
## Highest priority
**`mj-combobox`** (7 consumer files) — shares the same `role="combobox"` markup as `mj-dropdown` and gained none of the naming inputs. Its toggle button also has **no `aria-label` at all**, so it announces as an unnamed button.
## Also missing a naming input
- `mj-switch`
- `mj-numeric-input`
- `mj-datepicker`
- `mj-page-search`
## Suggested shape
Match `mj-dropdown` exactly: four optional inputs, absent-beats-empty (never render `aria-label=""`, which overrides every other naming source with an explicitly empty name), applied to the popup as well as the trigger where there is one. Where a control has a secondary input (a filter box, a toggle), name it from the same source rather than leaving a second unnamed control — see the `aria-labelledby` id-list approach `mj-dropdown` uses so the name composes with a visible label's own text.
## Prevention
#3860 also suggested a **dev-mode warning when a control renders with no accessible name** — "the defect is silent otherwise, which is why it survived this long". #3863 neither implemented nor declined it, so it needs a recorded decision. Without some feedback loop, every new dropdown or combobox added tomorrow ships unnamed and silent again, and this sweep repeats.
Contributor guide
Research direction
Start with the mj-dropdown accessibility-input changes from #3863, then inspect mj-combobox, mj-switch, mj-numeric-input, mj-datepicker, and mj-page-search in @memberjunction/ng-ui-components. Determine how the four optional naming inputs and secondary-control naming should apply, and record a decision on the dev-mode unnamed warning. Done means the controls have consistent accessible-name behavior and the prevention decision is documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- angular
- Domain
- accessibility, frontend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100