Decouple title from title block (#696)
* Decouple title from title block * fix lint * remove dry run for FormTitleMigration * Skip form title migration for forms with hidden titles * Refactor AI Form Generation with Dedicated Prompt Services - Extract AI form generation logic from GenerateTemplate command into dedicated prompt service classes - Update GenerateAiForm job to use new prompt generation services - Improve GptCompleter with more robust error handling and token tracking - Add error field to AiFormCompletion model for better error logging - Simplify command signature from 'ai:make-form-template' to 'form:generate' * Consolidate Template Metadata Generation with Unified Prompt Service - Create GenerateTemplateMetadataPrompt to centralize template metadata generation - Update GenerateTemplate command to use new consolidated metadata generation approach - Enhance GptCompleter to support strict JSON schema validation - Increase form prompt max length to support more complex form descriptions - Refactor form generation to simplify metadata extraction and processing * Implement Form Mode Strategy for Flexible Form Rendering - Introduce FormModeStrategy to centralize form rendering logic - Add support for different form modes: LIVE, PREVIEW, TEST, EDIT, PREFILL - Refactor components to use mode-based rendering strategy - Remove legacy boolean props like adminPreview and creating - Enhance form component flexibility and reusability * Refine Form Mode Strategy Display Behavior - Update FormModeStrategy to hide hidden fields in PREVIEW mode - Add FormMode getter in UrlFormPrefill component for mode-specific rendering - Clarify mode-specific validation and display logic in form strategies * Enhance Form Template Generation with Advanced Field Options - Update GenerateTemplate command to use front_url for template URL output - Expand GenerateFormPrompt with comprehensive field configuration options - Add support for advanced field types: date with time, toggle switches, radio/checkbox selections - Introduce field width configuration and HTML formatting for text elements - Re-enable select, multi-select, and matrix field type definitions with enhanced configurations * Remove Deprecated Template Metadata Generation Services - Delete multiple AI prompt services related to template metadata generation - Simplify GenerateTemplate command to use default values instead of complex metadata generation - Remove GenerateTemplateMetadataPrompt and related classes like GenerateTemplateDescriptionPrompt, GenerateTemplateImageKeywordsPrompt, etc. - Update form template generation to use basic fallback metadata generation approach * Restore GenerateTemplateMetadataPrompt for Comprehensive Template Generation - Reintroduce GenerateTemplateMetadataPrompt to replace default metadata generation - Update GenerateTemplate command to use consolidated metadata generation approach - Extract detailed metadata components including title, description, industries, and image search query - Improve template generation with more dynamic and AI-generated metadata * Refactor Template Preview Section Layout - Remove unnecessary nested div in template preview section - Simplify HTML structure for the template preview component - Maintain existing styling and functionality while improving code readability * Refactor Constructor and Code Formatting in AI Form Generation and Prompt Classes - Updated the constructor in GenerateAiForm.php to use a block structure for improved readability and consistency. - Added a blank line in the Prompt.php file to enhance code formatting and maintain consistency with PHP coding standards. - Modified the migration file to use a more concise class declaration syntax, improving clarity. These changes aim to enhance code readability and maintainability across the affected files. --------- Co-authored-by: Julien Nahum <julien@nahum.net>
This commit is contained in:
@@ -24,15 +24,6 @@
|
||||
</h3>
|
||||
</div>
|
||||
</template>
|
||||
<toggle-switch-input
|
||||
:model-value="modelValue.hide_title"
|
||||
name="hide_title"
|
||||
class="mt-4"
|
||||
label="Hide Form Title"
|
||||
:disabled="form.hide_title === true ? true : null"
|
||||
:help="hideTitleHelp"
|
||||
@update:model-value="onChangeHideTitle"
|
||||
/>
|
||||
<toggle-switch-input
|
||||
:model-value="modelValue.auto_submit"
|
||||
name="auto_submit"
|
||||
@@ -64,22 +55,7 @@ export default {
|
||||
return {}
|
||||
},
|
||||
|
||||
computed: {
|
||||
hideTitleHelp() {
|
||||
return this.form.hide_title
|
||||
? "This option is disabled because the form title is already hidden"
|
||||
: null
|
||||
},
|
||||
},
|
||||
|
||||
watch: {},
|
||||
|
||||
mounted() {},
|
||||
|
||||
methods: {
|
||||
onChangeHideTitle(val) {
|
||||
this.modelValue.hide_title = val
|
||||
},
|
||||
onChangeAutoSubmit(val) {
|
||||
this.modelValue.auto_submit = val
|
||||
},
|
||||
|
||||
@@ -148,11 +148,6 @@
|
||||
label="Color image"
|
||||
help="Not visible when form is embedded"
|
||||
/>
|
||||
<toggle-switch-input
|
||||
name="hide_title"
|
||||
:form="form"
|
||||
label="Hide Title"
|
||||
/>
|
||||
<toggle-switch-input
|
||||
name="no_branding"
|
||||
:form="form"
|
||||
@@ -173,11 +168,6 @@
|
||||
icon="heroicons:cog-6-tooth-16-solid"
|
||||
title="Advanced Options"
|
||||
/>
|
||||
<toggle-switch-input
|
||||
name="hide_title"
|
||||
:form="form"
|
||||
label="Hide Form Title"
|
||||
/>
|
||||
<toggle-switch-input
|
||||
name="show_progress_bar"
|
||||
:form="form"
|
||||
|
||||
@@ -92,11 +92,9 @@
|
||||
ref="formPreview"
|
||||
class="w-full mx-auto py-5"
|
||||
:class="{'max-w-lg': form && (form.width === 'centered'),'px-7': !isExpanded, 'px-3': isExpanded}"
|
||||
:creating="creating"
|
||||
:form="form"
|
||||
:dark-mode="darkMode"
|
||||
:admin-preview="!isExpanded"
|
||||
:show-cleanings="false"
|
||||
:mode="formMode"
|
||||
@restarted="previewFormSubmitted=false"
|
||||
@submitted="previewFormSubmitted=true"
|
||||
/>
|
||||
@@ -113,6 +111,7 @@ import { default as _has } from 'lodash/has'
|
||||
import { useRecordsStore } from '~/stores/records'
|
||||
import { useWorkingFormStore } from '~/stores/working_form'
|
||||
import { storeToRefs } from 'pinia'
|
||||
import { FormMode } from "~/lib/forms/FormModeStrategy.js"
|
||||
|
||||
const recordsStore = useRecordsStore()
|
||||
const workingFormStore = useWorkingFormStore()
|
||||
@@ -126,7 +125,8 @@ const { content: form } = storeToRefs(workingFormStore)
|
||||
const recordLoading = computed(() => recordsStore.loading)
|
||||
const darkMode = useDarkMode(parent)
|
||||
|
||||
const creating = computed(() => !_has(form.value, 'id'))
|
||||
// Use PREVIEW mode when not expanded, TEST mode when expanded
|
||||
const formMode = computed(() => isExpanded.value ? FormMode.TEST : FormMode.PREVIEW)
|
||||
|
||||
defineShortcuts({
|
||||
escape: {
|
||||
|
||||
Reference in New Issue
Block a user