Vue.js Conversational Form
Turning web forms into conversations using Vue.js.
Install
npm i --save vue-conversational-form
Usage
<template>
<ConversationalForm @submit="submit">
<fieldset>
<label for="name">What's your name?</label>
<input required data-question="Hi there! What's your name? " type="text" name="name" id="name">
</fieldset>
<fieldset>
<label for="thats-all">Are you ready to submit the form?</label>
<button data-question="Are you ready to submit the form?" data-success="Submited! Yay! ?" name="submit" type="submit" data-cancel="Nope">Yup</button>
</fieldset>
</ConversationalForm>
</template>
<script>
import ConversationalForm from 'vue-conversational-form'
export default {
name: 'App',
components: {
ConversationalForm
},
methods: {
submit (o) {
console.log('Submit:')
console.log(o) // get form data
}
}
}
</script>
Documentation
The content of the question should be defined in the data-question
attribute.
Multple question options will be seperated by |
. Use inserted values using {value-name}
.
In submit buttons, use data-success
for defining success message.
In submit/reset buttons, use data-cancel
for defining the cancel button's text.
Listen in the parent to submit
event in order to get the submitted data (as an object).
Define a text/email/password input:
<fieldset>
<label for="name">What's your name?</label>
<input required data-question="Hi there! What's your name? " type="text" name="name" id="name">
</fieldset>
Define a radio buttons' group:
<fieldset>
<label for="name">Gender</label><br />
<input type="radio" data-question="What's your gender?" name="gender" value="male" data-text="Male" /> Male<br>
<input type="radio" name="gender" value="female" data-text="Female" /> Female<br>
<input type="radio" name="gender" value="other" data-text="Other" /> Other
</fieldset>
Define a select group:
<fieldset>
<label for="opinion">Will conversational interfaces be everywhere?</label>
<select data-question="Do you think conversational forms will replace web forms in the future?" name="opinion" id="opinion">
<option></option>
<option>Definitely</option>
<option>Maybe</option>
<option>No</option>
</select>
</fieldset>
Define a submit button:
<fieldset>
<label for="thats-all">Are you ready to submit the form?</label>
<button data-question="Are you ready to submit the form?" data-success="Submited! Yay! ?" name="submit" type="submit" data-cancel="Nope">Yup</button>
</fieldset>
Define a reset button:
<fieldset>
<label for="thats-all">Want to start over?</label>
<button data-question="Want to start over?" name="reset" type="reset" data-cancel="No">Yes, let's go again</button>
</fieldset>
Use inserted values as a part of a question:
<fieldset>
<label for="company">Company</label>
<input data-question="{occupation}, nice! Which company are you with?" type="text" name="company" id="company">
</fieldset>