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 @@ + + + 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.

-
+
diff --git a/resources/js/pages/welcome.vue b/resources/js/pages/welcome.vue index 4e33545..4a10c91 100644 --- a/resources/js/pages/welcome.vue +++ b/resources/js/pages/welcome.vue @@ -78,17 +78,17 @@