From d9c71f5ceeceb98b495b9bd7929f429a8f9f4bab Mon Sep 17 00:00:00 2001 From: formsdev <136701234+formsdev@users.noreply.github.com> Date: Fri, 8 Sep 2023 14:04:14 +0530 Subject: [PATCH 1/9] Simple theme broken - Fixed (#193) --- resources/js/config/form-themes.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/js/config/form-themes.js b/resources/js/config/form-themes.js index 720e05e91..dab49969e 100644 --- a/resources/js/config/form-themes.js +++ b/resources/js/config/form-themes.js @@ -30,7 +30,7 @@ export const themes = { simple: { default: { label: 'text-gray-700 dark:text-gray-300 font-semibold', - input: 'border-transparent flex-1 appearance-none border border-gray-300 dark:border-gray-600 w-full py-2 px-2 bg-white text-gray-700 dark:bg-notion-dark-light dark:text-gray-300 dark:placeholder-gray-500 placeholder-gray-400 text-base focus:outline-none focus:ring-2 focus:border-transparent focus:ring-opacity-100', + input: 'flex-1 appearance-none border border-gray-300 dark:border-gray-600 w-full py-2 px-2 bg-white text-gray-700 dark:bg-notion-dark-light dark:text-gray-300 dark:placeholder-gray-500 placeholder-gray-400 text-base focus:outline-none focus:ring-2 focus:border-transparent focus:ring-opacity-100', help: 'text-gray-400 dark:text-gray-500' }, Button: { @@ -38,7 +38,7 @@ export const themes = { }, SelectInput: { label: 'text-gray-700 dark:text-gray-300 font-semibold', - input: 'relative w-full border-transparent flex-1 appearance-none border border-gray-300 dark:border-gray-600 w-full px-2 bg-white text-gray-700 placeholder-gray-400 dark:bg-notion-dark-light dark:text-gray-300 dark:placeholder-gray-600 text-base focus:outline-none focus:ring-2 focus:border-transparent', + input: 'relative w-full flex-1 appearance-none border border-gray-300 dark:border-gray-600 w-full px-2 bg-white text-gray-700 placeholder-gray-400 dark:bg-notion-dark-light dark:text-gray-300 dark:placeholder-gray-600 text-base focus:outline-none focus:ring-2 focus:border-transparent', help: 'text-gray-400 dark:text-gray-500' }, CodeInput: { From d93eca7410fb287a294ec1fd77608f602ec9a8f3 Mon Sep 17 00:00:00 2001 From: formsdev <136701234+formsdev@users.noreply.github.com> Date: Fri, 8 Sep 2023 16:19:13 +0530 Subject: [PATCH 2/9] Edit field options as sidebar (#190) * Edit field options as sidebar * WIP * Finish dynamic positioning of sidebar * Open block on addition, fix pro tag, add visual clue field open * fix typo * remove extra code * remove extra code --------- Co-authored-by: Julien Nahum --- resources/js/components/common/Button.vue | 2 +- resources/js/components/common/Dropdown.vue | 29 +- resources/js/components/common/ProTag.vue | 6 +- .../components/open/forms/OpenFormField.vue | 18 +- .../open/forms/components/FormEditor.vue | 8 +- .../forms/components/FormFieldsEditor.vue | 48 +- .../form-components/FormEditorPreview.vue | 45 +- .../FormBlockLogicEditor.vue | 31 +- .../forms/fields/FormFieldEditSidebar.vue | 157 ++++++ .../forms/fields/components/BlockOptions.vue | 160 ++++++ .../fields/components/ChangeFieldType.vue | 11 +- .../forms/fields/components/FieldOptions.vue | 518 ++++++++++++++++++ .../js/store/modules/open/working_form.js | 13 +- tailwind.config.js | 5 + 14 files changed, 945 insertions(+), 106 deletions(-) create mode 100644 resources/js/components/open/forms/fields/FormFieldEditSidebar.vue create mode 100644 resources/js/components/open/forms/fields/components/BlockOptions.vue create mode 100644 resources/js/components/open/forms/fields/components/FieldOptions.vue diff --git a/resources/js/components/common/Button.vue b/resources/js/components/common/Button.vue index 073885169..f393d759c 100644 --- a/resources/js/components/common/Button.vue +++ b/resources/js/components/common/Button.vue @@ -71,7 +71,7 @@ export default { btnClasses() { const sizes = this.sizes const colorShades = this.colorShades - return `${sizes['p-y']} ${sizes['p-x']} + return `v-btn ${sizes['p-y']} ${sizes['p-x']} ${colorShades?.main} ${colorShades?.hover} ${colorShades?.ring} ${colorShades['ring-offset']} ${colorShades?.text} transition ease-in duration-200 text-center text-${sizes?.font} font-medium focus:outline-none focus:ring-2 focus:ring-offset-2 rounded-lg flex items-center hover:no-underline` diff --git a/resources/js/components/common/Dropdown.vue b/resources/js/components/common/Dropdown.vue index 767f7d1ed..1cb29e7c8 100644 --- a/resources/js/components/common/Dropdown.vue +++ b/resources/js/components/common/Dropdown.vue @@ -1,12 +1,10 @@ diff --git a/resources/js/components/open/forms/fields/components/BlockOptions.vue b/resources/js/components/open/forms/fields/components/BlockOptions.vue new file mode 100644 index 000000000..98969cc3b --- /dev/null +++ b/resources/js/components/open/forms/fields/components/BlockOptions.vue @@ -0,0 +1,160 @@ + + + diff --git a/resources/js/components/open/forms/fields/components/ChangeFieldType.vue b/resources/js/components/open/forms/fields/components/ChangeFieldType.vue index 21708b661..07f32567a 100644 --- a/resources/js/components/open/forms/fields/components/ChangeFieldType.vue +++ b/resources/js/components/open/forms/fields/components/ChangeFieldType.vue @@ -1,12 +1,11 @@ @@ -125,11 +125,11 @@ import axios from 'axios' import {mapGetters, mapState} from 'vuex' import Dropdown from '../../../common/Dropdown.vue' -import CreateTemplateModal from '../CreateTemplateModal.vue' +import FormTemplateModal from '../../../open/forms/components/templates/FormTemplateModal.vue' export default { name: 'ExtraMenu', - components: { Dropdown, CreateTemplateModal }, + components: { Dropdown, FormTemplateModal }, props: { form: { type: Object, required: true }, isMainPage: { type: Boolean, required: false, default: false } @@ -139,7 +139,7 @@ export default { loadingDuplicate: false, loadingDelete: false, showDeleteFormModal: false, - showCreateTemplateModal: false + showFormTemplateModal: false }), computed: { diff --git a/resources/js/components/pages/templates/SingleTemplate.vue b/resources/js/components/pages/templates/SingleTemplate.vue new file mode 100644 index 000000000..e1938ebd3 --- /dev/null +++ b/resources/js/components/pages/templates/SingleTemplate.vue @@ -0,0 +1,80 @@ + + + diff --git a/resources/js/components/pages/templates/TemplateTags.vue b/resources/js/components/pages/templates/TemplateTags.vue new file mode 100644 index 000000000..deac70898 --- /dev/null +++ b/resources/js/components/pages/templates/TemplateTags.vue @@ -0,0 +1,74 @@ + + + diff --git a/resources/js/components/pages/welcome/TemplatesSlider.vue b/resources/js/components/pages/welcome/TemplatesSlider.vue new file mode 100644 index 000000000..55930c202 --- /dev/null +++ b/resources/js/components/pages/welcome/TemplatesSlider.vue @@ -0,0 +1,70 @@ + + + diff --git a/resources/js/components/templates/QuestionsEditor.vue b/resources/js/components/templates/QuestionsEditor.vue deleted file mode 100644 index 985c18f6e..000000000 --- a/resources/js/components/templates/QuestionsEditor.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - - \ No newline at end of file diff --git a/resources/js/pages/templates/show.vue b/resources/js/pages/templates/show.vue index c4b642eb3..043f24f3f 100644 --- a/resources/js/pages/templates/show.vue +++ b/resources/js/pages/templates/show.vue @@ -1,50 +1,191 @@ @@ -52,61 +193,110 @@ + + diff --git a/resources/js/pages/templates/templates.vue b/resources/js/pages/templates/templates.vue index 8e71aba00..7894de536 100644 --- a/resources/js/pages/templates/templates.vue +++ b/resources/js/pages/templates/templates.vue @@ -1,94 +1,160 @@ diff --git a/resources/js/pages/welcome.vue b/resources/js/pages/welcome.vue index 3fdb51a4d..8d5e7f612 100644 --- a/resources/js/pages/welcome.vue +++ b/resources/js/pages/welcome.vue @@ -78,6 +78,8 @@ + +

Take your forms to the next level

Generous, unlimited free plan.

@@ -123,10 +125,11 @@ import MoreFeatures from '~/components/pages/welcome/MoreFeatures.vue' import AiFeature from '~/components/pages/welcome/AiFeature.vue' import OpenFormFooter from '../components/pages/OpenFormFooter.vue' import Testimonials from '../components/pages/welcome/Testimonials.vue' +import TemplatesSlider from '../components/pages/welcome/TemplatesSlider.vue' import SeoMeta from '../mixins/seo-meta.js' export default { - components: {Testimonials, OpenFormFooter, Features, MoreFeatures, AiFeature}, + components: {Testimonials, OpenFormFooter, Features, MoreFeatures, AiFeature, TemplatesSlider}, layout: 'default', diff --git a/resources/js/router/routes.js b/resources/js/router/routes.js index d31da7565..fa7f2ce18 100644 --- a/resources/js/router/routes.js +++ b/resources/js/router/routes.js @@ -67,8 +67,8 @@ export default [ { path: '/forms/:slug', name: 'forms.show_public', component: page('forms/show-public.vue') }, // Templates - { path: '/templates', name: 'templates', component: page('templates/templates.vue') }, - { path: '/templates/:slug', name: 'templates.show', component: page('templates/show.vue') }, + { path: '/form-templates', name: 'templates', component: page('templates/templates.vue') }, + { path: '/form-templates/:slug', name: 'templates.show', component: page('templates/show.vue') }, { path: '*', component: page('errors/404.vue') } ] diff --git a/resources/js/store/modules/open/templates.js b/resources/js/store/modules/open/templates.js index a03936f9f..3e229fad2 100644 --- a/resources/js/store/modules/open/templates.js +++ b/resources/js/store/modules/open/templates.js @@ -1,55 +1,124 @@ -import Vue from 'vue' import axios from 'axios' +export const templatesEndpoint = '/api/templates' +export const namespaced = true + // state export const state = { content: [], + industries: {}, + types: {}, + allLoaded: false, loading: false } // getters export const getters = { - getById: (state) => (id) => { - if (state.content.length === 0) return null - return state.content.find(item => item.id === id) - }, getBySlug: (state) => (slug) => { if (state.content.length === 0) return null return state.content.find(item => item.slug === slug) }, + getTemplateTypes: (state) => (slugs) => { + if (state.types.length === 0) return null + return Object.values(state.types).filter((val) => slugs.includes(val.slug)).map((item) => { return item.name }) + }, + getTemplateIndustries: (state) => (slugs) => { + if (state.industries.length === 0) return null + return Object.values(state.industries).filter((val) => slugs.includes(val.slug)).map((item) => { return item.name }) + } } // mutations export const mutations = { set (state, items) { state.content = items + state.allLoaded = true + }, + append (state, items) { + const ids = items.map((item) => { return item.id }) + state.content = state.content.filter((val) => !ids.includes(val.id)) + state.content = state.content.concat(items) }, addOrUpdate (state, item) { state.content = state.content.filter((val) => val.id !== item.id) state.content.push(item) }, - startLoading () { + remove (state, item) { + state.content = state.content.filter((val) => val.id !== item.id) + }, + startLoading (state) { state.loading = true }, - stopLoading () { + stopLoading (state) { state.loading = false + }, + setAllLoaded (state, val) { + state.allLoaded = val } } // actions export const actions = { - load (context) { + resetState (context) { context.commit('set', []) + context.commit('stopLoading') + }, + loadTypesAndIndustries (context) { + if (Object.keys(context.state.industries).length === 0) { + import('@/data/forms/templates/industries.json').then((module) => { + context.state.industries = module.default + }) + } + if (Object.keys(context.state.types).length === 0) { + import('@/data/forms/templates/types.json').then((module) => { + context.state.types = module.default + }) + } + }, + loadTemplate (context, slug) { context.commit('startLoading') - return axios.get('/api/templates').then((response) => { - context.commit('set', response.data) + context.dispatch('loadTypesAndIndustries') + + if (context.getters.getBySlug(slug)) { + context.commit('stopLoading') + return Promise.resolve() + } + + return axios.get(templatesEndpoint + '/' + slug).then((response) => { + context.commit('addOrUpdate', response.data) + context.commit('stopLoading') + }).catch((error) => { + context.commit('stopLoading') + }) + }, + loadAll (context) { + context.commit('startLoading') + context.dispatch('loadTypesAndIndustries') + return axios.get(templatesEndpoint).then((response) => { + context.commit('append', response.data) + context.commit('setAllLoaded', true) + context.commit('stopLoading') + }).catch((error) => { context.commit('stopLoading') }) }, - loadIfEmpty ({ context, dispatch, state }) { - if (state.content.length === 0) { - return dispatch('load') + loadIfEmpty (context) { + if (!context.state.allLoaded) { + return context.dispatch('loadAll') } + context.commit('stopLoading') return Promise.resolve() }, + loadWithLimit (context, limit) { + context.commit('startLoading') + context.dispatch('loadTypesAndIndustries') + + return axios.get(templatesEndpoint + '?limit=' + limit).then((response) => { + context.commit('set', response.data) + context.commit('setAllLoaded', false) + context.commit('stopLoading') + }).catch((error) => { + context.commit('stopLoading') + }) + } } diff --git a/routes/api.php b/routes/api.php index 005fe6762..9ec4b922b 100644 --- a/routes/api.php +++ b/routes/api.php @@ -161,5 +161,10 @@ }); // Templates -Route::get('templates', [TemplateController::class, 'index'])->name('templates.show'); -Route::post('templates', [TemplateController::class, 'create'])->name('templates.create'); +Route::prefix('templates')->group(function () { + Route::get('/', [TemplateController::class, 'index'])->name('templates.index'); + Route::post('/', [TemplateController::class, 'create'])->name('templates.create'); + Route::get('/{slug}', [TemplateController::class, 'show'])->name('templates.show'); + Route::put('/{id}', [TemplateController::class, 'update'])->name('templates.update'); + Route::delete('/{id}', [TemplateController::class, 'destroy'])->name('templates.destroy'); +}); diff --git a/tailwind.config.js b/tailwind.config.js index 0fc804f4b..a57431c16 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -21,10 +21,15 @@ module.exports = { '0%, 20%': {transform: 'translateY(0)'}, '8%': {transform: 'translateY(-25%)'}, '16%': {transform: 'translateY(+10%)'} + }, + 'infinite-scroll': { + from: { transform: 'translateX(0)' }, + to: { transform: 'translateX(-100%)' }, } }, animation: { - 'bounce-slow': 'bonce-slow 3s ease-in-out infinite' + 'bounce-slow': 'bonce-slow 3s ease-in-out infinite', + 'infinite-scroll': 'infinite-scroll 50s linear infinite', }, maxHeight: { 42: '10.5rem' diff --git a/tests/Feature/TemplateTest.php b/tests/Feature/TemplateTest.php index 62637b61a..624f827e5 100644 --- a/tests/Feature/TemplateTest.php +++ b/tests/Feature/TemplateTest.php @@ -14,8 +14,10 @@ $templateData = [ 'name' => 'Demo Template', 'slug' => 'demo_template', - 'description' => 'Some description here...', + 'short_description' => 'Short description here...', + 'description' => 'Some long description here...', 'image_url' => 'https://d3ietpyl4f2d18.cloudfront.net/6c35a864-ee3a-4039-80a4-040b6c20ac60/img/pages/welcome/product_cover.jpg', + 'publicly_listed' => true, 'form' => $form->getAttributes(), 'questions' => [['question'=>'Question 1','answer'=>'Answer 1 will be here...']] ]; @@ -23,6 +25,6 @@ ->assertSuccessful() ->assertJson([ 'type' => 'success', - 'message' => 'Template created.' + 'message' => 'Template was created.' ]); }); From 9645ceced683901cb3d8f64dc1e28ead8c17f3cc Mon Sep 17 00:00:00 2001 From: Julien Nahum Date: Fri, 8 Sep 2023 13:11:41 +0200 Subject: [PATCH 4/9] Update composer.lock file --- composer.lock | 142 +++++++++++++++++++++++++------------------------- 1 file changed, 72 insertions(+), 70 deletions(-) diff --git a/composer.lock b/composer.lock index d3ac721a8..a645a199d 100644 --- a/composer.lock +++ b/composer.lock @@ -118,16 +118,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.280.2", + "version": "3.281.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "d68b83b3bc39b70bf33e9b8b5166facbe3e4fe9b" + "reference": "5b33690b4ebc32a75164be0d6805d393a3ca9df9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/d68b83b3bc39b70bf33e9b8b5166facbe3e4fe9b", - "reference": "d68b83b3bc39b70bf33e9b8b5166facbe3e4fe9b", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/5b33690b4ebc32a75164be0d6805d393a3ca9df9", + "reference": "5b33690b4ebc32a75164be0d6805d393a3ca9df9", "shasum": "" }, "require": { @@ -207,9 +207,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.280.2" + "source": "https://github.com/aws/aws-sdk-php/tree/3.281.2" }, - "time": "2023-09-01T18:06:10+00:00" + "time": "2023-09-07T18:06:59+00:00" }, { "name": "brick/math", @@ -2613,16 +2613,16 @@ }, { "name": "laravel/horizon", - "version": "v5.19.2", + "version": "v5.20.0", "source": { "type": "git", "url": "https://github.com/laravel/horizon.git", - "reference": "16f2c0e00e5b0b9a3f85e95f6022b6dc0476993d" + "reference": "2fc2ba769a592e92d170d85e346a5631b3a90ed5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/horizon/zipball/16f2c0e00e5b0b9a3f85e95f6022b6dc0476993d", - "reference": "16f2c0e00e5b0b9a3f85e95f6022b6dc0476993d", + "url": "https://api.github.com/repos/laravel/horizon/zipball/2fc2ba769a592e92d170d85e346a5631b3a90ed5", + "reference": "2fc2ba769a592e92d170d85e346a5631b3a90ed5", "shasum": "" }, "require": { @@ -2685,9 +2685,9 @@ ], "support": { "issues": "https://github.com/laravel/horizon/issues", - "source": "https://github.com/laravel/horizon/tree/v5.19.2" + "source": "https://github.com/laravel/horizon/tree/v5.20.0" }, - "time": "2023-08-29T13:37:54+00:00" + "time": "2023-08-30T14:04:11+00:00" }, { "name": "laravel/serializable-closure", @@ -2751,16 +2751,16 @@ }, { "name": "laravel/socialite", - "version": "v5.8.1", + "version": "v5.9.0", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "9989b4530331597fae811bca240bf4e8f15e804b" + "reference": "14acfa3262875f180fba51efe3c7aaa089a9ef24" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/9989b4530331597fae811bca240bf4e8f15e804b", - "reference": "9989b4530331597fae811bca240bf4e8f15e804b", + "url": "https://api.github.com/repos/laravel/socialite/zipball/14acfa3262875f180fba51efe3c7aaa089a9ef24", + "reference": "14acfa3262875f180fba51efe3c7aaa089a9ef24", "shasum": "" }, "require": { @@ -2817,7 +2817,7 @@ "issues": "https://github.com/laravel/socialite/issues", "source": "https://github.com/laravel/socialite" }, - "time": "2023-08-21T13:06:52+00:00" + "time": "2023-09-05T15:20:21+00:00" }, { "name": "laravel/tinker", @@ -3020,16 +3020,16 @@ }, { "name": "laravel/vapor-core", - "version": "v2.32.1", + "version": "v2.33.1", "source": { "type": "git", "url": "https://github.com/laravel/vapor-core.git", - "reference": "61adb35e746c070b3ddfc1a92201e96b4479c3af" + "reference": "51d116c15d4f8a07b0d55b44622d68e4b5075743" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/vapor-core/zipball/61adb35e746c070b3ddfc1a92201e96b4479c3af", - "reference": "61adb35e746c070b3ddfc1a92201e96b4479c3af", + "url": "https://api.github.com/repos/laravel/vapor-core/zipball/51d116c15d4f8a07b0d55b44622d68e4b5075743", + "reference": "51d116c15d4f8a07b0d55b44622d68e4b5075743", "shasum": "" }, "require": { @@ -3091,9 +3091,9 @@ "vapor" ], "support": { - "source": "https://github.com/laravel/vapor-core/tree/v2.32.1" + "source": "https://github.com/laravel/vapor-core/tree/v2.33.1" }, - "time": "2023-08-18T13:18:08+00:00" + "time": "2023-09-07T14:14:16+00:00" }, { "name": "laravel/vapor-ui", @@ -3488,16 +3488,16 @@ }, { "name": "league/flysystem", - "version": "3.15.1", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed" + "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a141d430414fcb8bf797a18716b09f759a385bed", - "reference": "a141d430414fcb8bf797a18716b09f759a385bed", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/4fdf372ca6b63c6e281b1c01a624349ccb757729", + "reference": "4fdf372ca6b63c6e281b1c01a624349ccb757729", "shasum": "" }, "require": { @@ -3506,6 +3506,8 @@ "php": "^8.0.2" }, "conflict": { + "async-aws/core": "<1.19.0", + "async-aws/s3": "<1.14.0", "aws/aws-sdk-php": "3.209.31 || 3.210.0", "guzzlehttp/guzzle": "<7.0", "guzzlehttp/ringphp": "<1.1.1", @@ -3525,7 +3527,7 @@ "microsoft/azure-storage-blob": "^1.1", "phpseclib/phpseclib": "^3.0.14", "phpstan/phpstan": "^0.12.26", - "phpunit/phpunit": "^9.5.11", + "phpunit/phpunit": "^9.5.11|^10.0", "sabre/dav": "^4.3.1" }, "type": "library", @@ -3560,7 +3562,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem/issues", - "source": "https://github.com/thephpleague/flysystem/tree/3.15.1" + "source": "https://github.com/thephpleague/flysystem/tree/3.16.0" }, "funding": [ { @@ -3572,20 +3574,20 @@ "type": "github" } ], - "time": "2023-05-04T09:04:26+00:00" + "time": "2023-09-07T19:22:17+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "3.15.0", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a" + "reference": "ded9ba346bb01cb9cc4cc7f2743c2c0e14d18e1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/d8de61ee10b6a607e7996cff388c5a3a663e8c8a", - "reference": "d8de61ee10b6a607e7996cff388c5a3a663e8c8a", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/ded9ba346bb01cb9cc4cc7f2743c2c0e14d18e1c", + "reference": "ded9ba346bb01cb9cc4cc7f2743c2c0e14d18e1c", "shasum": "" }, "require": { @@ -3626,7 +3628,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-aws-s3-v3/issues", - "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.15.0" + "source": "https://github.com/thephpleague/flysystem-aws-s3-v3/tree/3.16.0" }, "funding": [ { @@ -3638,20 +3640,20 @@ "type": "github" } ], - "time": "2023-05-02T20:02:14+00:00" + "time": "2023-08-30T10:14:57+00:00" }, { "name": "league/flysystem-local", - "version": "3.15.0", + "version": "3.16.0", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-local.git", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3" + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/543f64c397fefdf9cfeac443ffb6beff602796b3", - "reference": "543f64c397fefdf9cfeac443ffb6beff602796b3", + "url": "https://api.github.com/repos/thephpleague/flysystem-local/zipball/ec7383f25642e6fd4bb0c9554fc2311245391781", + "reference": "ec7383f25642e6fd4bb0c9554fc2311245391781", "shasum": "" }, "require": { @@ -3686,7 +3688,7 @@ ], "support": { "issues": "https://github.com/thephpleague/flysystem-local/issues", - "source": "https://github.com/thephpleague/flysystem-local/tree/3.15.0" + "source": "https://github.com/thephpleague/flysystem-local/tree/3.16.0" }, "funding": [ { @@ -3698,7 +3700,7 @@ "type": "github" } ], - "time": "2023-05-02T20:02:14+00:00" + "time": "2023-08-30T10:23:59+00:00" }, { "name": "league/glide", @@ -4558,16 +4560,16 @@ }, { "name": "nesbot/carbon", - "version": "2.69.0", + "version": "2.70.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c" + "reference": "d3298b38ea8612e5f77d38d1a99438e42f70341d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4308217830e4ca445583a37d1bf4aff4153fa81c", - "reference": "4308217830e4ca445583a37d1bf4aff4153fa81c", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/d3298b38ea8612e5f77d38d1a99438e42f70341d", + "reference": "d3298b38ea8612e5f77d38d1a99438e42f70341d", "shasum": "" }, "require": { @@ -4660,7 +4662,7 @@ "type": "tidelift" } ], - "time": "2023-08-03T09:00:52+00:00" + "time": "2023-09-07T16:43:50+00:00" }, { "name": "nette/schema", @@ -5882,16 +5884,16 @@ }, { "name": "propaganistas/laravel-disposable-email", - "version": "2.2.11", + "version": "2.2.12", "source": { "type": "git", "url": "https://github.com/Propaganistas/Laravel-Disposable-Email.git", - "reference": "55889d2acdc3f4b9bbd20233840961bce30239c1" + "reference": "5d3b26769386543aef2eed7436f4574a9104607f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Propaganistas/Laravel-Disposable-Email/zipball/55889d2acdc3f4b9bbd20233840961bce30239c1", - "reference": "55889d2acdc3f4b9bbd20233840961bce30239c1", + "url": "https://api.github.com/repos/Propaganistas/Laravel-Disposable-Email/zipball/5d3b26769386543aef2eed7436f4574a9104607f", + "reference": "5d3b26769386543aef2eed7436f4574a9104607f", "shasum": "" }, "require": { @@ -5945,7 +5947,7 @@ ], "support": { "issues": "https://github.com/Propaganistas/Laravel-Disposable-Email/issues", - "source": "https://github.com/Propaganistas/Laravel-Disposable-Email/tree/2.2.11" + "source": "https://github.com/Propaganistas/Laravel-Disposable-Email/tree/2.2.12" }, "funding": [ { @@ -5953,7 +5955,7 @@ "type": "github" } ], - "time": "2023-09-01T01:08:46+00:00" + "time": "2023-09-05T06:38:24+00:00" }, { "name": "psr/cache", @@ -11918,16 +11920,16 @@ }, { "name": "laravel/sail", - "version": "v1.24.0", + "version": "v1.24.1", "source": { "type": "git", "url": "https://github.com/laravel/sail.git", - "reference": "c8a621d7b69ab2e568d97a20f837ca733a224006" + "reference": "3a373bb2845623aed2017c672dc61c84ae974890" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/sail/zipball/c8a621d7b69ab2e568d97a20f837ca733a224006", - "reference": "c8a621d7b69ab2e568d97a20f837ca733a224006", + "url": "https://api.github.com/repos/laravel/sail/zipball/3a373bb2845623aed2017c672dc61c84ae974890", + "reference": "3a373bb2845623aed2017c672dc61c84ae974890", "shasum": "" }, "require": { @@ -11979,7 +11981,7 @@ "issues": "https://github.com/laravel/sail/issues", "source": "https://github.com/laravel/sail" }, - "time": "2023-08-27T14:26:11+00:00" + "time": "2023-09-01T14:05:17+00:00" }, { "name": "mockery/mockery", @@ -12903,16 +12905,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.23.1", + "version": "1.24.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26" + "reference": "3510b0a6274cc42f7219367cb3abfc123ffa09d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/846ae76eef31c6d7790fac9bc399ecee45160b26", - "reference": "846ae76eef31c6d7790fac9bc399ecee45160b26", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/3510b0a6274cc42f7219367cb3abfc123ffa09d6", + "reference": "3510b0a6274cc42f7219367cb3abfc123ffa09d6", "shasum": "" }, "require": { @@ -12944,9 +12946,9 @@ "description": "PHPDoc parser with support for nullable, intersection and generic types", "support": { "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.23.1" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.24.0" }, - "time": "2023-08-03T16:32:59+00:00" + "time": "2023-09-07T20:46:32+00:00" }, { "name": "phpunit/php-code-coverage", @@ -14829,16 +14831,16 @@ }, { "name": "spatie/ray", - "version": "1.37.4", + "version": "1.37.6", "source": { "type": "git", "url": "https://github.com/spatie/ray.git", - "reference": "37d351c57b5183a88754f477d2e5f610c7b355ce" + "reference": "caa46a4032c9700d2f33c22d31c23f4f7ef18ae1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ray/zipball/37d351c57b5183a88754f477d2e5f610c7b355ce", - "reference": "37d351c57b5183a88754f477d2e5f610c7b355ce", + "url": "https://api.github.com/repos/spatie/ray/zipball/caa46a4032c9700d2f33c22d31c23f4f7ef18ae1", + "reference": "caa46a4032c9700d2f33c22d31c23f4f7ef18ae1", "shasum": "" }, "require": { @@ -14889,7 +14891,7 @@ ], "support": { "issues": "https://github.com/spatie/ray/issues", - "source": "https://github.com/spatie/ray/tree/1.37.4" + "source": "https://github.com/spatie/ray/tree/1.37.6" }, "funding": [ { @@ -14901,7 +14903,7 @@ "type": "other" } ], - "time": "2023-09-04T07:17:56+00:00" + "time": "2023-09-08T09:48:14+00:00" }, { "name": "symfony/polyfill-iconv", From 5111957ea561a20630a928b37cc52667852b18ab Mon Sep 17 00:00:00 2001 From: Julien Nahum Date: Fri, 8 Sep 2023 15:01:54 +0200 Subject: [PATCH 5/9] Upgrade pipeline to php 8.2 --- .github/workflows/laravel.yml | 4 ++-- composer.lock | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml index d995bae68..71d47869a 100644 --- a/.github/workflows/laravel.yml +++ b/.github/workflows/laravel.yml @@ -34,7 +34,7 @@ jobs: strategy: fail-fast: true matrix: - php: [ 8.1 ] + php: [ 8.2 ] name: Run Feature & Unit tests (PHP ${{ matrix.php }}) @@ -102,7 +102,7 @@ jobs: strategy: fail-fast: true matrix: - php: [ 8.1 ] + php: [ 8.2 ] name: Triggers deploy through Laravel Vapor diff --git a/composer.lock b/composer.lock index a645a199d..fdda0045f 100644 --- a/composer.lock +++ b/composer.lock @@ -14831,16 +14831,16 @@ }, { "name": "spatie/ray", - "version": "1.37.6", + "version": "1.37.7", "source": { "type": "git", "url": "https://github.com/spatie/ray.git", - "reference": "caa46a4032c9700d2f33c22d31c23f4f7ef18ae1" + "reference": "31e07c3eadc736e180810efff72a0ff882dcddb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/spatie/ray/zipball/caa46a4032c9700d2f33c22d31c23f4f7ef18ae1", - "reference": "caa46a4032c9700d2f33c22d31c23f4f7ef18ae1", + "url": "https://api.github.com/repos/spatie/ray/zipball/31e07c3eadc736e180810efff72a0ff882dcddb6", + "reference": "31e07c3eadc736e180810efff72a0ff882dcddb6", "shasum": "" }, "require": { @@ -14891,7 +14891,7 @@ ], "support": { "issues": "https://github.com/spatie/ray/issues", - "source": "https://github.com/spatie/ray/tree/1.37.6" + "source": "https://github.com/spatie/ray/tree/1.37.7" }, "funding": [ { @@ -14903,7 +14903,7 @@ "type": "other" } ], - "time": "2023-09-08T09:48:14+00:00" + "time": "2023-09-08T12:08:25+00:00" }, { "name": "symfony/polyfill-iconv", From 7119ec23045fdf334b259f150f3ebd8814722f85 Mon Sep 17 00:00:00 2001 From: Julien Nahum Date: Fri, 8 Sep 2023 15:30:57 +0200 Subject: [PATCH 6/9] Increase template description limit --- app/Http/Requests/Templates/FormTemplateRequest.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Http/Requests/Templates/FormTemplateRequest.php b/app/Http/Requests/Templates/FormTemplateRequest.php index 89f3b7341..60436fec9 100644 --- a/app/Http/Requests/Templates/FormTemplateRequest.php +++ b/app/Http/Requests/Templates/FormTemplateRequest.php @@ -58,7 +58,7 @@ public function rules() 'name' => 'required|string|max:60', 'slug' => 'required|string|alpha_dash|unique:templates,slug'.$slugRule, 'short_description' => 'required|string|max:1000', - 'description' => 'required|string|max:2000', + 'description' => 'required|string', 'image_url' => 'required|string', 'types' => 'nullable|array', 'industries' => 'nullable|array', @@ -75,7 +75,7 @@ public function getTemplate(): Template unset($structure[$key]); } } - + return new Template([ 'publicly_listed' => $this->publicly_listed, 'name' => $this->name, From f82a8afe79325735ff7bdc9f1827beef01a9901b Mon Sep 17 00:00:00 2001 From: formsdev <136701234+formsdev@users.noreply.github.com> Date: Fri, 8 Sep 2023 19:35:56 +0530 Subject: [PATCH 7/9] Fix remove block (#195) --- .../js/components/open/forms/components/FormFieldsEditor.vue | 2 +- .../js/components/open/forms/fields/FormFieldEditSidebar.vue | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/resources/js/components/open/forms/components/FormFieldsEditor.vue b/resources/js/components/open/forms/components/FormFieldsEditor.vue index 9bf56f535..4abfbec5e 100644 --- a/resources/js/components/open/forms/components/FormFieldsEditor.vue +++ b/resources/js/components/open/forms/components/FormFieldsEditor.vue @@ -294,10 +294,10 @@ export default { this.$store.commit('open/working_form/openSettingsForField', this.formFields.length-1) }, removeBlock(blockIndex) { - this.closeSidebar() const newFields = clonedeep(this.formFields) newFields.splice(blockIndex, 1) this.$set(this, 'formFields', newFields) + this.closeSidebar() }, closeSidebar() { this.$store.commit('open/working_form/closeEditFieldSidebar') diff --git a/resources/js/components/open/forms/fields/FormFieldEditSidebar.vue b/resources/js/components/open/forms/fields/FormFieldEditSidebar.vue index 7b54e6f37..b0eb1067b 100644 --- a/resources/js/components/open/forms/fields/FormFieldEditSidebar.vue +++ b/resources/js/components/open/forms/fields/FormFieldEditSidebar.vue @@ -121,18 +121,18 @@ export default { this.$set(this.field, 'type', newType) }, removeBlock() { - this.closeSidebar() const newFields = clonedeep(this.form.properties) newFields.splice(this.selectedFieldIndex, 1) this.$set(this.form, 'properties', newFields) + this.closeSidebar() }, duplicateBlock() { - this.closeSidebar() const newFields = clonedeep(this.form.properties) const newField = clonedeep(this.form.properties[this.selectedFieldIndex]) newField.id = this.generateUUID() newFields.push(newField) this.$set(this.form, 'properties', newFields) + this.closeSidebar() }, closeSidebar() { this.$store.commit('open/working_form/closeEditFieldSidebar') From 61d02d4fb2b7a9919adf6e53fa6ea9c427896ab0 Mon Sep 17 00:00:00 2001 From: formsdev <136701234+formsdev@users.noreply.github.com> Date: Fri, 8 Sep 2023 21:58:10 +0530 Subject: [PATCH 8/9] V Select hover theme color (#192) Co-authored-by: Julien Nahum --- .../js/components/forms/components/VSelect.vue | 13 +++++++++---- resources/sass/app.scss | 4 ++++ tailwind.config.js | 3 ++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/resources/js/components/forms/components/VSelect.vue b/resources/js/components/forms/components/VSelect.vue index 6c68cc823..0e2879c48 100644 --- a/resources/js/components/forms/components/VSelect.vue +++ b/resources/js/components/forms/components/VSelect.vue @@ -57,8 +57,8 @@