
Security News
Axios Maintainer Confirms Social Engineering Attack Behind npm Compromise
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.
@yankovsky/final-form-focus
Advanced tools
Decorator that will attempt to apply focus to the first field with an error upon an attempted form submission in 🏁 Final Form
Decorator for 🏁 Final Form that will attempt to apply focus to the first field with an error upon an attempted form submission.
npm install --save final-form final-form-focus
or
yarn add final-form final-form-focus
import { createForm } from 'final-form'
import createDecorator from 'final-form-focus'
// Create Form
const form = createForm({ onSubmit })
// Create Decorator
const decorator = createDecorator()
// Decorate form
const undecorate = decorator(form)
// Use form as normal
import React from 'react'
import { Form, Field } from 'react-final-form'
import createDecorator from 'final-form-focus'
const focusOnErrors = createDecorator()
...
<Form
onSubmit={submit}
decorators={[ focusOnErrors ]} // <--------- 😎
validate={validate}
render={({ handleSubmit }) =>
<form onSubmit={handleSubmit}>
... inputs here ...
</form>
}
/>
Demonstrates how 🏁 Final Form Focus 🧐 works with 🏁 React Final Form.
createDecorator: (getInputs?: GetInputs, findInput?: FindInput) => DecoratorA function that takes an optional function to collect a list of focusable inputs on the page and provides a 🏁 Final Form Decorator that will focus on the top-most input on the page with an error when a form submission fails. If no getInputs parameter is provided, it will use a generic one that will return all inputs that appear in document.forms. If no findInput parameter is provided, it will use a generic one that matches the name attribute of the focusable input with the path in the error object.
getFormInputs: (formName: string) => GetInputsA GetInputs generator that will narrow the list of inputs down to those contained in the named form, i.e. document.forms[formName].
FocusableInput: { name: string, focus: () => void }A light abstraction of any input that has a name property and upon which focus() may be called.
GetInputs: () => FocusableInput[]A function that collects a list of focusable inputs that exist on the page.
FindInput: (FocusableInput[], {}) => ?FocusableInputA function that returns the first element in a list of focusable inputs that has an error
FAQs
Decorator that will attempt to apply focus to the first field with an error upon an attempted form submission in 🏁 Final Form
We found that @yankovsky/final-form-focus demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
Axios compromise traced to social engineering, showing how attacks on maintainers can bypass controls and expose the broader software supply chain.

Security News
Node.js has paused its bug bounty program after funding ended, removing payouts for vulnerability reports but keeping its security process unchanged.

Security News
The Axios compromise shows how time-dependent dependency resolution makes exposure harder to detect and contain.