@nan0web/payload-keyboard-accessibility
v0.1.4
Published
Keyboard focus and submit shortcuts for Payload CMS Admin forms.
Maintainers
Readme
@nan0web/payloadcms-keyboard-accessibility
Payload CMS Admin plugin for predictable keyboard navigation in forms and modal dialogs.
Документація
Install
pnpm add @nan0web/payloadcms-keyboard-accessibilityConfiguration
import { buildConfig } from 'payload'
import { payloadKeyboardFocus } from '@nan0web/payloadcms-keyboard-accessibility'
export default buildConfig({
plugins: [payloadKeyboardFocus()],
})Options allow customizing field, submit, scope, and opt-out selectors:
payloadKeyboardFocus({
fieldSelector: 'input, textarea, select, [contenteditable="true"]',
submitSelector: 'button[type="submit"], button',
scopeSelector: 'form, [role="dialog"]',
optOutAttribute: 'data-keyboard-focus-ignore',
})Keyboard behavior
- Ordinary
Enteris not intercepted. Cmd+Enteron macOS orCtrl+Enteron Windows/Linux triggers the primary submit action in the current form or dialog.- The shortcut works from textareas and rich-text/contenteditable fields.
- Focus is limited to the current form or dialog scope.
Manual verification
In a Payload application:
- Open
/admin. - Navigate to a collection with a form.
- Confirm the first visible and enabled field receives focus.
- Change a value and press
Cmd+Enteron macOS orCtrl+Enteron Windows/Linux. - Open a modal relation/upload dialog and repeat the focus and submit check.
- In a
textareaor rich-text editor, confirmCmd/Ctrl+Entersubmits while ordinaryEnterdoes not.
Testing
npm run release:spec
npm test
npm run test:e2e -- --grep keyboard-focusUnit/contract and Playwright E2E tests run independently.
Out of scope
This plugin is not intended for:
- replacing Payload Admin UI or customizing its styles;
- automatic Tab order changes;
- submitting via ordinary
Enter; - submitting via ordinary
Enterinsidetextareaor rich-text/editor; - modifying
payload-self-storage.
License
ISC
