This repository is now considered legacy and no longer supported. Please take a look at our recent repositories and help documentation at the following links.
- https://help.form.io
- https://github.com/formio/formio.js
- https://github.com/formio/formio
- https://github.com/formio/react
- https://github.com/formio/angular
- https://github.com/formio/vue
This is a JSON Form Renderer and Builder for the Aurelia Framework
To install this within your application, type the following.
npm install --save aurelia-formio
Now, within your application configuration, register this plugin as follows.
export function configure(aurelia: Aurelia) {
aurelia.use
.standardConfiguration()
.plugin(PLATFORM.moduleName('aurelia-formio'));
To embed the Form renderer within your application, you need to use the following component.
<formio></formio>
There are several parameters that can be passed to this component which are as follows.
- src - This is the Form.io Form URL
- form - The JSON schema of the form you wish to render.
- submission - The submission object to populate the form with.
- options - JSON options to pass to the renderer.
To render a Form.io form, you can pass the URL of that form to the form renderer like the following.
<formio src="https://examples.form.io/example"></formio>
To render a JSON form, you can create a JSON form object within your ModelView class and then bind it to the form parameter as follows.
app.ts
export class App {
private form: any = {
components: [
{
type: 'textfield',
input: true,
key: 'firstName',
label: 'First Name'
},
{
type: 'textfield',
input: true,
key: 'lastName',
label: 'Last Name'
}
]
};
}
app.html
<template>
<formio form.bind="form"></formio>
</template>
You can also set the submission of the form that is filled out using the following.
app.ts
export class App {
private submission: any = {
data: {
firstName: 'Joe',
lastName: 'Smith'
}
};
}
app.html
<formio src="https://examples.form.io/example" submission.bind="submission"></formio>
There are a number of options available to the Form.io renderer that can also be passed to this renderer.
app.ts
export class App {
private submission: any = {
data: {
firstName: 'Joe',
lastName: 'Smith'
}
};
private formOptions: any = {
readOnly: true
};
}
app.html
<formio src="https://examples.form.io/example" submission.bind="submission" options.bind="formOptions"></formio>
There are a number of events that also get fired within the renderer.
- change - Fired when the submission changes within the form.
- formLoad - Fired after the form is done loading.
- render - Fired after the form is done rendering.
- error - Fired when a submission error occurs.
- submit - Fired after a submit has been performed to the server.
You can register for events within this application as follows.
app.ts
export class App {
private submission: any = {
data: {
firstName: 'Joe',
lastName: 'Smith'
}
};
onSubmissionChange(changed: CustomEvent) {
console.log(changed);
}
}
app.html
<formio src="https://examples.form.io/example" submission.bind="submission" change.delegate="onSubmissionChange($event)"></formio>
This library also provides a robust Form Builder interface with the following component.
<form-builder form.bind="myForm"></form-builder>
The following options are provided to the form builder.
- form - The form JSON to provide as a default to the builder.
- options - The form builder options to provide to the builder.
There are also a number of events that get fired for the form builder.
- change - Triggered everytime the form schema changes in the builder.
Here is an example application that listens to the change events from the form builder as well as provides a default form.
app.ts
export class App {
private form: any = {
components: [
{
type: 'textfield',
input: true,
label: 'First Name',
key: 'firstName'
},
{
type: 'textfield',
input: true,
label: 'Last Name',
key: 'lastName'
}
]
};
onFormChanged(changed: CustomEvent) {
console.log(changed);
}
}
app.html
<form-builder form.bind="form" change.delegate="onFormChanged($event)"></form-builder>
For a working example application, take a look at the example folder found within this repository.