rhfa-blueprint v1.2.5
rhfa-blueprint
This library allows your React application to automatically generate forms using ReactHookForm that are redered by Blueprint. The form and validations are generated following a schema inspired by SimpleSchema.
1.2.0 Update
Selects are now blueprint Select. That means you need the addon. Just add @blueprintjs/select to your project.
$ npm install @blueprintjs/select --saveYou can use HTMLSelect with htmlSelect field schema's type.
Installation
$ npm install react-hook-form rhfa-blueprint @blueprintjs/core @blueprintjs/icons @blueprintjs/select --saveUsage
Just like react-hook-form-auto except you import rhfa-blueprint:
import { createSchema, Autoform } from 'rhfa-blueprint'
export const client = createSchema('client', {
name: {
type: 'string',
required: true,
max: 32
},
age: {
type: 'number'
}
})
const MyForm = ({ onSubmit }) =>
<Autoform
schema={client}
onSubmit={onSubmit}
/>Specific schema attributes for Blueprint
type = 'range'
Appart from min and max, you should setup step and labelStep:
something: {
type: 'range',
min: 10,
max: 90,
step: 5,
labelStep: 20,
defaultValue: 50
}Helper text
You can specify helperText in the schema and it will be printed as Blueprint's helperText.
import { createSchema } from 'rhfa-blueprint'
const smt = createSchema('something', {
name: {
type: 'string',
helperText: tr('models.name.helper')
}
})You can set the text directly too, without using tr().
Select
There are additional props for the field schema:
import { createSchema } from 'rhfa-blueprint'
const selectable = createSchema('selectable', {
name: {
type: 'select',
options: [
{ value: 'a', label: 'A', icon: 'build' },
{ value: 'b', label: 'B', icon: 'circle' },
{ value: 'c', label: 'C', icon: 'code' },
{ value: 'd', label: 'D', icon: 'cut' }
],
addDefault: false,
addClear: true,
clearLabel: tr('some.label.that.says.clear'),
clearIcon: 'clean',
showValues: true,
multiselect: true
}
})You can add icons to the options if you are specifying them in object format like in this example.
addDefaultis not needed here because button already prints the placeholder.addClearwill add the clear option. Only for single value selects.clearLabelwill force a label for the "clear selection" option (addClear)showValueswill show values as option label (grayed)multiselectwill return an array with the selected values. Icons are ignored.iconicon for the left side of the button.
Any other
This is just a reminder that you can set any property to wrapper or input:
heads: {
type: 'number',
addInputProps: { leftIcon: 'person' },
addWrapperProps: { labelInfo: '(batteries included)' }
},Exported wrappers
GroupAdaptor
Let's you wrap your input as rhfa-blueprint would. Signature is in source code
InputGroupAdaptor
Changes usual rhfa-blueprint props to those of InputGroup from blueprintjs.