Create conversational conditional-logic forms with Vue.js.
Requirements:
After checking the prerequisites, follow these simple steps to install and use Vue Form:
# clone the repo
$ git clone https://github.com/ditdot-dev/vue-flow-form.git myproject
# go into app's directory and install dependencies:
$ cd myproject
If you use npm:
$ npm install
# serve with hot reload at localhost:8080 by default.
$ npm run serve
# build for production
$ npm run build
If you use yarn:
$ yarn install
# serve with hot reload at localhost:8080 by default.
$ yarn serve
# build for production
$ yarn build
Made with Vue.js
If you don't already have an existing Vue project, the easiest way to create one is to use Vue CLI:
$ npm install -g @vue/cli
# OR
$ yarn global add @vue/cli
And then create a project (refer to Vue CLI documentation and issue tracker for potential problems on Windows):
$ vue create my-project
$ cd my-project
To add Vue Flow Form as a dependency to your Vue project, use the following:
$ npm install @ditdot-dev/vue-flow-form --save
And then in your App.vue file:
<template>
<flow-form v-bind:questions="questions" v-bind:language="language" />
</template>
<script>
// Import necessary components and classes
import FlowForm, { QuestionModel, QuestionType, ChoiceOption, LanguageModel } from '@ditdot-dev/vue-flow-form'
export default {
name: 'example',
components: {
FlowForm
},
data() {
return {
language: new LanguageModel({
// Your language definitions here (optional).
// You can leave out this prop if you want to use the default definitions.
}),
questions: [
// QuestionModel array
new QuestionModel({
title: 'Question',
type: QuestionType.MultipleChoice,
options: [
new ChoiceOption({
label: 'Answer'
})
]
})
]
}
}
}
</script>
<style>
/* Import Vue Flow Form base CSS */
@import '~@ditdot-dev/vue-flow-form/dist/vue-flow-form.css';
/* Import one of the Vue Flow Form CSS themes (optional) */
@import '~@ditdot-dev/vue-flow-form/dist/vue-flow-form.theme-minimal.css';
/* @import '~@ditdot-dev/vue-flow-form/dist/vue-flow-form.theme-green.css'; */
/* @import '~@ditdot-dev/vue-flow-form/dist/vue-flow-form.theme-purple.css'; */
</style>
HTML:
<html>
<head>
<!-- Requires Vue version 2.6.x -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.6.11/vue.min.js"></script>
<!-- Flow Form -->
<script src="https://unpkg.com/@ditdot-dev/vue-flow-form@1.1.6"></script>
<!-- Flow Form base CSS -->
<link rel="stylesheet" href="https://unpkg.com/@ditdot-dev/vue-flow-form@1.1.6/dist/vue-flow-form.min.css">
<!-- Optional theme.css -->
<link rel="stylesheet" href="https://unpkg.com/@ditdot-dev/vue-flow-form@1.1.6/dist/vue-flow-form.theme-minimal.min.css">
<!-- Optional font -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;900&display=swap">
</head>
<body>
<div id="app">
<flow-form v-bind:questions="questions" v-bind:language="language" />
</div>
<script src="app.js"></script>
</body>
</html>
JavaScript (content of app.js):
var app = new Vue({
el: '#app',
data: function() {
return {
language: new FlowForm.LanguageModel({
// Your language definitions here (optional).
// You can leave out this prop if you want to use the default definitions.
}),
questions: [
new FlowForm.QuestionModel({
title: 'Question',
type: FlowForm.QuestionType.MultipleChoice,
options: [
new FlowForm.ChoiceOption({
label: 'Answer'
})
]
})
]
}
}
});
Changes for each release are documented in the release notes.
MIT license.