SlidePub
Home
Categories
Login
Register
Home
Technology
The new Volto Form Block, Plone Conference 2025
The new Volto Form Block, Plone Conference 2025
robgietema
7 views
18 slides
Oct 17, 2025
Slide
1
of 18
Previous
Next
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
About This Presentation
Talk about the new Volto Form Block.
Size:
865.4 KB
Language:
en
Added:
Oct 17, 2025
Slides:
18 pages
Slide Content
Slide 1
NEW VOLTO FORM BLOCK
Yet another form library?
Plone Conference 2025, Jyväskylä
- Rob Gietema@robgietema
Slide 2
WHY NEW VOLTO FORM BLOCK?
volto-form-block uses custom widgets
require greater customizibility
Slide 3
STEPS TAKEN
Reuse the backend with some minor changes
Use the schema widget
Extend the schema widget / form component
Slide 4
EXAMPLE
Slide 5
FILTER FACTORIES
filterFactory: [
'label_text_field',
'label_choice_field',
'label_boolean_field',
'label_date_field',
'label_datetime_field',
'File Upload',
'label_email',
'radio_group',
'checkbox_group',
'hidden',
'static_text',
'number',
'textarea',
'time',
Slide 6
ADDITIONAL FACTORIES
additionalFactory: [
{ value: 'textarea', label: 'Textarea' },
{ value: 'radio_group', label: 'Radio Group' },
{ value: 'checkbox_group', label: 'Checkbox Group' },
{ value: 'hidden', label: 'Hidden' },
{ value: 'static_text', label: 'Static Text' },
{ value: 'number', label: 'Number' },
{ value: 'time', label: 'Time' },
],
Slide 7
FILTER FIELDS TO BE SEND
filterFactorySend: [
...config.blocks.blocksConfig.schemaForm.filterFactorySend,
'dataprotectionInfo',
],
Slide 8
SIDEBAR
Slide 9
CONDITIONAL SIDEBAR FIELDS
export const schemaFormBlockSchema = ({ intl, ...props }) => {
let data = props.data || props.formData;
let conditional_required = [];
if (data?.store !== true && data?.send !== true) {
conditional_required.push('store');
conditional_required.push('send');
}
if (data?.send_confirmation) {
conditional_required.push('confirmation_recipients');
}
return {
title: intl.formatMessage(messages.form),
fieldsets: [
{
Slide 10
PROVIDED WRAPPERS WITH
LOGIC
widgets: {
...config.widgets,
widget: {
...config.widgets.widget,
textarea: TextareaWrapper,
file: FileWrapper,
date: DatetimeWrapper,
time: TimeWrapper,
datetime: DatetimeWrapper,
email: EmailWrapper,
radio_group: RadioGroupWrapper,
checkbox_group: CheckboxGroupWrapper,
hidden: HiddenWrapper,
},
choices:SelectWrapper,
Slide 11
USE "DUMB" CUSTOM WIDGETS
innerWidgets: {
text: TextField,
textarea: TextAreaField,
file: FileSelector,
date: DatePicker,
datetime: DatePicker,
time: TimeField,
email: TextField,
radioGroup: RadioGroup,
radioGroupOption: Radio,
number: TextField,
checkbox: CheckboxField,
checkboxGroup: CheckboxGroup,
checkboxGroupOption: Checkbox,
select:Select,
Slide 12
ADD FIELD SCHEMA
Slide 13
REGISTER FIELD SCHEMA
config.registerUtility({
name: 'Rich Text',
type: 'fieldFactoryProperties',
method: (intl) => ({
maxLength: {
type: 'integer',
title: intl.formatMessage(messages.maxLength),
},
default: {
title: intl.formatMessage(messages.defaultValue),
widget: 'richtext',
type: 'string',
},
}),
});
Slide 14
INITIAL DATA
config.registerUtility({
name: 'country',
type: 'fieldFactoryInitialData',
method: (intl) => ({
type: 'string',
factory: 'country',
choices: countries[intl.locale].map((country) => [country,
id: 'country',
}),
});
Slide 15
CUSTOM BUTTONS
const ButtonWrapper = ({ primary, secondary, type, title, onCl
return (
<Button
type={type === 'submit' ? 'submit' : 'button'}
styles={secondary ? 'btn btn-secondary' : 'btn btn-prima
onPress={onClick || (() => {})}
label={title}
/>
);
};
Slide 16
CUSTOM FORM COMPONENT
component: FormComponent,
Slide 17
THAT'S ALL FOLKS!
Talk to me about Nick!
slideshare.net/robgietema/volto-form-block
Tags
plone
volto
form
widgets
Categories
Technology
Download
Download Slideshow
Get the original presentation file
Quick Actions
Embed
Share
Save
Print
Full
Report
Statistics
Views
7
Slides
18
Age
49 days
Related Slideshows
11
8-top-ai-courses-for-customer-support-representatives-in-2025.pptx
JeroenErne2
51 views
10
7-essential-ai-courses-for-call-center-supervisors-in-2025.pptx
JeroenErne2
49 views
13
25-essential-ai-courses-for-user-support-specialists-in-2025.pptx
JeroenErne2
39 views
11
8-essential-ai-courses-for-insurance-customer-service-representatives-in-2025.pptx
JeroenErne2
38 views
21
Know for Certain
DaveSinNM
24 views
17
PPT OPD LES 3ertt4t4tqqqe23e3e3rq2qq232.pptx
novasedanayoga46
27 views
View More in This Category
Embed Slideshow
Dimensions
Width (px)
Height (px)
Start Page
Which slide to start from (1-18)
Options
Auto-play slides
Show controls
Embed Code
Copy Code
Share Slideshow
Share on Social Media
Share on Facebook
Share on Twitter
Share on LinkedIn
Share via Email
Or copy link
Copy
Report Content
Reason for reporting
*
Select a reason...
Inappropriate content
Copyright violation
Spam or misleading
Offensive or hateful
Privacy violation
Other
Slide number
Leave blank if it applies to the entire slideshow
Additional details
*
Help us understand the problem better