diff --git a/config/links.php b/config/links.php
index e2f0194..3cec7c0 100644
--- a/config/links.php
+++ b/config/links.php
@@ -6,7 +6,7 @@ return [
'changelog_url' => 'https://opnform.canny.io/changelog',
'github_url' => 'https://github.com/JhumanJ/OpnForm',
'github_forum_url' => 'https://github.com/JhumanJ/OpnForm/discussions',
- 'facebook_group' => 'www.facebook.com/groups/opnform/',
+ 'facebook_group' => 'https://www.facebook.com/groups/opnform/',
'twitter' => 'https://twitter.com/OpnForm',
'zapier_integration' => 'https://zapier.com/developer/public-invite/146950/58db583730cc46b821614468d94c35de/',
'book_onboarding' => 'https://zcal.co/i/YQVGEULQ',
diff --git a/resources/js/components/open/forms/fields/FormFieldOptionsModal.vue b/resources/js/components/open/forms/fields/FormFieldOptionsModal.vue
index 6c9821d..4ac9bd5 100644
--- a/resources/js/components/open/forms/fields/FormFieldOptionsModal.vue
+++ b/resources/js/components/open/forms/fields/FormFieldOptionsModal.vue
@@ -5,24 +5,31 @@
Configure "{{ field.name }}" block
-
+
-
-
+
+
- Remove
-
+ Remove
+
-
-
- Duplicate
-
+
+
+ Duplicate
+
+
@@ -72,13 +79,13 @@
File uploads
Allow multiple files
@@ -86,7 +93,7 @@
Number Options
-
+
Date Options
-
+
Simple date input
-
@@ -198,7 +206,7 @@
Select Options
-
+
Advanced options for your select/multiselect fields.
@@ -225,7 +233,7 @@
Customization
-
+
@@ -303,13 +311,14 @@
/>
-
@@ -319,7 +328,7 @@
Advanced Options
-
+
-
+
@@ -362,11 +371,13 @@
import timezones from '../../../../../data/timezones.json'
import ProTag from "../../../common/ProTag"
+
const FormBlockLogicEditor = () => import('../components/form-logic-components/FormBlockLogicEditor')
+import ChangeFieldType from "./components/ChangeFieldType"
export default {
name: 'FormFieldOptionsModal',
- components: { ProTag, FormBlockLogicEditor },
+ components: {ProTag, FormBlockLogicEditor, ChangeFieldType},
props: {
field: {
type: Object,
@@ -381,17 +392,17 @@ export default {
required: false
}
},
- data () {
+ data() {
return {
typesWithoutPlaceholder: ['date', 'checkbox', 'files']
}
},
computed: {
- hasPlaceholder () {
+ hasPlaceholder() {
return !this.typesWithoutPlaceholder.includes(this.field.type)
},
- prefillSelectsOptions () {
+ prefillSelectsOptions() {
if (!['select', 'multi_select'].includes(this.field.type)) return {}
return this.field[this.field.type].options.map(option => {
@@ -401,7 +412,7 @@ export default {
}
})
},
- timezonesOptions () {
+ timezonesOptions() {
if (this.field.type !== 'date') return []
return timezones.map((timezone) => {
return {
@@ -410,18 +421,18 @@ export default {
}
})
},
- displayBasedOnAdvanced () {
+ displayBasedOnAdvanced() {
if (this.field.generates_uuid || this.field.generates_auto_increment_id) {
return false
}
return true
},
- optionsText(){
+ optionsText() {
return this.field[this.field.type].options.map(option => {
return option.name
}).join("\n")
},
- dateFormatOptions () {
+ dateFormatOptions() {
if (this.field.type !== 'date') return []
let formats = ['DD/MM/YYYY', 'MM/DD/YYYY', 'YYYY/MM/DD']
return formats.map((format) => {
@@ -435,34 +446,37 @@ export default {
watch: {},
- mounted () {
- if(['text','number','url','email','phone_number'].includes(this.field.type) && !this.field.max_char_limit){
+ mounted() {
+ if (['text', 'number', 'url', 'email', 'phone_number'].includes(this.field.type) && !this.field.max_char_limit) {
this.field.max_char_limit = 2000
}
- if(this.field.type == 'date' && !this.field.simple_date_input_format){
+ if (this.field.type == 'date' && !this.field.simple_date_input_format) {
this.field.simple_date_input_format = this.dateFormatOptions[0]['value']
}
},
methods: {
- close () {
+ onChangeType(newType) {
+ this.$set(this.field, 'type', newType)
+ },
+ close() {
this.$emit('close')
},
- removeBlock () {
+ removeBlock() {
this.close()
this.$emit('remove-block', this.field)
},
- duplicateBlock(){
+ duplicateBlock() {
this.close()
this.$emit('duplicate-block', this.field)
},
- onFieldRequiredChange (val) {
+ onFieldRequiredChange(val) {
this.$set(this.field, 'required', val)
if (this.field.required) {
this.$set(this.field, 'hidden', false)
}
},
- onFieldHiddenChange (val) {
+ onFieldHiddenChange(val) {
this.$set(this.field, 'hidden', val)
if (this.field.hidden) {
this.$set(this.field, 'required', false)
@@ -471,7 +485,7 @@ export default {
this.$set(this.field, 'generates_auto_increment_id', false)
}
},
- onFieldDateRangeChange (val) {
+ onFieldDateRangeChange(val) {
this.$set(this.field, 'date_range', val)
if (this.field.date_range) {
this.$set(this.field, 'with_time', false)
@@ -479,7 +493,7 @@ export default {
this.$set(this.field, 'simple_date_input', false)
}
},
- onFieldWithTimeChange (val) {
+ onFieldWithTimeChange(val) {
this.$set(this.field, 'with_time', val)
this.$set(this.field, 'use_am_pm', false)
if (this.field.with_time) {
@@ -487,26 +501,26 @@ export default {
this.$set(this.field, 'simple_date_input', false)
}
},
- onFieldGenUIdChange (val) {
+ onFieldGenUIdChange(val) {
this.$set(this.field, 'generates_uuid', val)
if (this.field.generates_uuid) {
this.$set(this.field, 'generates_auto_increment_id', false)
this.$set(this.field, 'hidden', true)
}
},
- onFieldGenAutoIdChange (val) {
+ onFieldGenAutoIdChange(val) {
this.$set(this.field, 'generates_auto_increment_id', val)
if (this.field.generates_auto_increment_id) {
this.$set(this.field, 'generates_uuid', false)
this.$set(this.field, 'hidden', true)
}
},
- initRating () {
+ initRating() {
if (this.field.is_rating && !this.field.rating_max_value) {
this.$set(this.field, 'rating_max_value', 5)
}
},
- onFieldOptionsChange (val) {
+ onFieldOptionsChange(val) {
const vals = (val) ? val.trim().split("\n") : []
const tmpOpts = vals.map(name => {
return {
@@ -516,7 +530,7 @@ export default {
})
this.$set(this.field, this.field.type, {'options': tmpOpts})
},
- onFieldPrefillTodayChange (val) {
+ onFieldPrefillTodayChange(val) {
this.$set(this.field, 'prefill_today', val)
if (this.field.prefill_today) {
this.$set(this.field, 'prefill', 'Pre-filled with current date')
@@ -527,33 +541,33 @@ export default {
this.$set(this.field, 'prefill', null)
}
},
- onFieldAllowCreationChange (val) {
+ onFieldAllowCreationChange(val) {
this.$set(this.field, 'allow_creation', val)
- if(this.field.allow_creation){
+ if (this.field.allow_creation) {
this.$set(this.field, 'without_dropdown', false)
}
},
- onFieldWithoutDropdownChange (val) {
+ onFieldWithoutDropdownChange(val) {
this.$set(this.field, 'without_dropdown', val)
- if(this.field.without_dropdown){
+ if (this.field.without_dropdown) {
this.$set(this.field, 'allow_creation', false)
}
},
- onFieldDisablePastDatesChange (val) {
+ onFieldDisablePastDatesChange(val) {
this.$set(this.field, 'disable_past_dates', val)
if (this.field.disable_past_dates) {
this.$set(this.field, 'disable_future_dates', false)
this.$set(this.field, 'prefill_today', false)
}
},
- onFieldDisableFutureDatesChange (val) {
+ onFieldDisableFutureDatesChange(val) {
this.$set(this.field, 'disable_future_dates', val)
if (this.field.disable_future_dates) {
this.$set(this.field, 'disable_past_dates', false)
this.$set(this.field, 'prefill_today', false)
}
},
- onFieldSimpleDateInputChange (val) {
+ onFieldSimpleDateInputChange(val) {
this.$set(this.field, 'simple_date_input', val)
if (this.field.simple_date_input) {
this.$set(this.field, 'with_time', false)
diff --git a/resources/js/components/open/forms/fields/components/ChangeFieldType.vue b/resources/js/components/open/forms/fields/components/ChangeFieldType.vue
new file mode 100644
index 0000000..2252218
--- /dev/null
+++ b/resources/js/components/open/forms/fields/components/ChangeFieldType.vue
@@ -0,0 +1,79 @@
+
+
+
+
+
+
+ Change Field Type
+
+
+
+
+ {{ op.name }}
+
+
+
+
+
diff --git a/resources/js/components/pages/welcome/Features.vue b/resources/js/components/pages/welcome/Features.vue
index 8b5d68b..cc584dd 100644
--- a/resources/js/components/pages/welcome/Features.vue
+++ b/resources/js/components/pages/welcome/Features.vue
@@ -24,19 +24,20 @@
},
{
title: 'Share',
- description: 'Velit officia consequat duis enim velit mollit. Exercitation veniam consequat sunt nostrud amet.\n',
+ description: 'Your form has a unique link that you can share everywhere. Send the link, or even embed the form on your website.',
features: [
- 'Build a simple form in minutes.',
- 'No coding needed.'
+ 'Share the link to your form',
+ 'Embed the form on your website'
],
img: 'img/pages/welcome/step-2.jpg'
},
{
title: 'Get Results',
- description: 'Create a form in 2 minutes. More than 10 input types, images, logic and much more.',
+ description: 'Receive your form submissions. Receive notifications, send confirmations. Export submissions and check your form analytics.',
features: [
- 'Build a simple form in minutes.',
- 'No coding needed.'
+ 'Unlimited form submissions for free',
+ 'Easily export submissions as CSV',
+ 'Views & Submissions Analytics'
],
img: 'img/pages/welcome/step-3.jpg'
}
diff --git a/resources/js/components/pages/welcome/MoreFeatures.vue b/resources/js/components/pages/welcome/MoreFeatures.vue
index eeb8760..22b615e 100644
--- a/resources/js/components/pages/welcome/MoreFeatures.vue
+++ b/resources/js/components/pages/welcome/MoreFeatures.vue
@@ -6,7 +6,7 @@
OpnForm makes form building easy and comes with powerful features.
-
+