Customizing Element List
Learn how to customize the list of available elements and categories.
Available Elements
You can change the list of available elements and their order via the elements property in builder.config.js:
// builder.config.js
import { defineConfig } from '@vueform/builder'
export default defineConfig({
elements: [
'text',
'number',
'email',
'phone',
'password',
'url',
'location',
'textarea',
'editor',
'signature',
'checkbox',
'checkboxgroup',
'checkboxBlocks',
'checkboxTabs',
'radio',
'radiogroup',
'radioBlocks',
'radioTabs',
'matrix',
'table',
'toggle',
'select',
'multiselect',
'tags',
'date',
'datetime',
'time',
'dates',
'dateRange',
'slider',
'rangeSlider',
'verticalSlider',
'file',
'multifile',
'image',
'multiImage',
'gallery',
'captcha',
'hidden',
'submit',
'reset',
'primaryButton',
'secondaryButton',
'dangerButton',
'h1',
'h2',
'h3',
'h4',
'p',
'quote',
'img',
'link',
'divider',
'html',
'tabs',
'steps',
'grid',
'gridTable',
'container',
'container2',
'container3',
'container4',
'list',
'nestedList',
]
})Excluding Elements
If you want to exclude certain elements, you can use the excludeElements property:
// builder.config.js
import { defineConfig } from '@vueform/builder'
export default defineConfig({
excludeElements: [
'captcha',
'signature',
// ...
]
})Element Categories
You can customize the element categories in builder.config.js via the categories property:
// builder.config.js
import { defineConfig } from '@vueform/builder'
export default defineConfig({
// Default categories
categories: [
{
label: 'Fields',
key: 'fields',
},
{
label: 'Static',
key: 'static',
},
{
label: 'Structure',
key: 'structure',
},
],
})The key is used in element definition as category.
If you would like to change the category of elements, you have to go through each of them and re-assign their category prop.
The element types are available via the elementTypes export of @vueform/builder and can be modified via the element.types in builder.config.js:
// builder.config.js
import { defineConfig, elementTypes } from '@vueform/builder'
// Log `elementType` to see the available elements
console.log(Object.keys(elementTypes))
export default defineConfig({
categories: [
{
label: 'My category',
key: 'my_category',
},
{
label: 'My other category',
key: 'my_other_category',
},
],
element: {
types: {
text: {
...elementTypes.text,
category: 'my_category',
},
number: {
...elementTypes.number,
category: 'my_category',
},
// ...
container: {
...elementTypes.container,
category: 'my_other_category',
},
// ...and so on
}
}
})Translating Categories
Category labels can also be provided as translation tags that exist in builder locale files:
// builder.config.js
import {
defineConfig,
elementTypes,
en_US,
nl_NL,
} from '@vueform/builder'
en_US.my_category_label = 'My category'
en_US.my_other_category_label = 'My other category'
nl_NL.my_category_label = 'Mijn categorie'
nl_NL.my_other_category_label = 'Mijn andere categorie'
export default defineConfig({
categories: [
{
label: 'my_category_label',
key: 'my_category',
},
{
label: 'my_other_category_label',
key: 'my_other_category',
},
],
builderLocales: {
en_US,
nl_NL,
}
// ...
})Removing Categories
If you would like to remove all categories, you can simply pass an empty array:
// builder.config.js
import { defineConfig } from '@vueform/builder'
export default defineConfig({
categories: [],
})In this case, the category selector will disappear, and all elements will be displayed in a single list regardless of the category defined for them.
Category Search
If you want to disable the category search, you can set search: false in builder.config.js:
// builder.config.js
import { defineConfig } from '@vueform/builder'
export default defineConfig({
search: false,
})