StackExchange / StackExchange/Stacks-Editor
Support non-focusable disabled state.
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 437
- Forks
- 61
- Avg merge
- 16h 2m
- Merged PRs (30d)
- 8
Description
Is your feature request related to a problem? Please describe.
I have the editor in a form which manages progression such that the user cannot skip fields - this is done mostly by disabling future inputs. With native input elements, we have a distinction between readonly and disabled wherein the latter prevents focus events from either a mouse or keyboard. With the Stacks-Editor, we have a readonly property which can be set using disable()/enable(). The mix in language is not only confusing but for my purposes above, readonly alone is insufficient to stop users from navigating through the editor's internal elements (i.e. the toolbar items) via TAB keyboard navigation (despite stopping focus via mouse).
Describe the solution you'd like
I would like to have a disabled state which holds similar behavior to a regular ol' <input disabled ... /> and is separate from the readonly state. Specifically, if disabled, the editor should not be focusable and when navigating through a parent form via TAB, the editor should be skipped.
I'd expect navigation behavior similar to native HTML inputs like attempting to tab through the following:
<input type="textarea" placeholder="normal">
<input type="textarea" readonly placeholder="readonly">
<input type="textarea" disabled placeholder="disabled">
<input type="textarea" placeholder="normal">
Proposal
StacksEditor {
...
disabled: boolean = false,
disable() { disabled = true },
enable() { disabled = false },
...
}
readonly should change to have its own modifiers to avoid confusion.
Describe alternatives you've considered
Without this functionality inside of Stacks-Editor, I can add event listeners and hijack TAB-key events but that quickly snowballs to handling the editor in different states, moving between interactive elements inside of the editor like the toolbar and content, and then doing it all over again for SHIFT + TAB to go in reverse.
Additional context
Could be a breaking change in that ideally pre-existing disable()/enable() would be used to modify the disable state rather than readonly.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the StacksEditor disable()/enable() entry points and inspect how the existing readonly state affects focus and keyboard navigation. Verify behavior against the native input example; done means a disabled editor is skipped by mouse and TAB focus while readonly remains a separate state.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- frontend
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100