* oAuth for Stripe
* Stripe Payment Frontend - WIP
* Payment block backend validation and new package for stripe
* change stripe scopes
* update PaymentBlockConfigurationRule
* Set loader on provider modal
* stripe oauth
* PaymentFieldOptions as seprate component
* validate Stripe account
* Payment intent
* Stripe Payment as composable
* confirmCardPayment working
* Set payment errors on form.errors
* Validate card other fields
* Store payment id to database and on submission add link for view payment on stripe
* FormPaymentController no need auth middleware
* paymentinput error display on field
* Make payment block as input
change 'nf-payment' to 'payment'
* Refactor payment processing and error handling
* Multi lang & direction support on payment
* reset card on change direction or local
* use connected account for loadstripe
* validate OAuthProvider before delete it
* payment improvements
* display payment by stripe
* use stripe_currencies.json
* Form Payment testcase
* Enhance form auto-save behavior for payment forms
* Restrict payment block in self-hosted environments
* validate form before process payment
* Refactor Nuxt Configuration for Improved Development Server Settings
- Removed the existing Vite server configuration for hot module replacement (HMR) as it was no longer necessary.
- Introduced a new `devServer` configuration to specify the host and port for the development server, allowing for more flexible environment setup based on environment variables.
These changes aim to streamline the development process by enhancing server configuration and ensuring better adaptability to different environments.
* Enhance Payment Handling and User Experience in Forms
- Refactored `FormPaymentController` to improve handling of Stripe account retrieval, including better error messages for both editor preview and public forms.
- Updated `OAuthProviderController` to utilize caching for OAuth connection context, enhancing performance and user experience during account connections.
- Improved `PaymentInput.client.vue` to display a loading state and a preview message for users, guiding them to save the form for payment activation.
- Modified various components to standardize payment-related messages and improve localization support across multiple languages.
- Removed the deprecated `connections.vue` page to streamline the codebase.
These changes aim to enhance the overall user experience when handling payments and improve the maintainability of the payment-related components.
* Refactor Payment Handling and Enhance User Experience in Forms
- Updated `FormPaymentController` to utilize a new method for checking if the Stripe provider belongs to any workspace user, improving security and error logging.
- Modified `OAuthProviderController` to streamline the OAuth provider creation process by directly using the service object.
- Enhanced `Workspace` model with a new method to verify provider ownership, improving code clarity and maintainability.
- Improved `PaymentInput.client.vue` to handle loading states and error messages more effectively, enhancing user feedback during payment processing.
- Refactored `useFormInput.js` to include an `isAdminPreview` prop for better context handling in form components.
These changes aim to improve the overall user experience when handling payments and enhance the maintainability of the payment-related components.
* Enhance Payment Validation and User Experience in Forms
- Updated `UserFormRequest` to improve workspace handling during form submissions, allowing for better context in validation rules.
- Modified `PaymentBlockConfigurationRule` to include workspace validation, ensuring that payment providers are associated with the correct workspace, enhancing security and error logging.
- Improved `PaymentInput.client.vue` to dynamically determine the success state of payment processing, providing clearer user feedback.
- Updated various localization files to include a payment disclaimer, ensuring users are informed about credit card charges during payment processing.
These changes aim to enhance the overall user experience when handling payments and improve the maintainability of payment-related components.
* Enhance Payment Features and User Experience in Forms
- Added checks in `FormPaymentController` to disable payment features for self-hosted instances, improving clarity for users regarding feature availability.
- Updated `PaymentBlockConfigurationRule` to change the minimum amount validation from 0.5 to 1, ensuring stricter payment requirements.
- Enhanced `PaymentInput.client.vue` with dark mode support for various UI elements, improving accessibility and user experience in different themes.
- Modified `useFormInput.js` to include an `isDark` prop, allowing for better theme handling in form components.
- Updated error messages in `useStripeElements.js` to include periods for consistency and improved user feedback.
These changes aim to enhance the overall user experience when handling payments and improve the maintainability of payment-related components.
* Enhance Payment Input Component with Focus Handling and Theme Support
- Updated `PaymentInput.client.vue` to include focus and blur event handlers, improving user interaction by visually indicating when the card input is focused.
- Enhanced theme support by adding new properties in `form-themes.js` for `PaymentInput`, allowing for better styling and transitions based on focus state.
- Introduced a new `isCardFocused` reactive reference to manage the focus state of the card input, enhancing the overall user experience.
These changes aim to improve the usability and visual feedback of the payment input component, aligning with recent enhancements to user experience in payment forms.
* Refactor Payment Handling and Improve Code Consistency
- Updated various files to enhance code consistency by adding spaces in arrow function definitions, improving readability and adhering to coding standards.
- Modified `PaymentBlockConfigurationRule.php`, `FormPaymentController.php`, and `Workspace.php` to ensure uniformity in the use of arrow functions.
- Enhanced `PaymentInput.client.vue` and other components by improving the formatting of template elements for better visual structure.
- Updated `useStripeElements.js` to streamline state management and improve clarity in the handling of Stripe elements.
These changes aim to improve code maintainability and readability across the payment handling components, ensuring a more consistent coding style throughout the codebase.
* Enhance Form Model and Logging Configuration
- Added a new 'auto_save' boolean property to the Form model, allowing for automatic saving of form data.
- Updated the logging configuration to include a 'combined' channel that stacks multiple log channels, improving logging flexibility and error tracking.
- Modified the FormFactory to set a default value for 'auto_save' to false, ensuring consistent behavior across form instances.
- Improved error message structure in FormPaymentTest to provide clearer feedback when a payment block is missing.
These changes aim to enhance the functionality of forms and improve logging capabilities, contributing to better maintainability and user experience.
* Update api/config/logging.php
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Refactor Payment Error Handling and Localization Updates
- Updated `FormPaymentTest.php` to improve code consistency by adding spaces in arrow function definitions, enhancing readability.
- Modified `useStripeElements.js` to replace hardcoded error messages with localized strings, improving user experience and maintainability.
- Enhanced various localization files (e.g., `en.json`, `fr.json`, `de.json`, etc.) to include new error messages related to payment processing, ensuring users receive clear and consistent feedback across different languages.
These changes aim to enhance the clarity of error handling in payment processes and improve the overall user experience through better localization support.
* Enhance AddFormBlock and FieldOptions with Authentication Checks
- Added an icon to indicate authentication requirements for blocks in `AddFormBlock.vue`, improving user awareness of access restrictions.
- Implemented alert notifications using `useAlert()` for unauthorized block additions and input cloning, enhancing user feedback.
- Updated `FieldOptions.vue` to conditionally render payment field options, ensuring relevant options are displayed based on the field type.
- Modified `blocks_types.json` to include an `auth_required` property for specific block types, facilitating authentication checks.
These changes aim to improve user experience by providing clear indications of authentication requirements and enhancing form functionality.
* Enhance Authentication Checks in AddFormBlock Component
- Updated `AddFormBlock.vue` to conditionally render authentication-required icons based on user authentication status, improving user awareness of access restrictions.
- Implemented additional authentication checks in the `addBlock` and `handleInputClone` functions, utilizing `useAlert()` for notifying users when login is required to add blocks or clone inputs.
- Introduced a computed property to manage the authenticated state, streamlining the authentication logic within the component.
These changes aim to enhance user experience by providing clear indications of authentication requirements and improving the functionality of the form component.
* Enhance PaymentInput Component with Disabled State Support
- Updated `PaymentInput.client.vue` to include a `disabled` prop for the card holder name and email inputs, improving form accessibility and user experience by preventing interaction when necessary.
- Modified the card options to respect the `disabled` state, ensuring consistent behavior across the payment input fields.
These changes aim to enhance the usability of the payment input component by providing better control over user interactions.
* Add Payment Condition Logic and Update Filters
- Introduced a new payment condition in `FormLogicConditionChecker.php` to handle 'paid' and 'not_paid' states, enhancing form logic capabilities.
- Added corresponding payment comparators in `open_filters.json` for both API and client, ensuring consistent validation and expected types for payment conditions.
- Updated the JavaScript logic in `FormLogicConditionChecker.js` to include the new payment condition checks, improving the overall functionality of form conditions.
These changes aim to enhance the form logic related to payment states, providing better validation and user experience in payment-related forms.
* Refactor Authentication Checks in AddFormBlock and Working Form Store
- Removed redundant authentication checks from `AddFormBlock.vue` for adding blocks and cloning inputs, streamlining the logic.
- Centralized authentication validation in `working_form.js` to ensure consistent user feedback when authentication is required for specific block types.
- Enhanced user experience by utilizing `useAlert()` for notifying users about login requirements, improving clarity and interaction.
These changes aim to simplify the authentication logic and improve user notifications regarding access restrictions in form components.
* Refactor Feature Flags and Update Payment Input Logic
- Updated `FeatureFlagsController.php` to utilize the `Cache` facade directly, improving code clarity and consistency.
- Modified `PaymentInput.client.vue` to enhance the display logic for payment previews, ensuring a better user experience by conditionally showing messages based on the state of the Stripe account.
- Removed the `STRIPE_PUBLISHABLE_KEY` from `runtimeConfig.js` to streamline the configuration and replaced it with a computed property that retrieves the key from feature flags, improving maintainability.
- Adjusted the `.env.example` file to maintain consistency in environment variable definitions.
These changes aim to enhance the clarity of feature flag management and improve the user experience in payment interactions by refining the logic and configuration handling.
* Update Stripe Configuration in Services
- Modified the `services.php` configuration file to enhance the Stripe integration by providing default values for `client_secret` and `redirect` URI. This change ensures that the application can fallback to a predefined secret and a specific callback URL, improving the robustness of the payment service setup.
These changes aim to streamline the configuration process for Stripe, ensuring that necessary values are always available for the application to function correctly.
---------
Co-authored-by: Chirag Chhatrala <chirag.chhatrala@gmail.com>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* Add Telegram Notification Integration
- Introduce Telegram Notification integration to the forms configuration.
- Add necessary properties including name, icon, section name, file name, actions file name, and pro status.
This update enhances the notification options available in the application, allowing users to integrate Telegram for notifications.
* Add Telegram integration support
- Updated .env.example to include Telegram bot configuration variables.
- Added the Telegram driver to OAuthProviderService for handling Telegram authentication.
- Created OAuthTelegramDriver class to manage Telegram OAuth interactions.
- Registered Telegram service in services.php with necessary credentials.
- Updated ProviderModal and TelegramIntegration components to support Telegram account connection and widget integration.
- Refactored integration forms to utilize FlatSelectInput for selecting Telegram accounts.
These changes enable users to connect their Telegram accounts for notifications, enhancing the integration capabilities of the application.
* Enhance Telegram integration and refactor settings components
- Added Telegram configuration to FeatureFlagsController for bot and redirect settings.
- Updated nuxt.config.ts to include settings components path for better organization.
- Refactored TelegramIntegration component to navigate to settings on connect.
- Renamed and updated ProviderModal and ProviderWidgetModal for consistency.
- Introduced TelegramWidget component for dynamic loading of the Telegram login widget.
- Refactored access tokens and connections pages to use updated component names.
These changes improve the Telegram integration and streamline the settings management interface.
* Refactor Telegram integration for widget-based authentication
- Updated .env.example to rename Telegram bot configuration variable from TELEGRAM_BOT_NAME to TELEGRAM_BOT_ID.
- Removed the Telegram provider from composer.json to streamline dependencies.
- Enhanced FeatureFlagsController to support new bot_id configuration.
- Implemented handleWidgetRedirect method in OAuthProviderController for handling widget authentication.
- Created WidgetOAuthDriver interface and refactored OAuthTelegramDriver to implement widget-based authentication methods.
- Updated services.php to reflect changes in Telegram configuration.
- Added widget callback route for handling authentication responses.
- Refactored TelegramWidget component to utilize the new widget authentication flow.
These changes improve the Telegram integration by enabling widget-based authentication, enhancing user experience and security.
* Enhance Telegram integration by adding provider support and refactoring data retrieval
- Introduced a new protected property `provider` in `AbstractIntegrationHandler` to store provider information.
- Updated the constructor to assign the provider from `formIntegration`.
- Refactored `getChatId` method in `TelegramIntegration` to utilize `provider_user_id` instead of the removed bot token.
- Adjusted the `shouldRun` method to include a check for `oauth_id` in `formIntegration`.
These changes improve the handling of provider data within the Telegram integration, enhancing its functionality and reliability.
* Enhance Telegram integration by adding MarkdownV2 escaping functionality
- Updated the message text formatting in the TelegramIntegration class to escape special characters for MarkdownV2.
- Introduced a new protected method `escapeMarkdownV2` to handle the escaping of special characters, improving message rendering in Telegram.
These changes enhance the Telegram integration by ensuring that messages are properly formatted for MarkdownV2, preventing potential rendering issues.
* fix pint
* Fix ESLint warning for unused variable in TelegramWidget component
* Remove unused variable declaration in TelegramWidget component to address ESLint warning. This change enhances code quality by adhering to linting rules and improving maintainability.
* Refactor Telegram integration components by removing unused code and improving maintainability
- Removed the 'refresh_token' field from the OAuthTelegramDriver as it is no longer needed.
- Eliminated unused variable declarations and interval logic in the TelegramIntegrationActions component to address ESLint warnings and enhance code quality.
These changes streamline the codebase and adhere to best practices for maintainability.
* Enhance Telegram integration by adding validation messages and improving message formatting
- Introduced custom validation messages for the `oauth_id` field in `FormIntegrationsRequest`, enhancing user feedback during integration setup.
- Refactored message construction in `TelegramIntegration` to utilize an array for building the message text, improving readability and maintainability.
- Updated the `handle` method to include error logging for missing `chat_id` and `bot token`, enhancing error handling and debugging capabilities.
These changes improve the user experience and reliability of the Telegram integration by providing clearer validation feedback and more robust error handling.
* Update environment variables documentation for clarity and consistency
- Reformatted the environment variables table for improved readability by aligning headers and descriptions.
- Added new environment variables for Telegram bot integration, including `TELEGRAM_BOT_ID` and `TELEGRAM_BOT_TOKEN`, to support enhanced notification features.
- Adjusted the warning message regarding Docker commands to improve clarity on environment variable reloading.
These changes enhance the documentation by ensuring that it is clear, consistent, and up-to-date with the latest configuration requirements.
---------
Co-authored-by: JhumanJ <julien@nahum.net>
- Added a new `AIFormLoadingMessages` component to display dynamic loading messages with emojis during form processing, improving user feedback.
- Enhanced locale handling in `OpenCompleteForm.vue` to default to English if an invalid locale is provided, ensuring better user experience and error handling.
These changes aim to provide clearer loading states and improve localization robustness in form components.
Co-authored-by: Julien Nahum <julien@nahum.net>
Implement Enhanced Validation Logging in UserFormRequest
- Added a `failedValidation` method in `UserFormRequest` to log validation errors, including request data and user information, to the combined log channel and Slack.
- Updated `nuxt.config.ts` to integrate the latest Sentry module and adjusted configurations for improved error tracking.
- Refactored the `FeatureBase.vue` component to include error handling during user setup.
- Removed the deprecated Sentry plugin and replaced it with the new Sentry Nuxt integration for better performance and maintainability.
These changes aim to enhance error tracking and improve the overall robustness of form validation and user experience.
- Updated ESLint configuration in `.eslintrc.cjs` to enforce error handling for unused variables, allowing for better code quality and maintainability.
- Added `clone-deep` import in `OpenForm.vue` to facilitate deep cloning of objects, enhancing functionality.
- Refactored variable destructuring in `ColumnCondition.vue` and `useAlert.js` to improve readability by using underscore for ignored parameters.
- Modified `pinia-history.js` to use underscore for unused parameters in the `get` and `set` functions, aligning with the new ESLint rules.
These changes aim to improve code quality, maintainability, and consistency across the codebase.
- Updated error handling in `EditSubmissionModal.vue`, `OpenCompleteForm.vue`, and `OpenForm.vue` to utilize a new `formValidationError` method for improved user feedback on validation issues.
- Introduced `formValidationError` function in `useAlert.js` to format and display validation errors more effectively, including detailed error messages for multiple fields.
- These changes aim to provide clearer and more actionable feedback to users when form submissions fail due to validation errors, enhancing the overall user experience.
Update OpenFile.vue to Ensure Proper File Parsing
- Modified the `parsedFiles` computed property in OpenFile.vue to check if `this.value` is an array before mapping over it. This change prevents potential errors when `this.value` is null or not an array, enhancing the robustness of the file parsing logic.
These changes aim to improve the reliability of file handling within the component, ensuring that only valid arrays are processed.
- Modified Navbar.vue to enhance form validation logic by allowing access when `import.meta.server` is true, improving handling of form states in specific routes.
- Updated FormCleanings.vue to replace the icon name from "bi:stars" to "i-heroicons-sparkles-16-solid", ensuring consistency with the icon library used across the application.
These changes aim to improve the user experience and maintainability of the components by refining logic and standardizing UI elements.
- Simplified the constructor in StoreFormSubmissionJob for improved readability.
- Enhanced the storeFile method to handle null and empty values more robustly, ensuring better validation of file names.
- Updated StorageFileNameParser to return null for empty file names, improving error handling.
- Refactored OpenForm.vue to optimize form initialization and prevent unnecessary reinitializations, enhancing performance.
- Introduced new methods for managing field groups and preventing recursive updates in OpenForm.vue, improving the overall user experience.
- Enhanced FormEditorSidebar.vue to utilize Pinia store for better state management and clarity.
- Improved FormFieldEdit.vue to prevent page jumps during field editing, ensuring a smoother user experience.
- Added new getters in working_form.js for better page management and navigation within forms.
These changes aim to enhance the maintainability and performance of the form handling logic, providing a more efficient and user-friendly experience.
* Add 'exists_in_submissions' and 'does_not_exist_in_submissions' validation conditions
- Implement new validation conditions in FormLogicConditionChecker to check for existing submissions.
- Update open_filters.json and client-side filters to include the new conditions.
- Enhance FormLogicTest with test cases for the new validation conditions.
- Modify UI components to support the new logic conditions in form validation.
* Fix FormLogicConditionChecker
* Improve custom_validation_only
* fix test
---------
Co-authored-by: Julien Nahum <julien@nahum.net>
* Implement quick login/register flow with global event handling
- Add QuickRegister component with improved modal management
- Integrate quick login/register with app store state
- Implement custom event handling for login/registration flow
- Update OAuth callback to support quick login in popup windows
- Refactor authentication-related components to use global events
* Refactor authentication flow with centralized useAuth composable
- Create new useAuth composable to centralize login, registration, and social login logic
- Simplify authentication methods in LoginForm and RegisterForm
- Add event-based login/registration flow with quick login support
- Remove redundant API calls and consolidate authentication processes
- Improve error handling and analytics tracking for authentication events
* Enhance QuickRegister and RegisterForm components with unauthorized error handling
- Add closeable functionality to modals based on unauthorized error state
- Implement logout button in QuickRegister for unauthorized users
- Reset unauthorized error state on component unmount
- Update styling for "OR" text in RegisterForm for consistency
- Set unauthorized error flag in app store upon 401 response in API calls
* Refactor Authentication Flow and Remove Unused Callback Views
- Deleted unused callback views for Notion and OAuth to streamline the codebase.
- Updated QuickRegister and LoginForm components to remove the after-login event emission, replacing it with a window message system for better communication between components.
- Enhanced the RegisterForm and other components to utilize the new window message system for handling login completion, improving reliability and maintainability.
- Added a verifyAuthentication method in the useAuth composable to ensure user data is loaded correctly after social logins, including retry logic for fetching user data.
These changes aim to simplify the authentication process and improve the overall user experience by ensuring a more robust handling of login events.
* Add eslint-disable comment to useWindowMessage composable for linting control
* Refactor QuickRegister.vue for improved template structure and clarity
- Adjusted the rendering of horizontal dividers and the "or" text for better semantic HTML.
- Added a compact-header prop to the modal for enhanced layout control.
These changes aim to enhance the readability and maintainability of the QuickRegister component.
---------
Co-authored-by: Julien Nahum <julien@nahum.net>
* 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>
* Create form abuse page
* Update iframe height in report-abuse.vue for improved user experience
- Increased the minimum height of the iframe from 600px to 1000px to enhance visibility and usability of the abuse report form. This change aims to provide a better user experience by ensuring that the entire form is more easily accessible without the need for scrolling.
---------
Co-authored-by: Julien Nahum <julien@nahum.net>
* Refactor Form Not Found Handling and Improve Error Response
- Replace the existing "Whoops" message with a NotFoundForm component for better user experience when a form is not found.
- Enhance error handling in the loadForm function to set a 404 response status when a form cannot be loaded, improving clarity for users and developers.
These changes aim to streamline the user experience and provide clearer feedback when forms are unavailable.
* Refactor Navbar and NotFoundForm Components for Improved User Experience
- Simplify the Navbar component by removing unnecessary conditional rendering for the authentication display, enhancing clarity in the layout.
- Update the NotFoundForm component to utilize a dynamic actions array for rendering navigation options, improving maintainability and flexibility.
- Adjust text styles for better readability and consistency across the NotFoundForm component.
These changes aim to streamline the user interface and enhance the overall user experience when navigating forms and handling not found scenarios.
* Update NotFoundForm Component for Improved Action Clarity
- Adjust the text and icon in the actions array of the NotFoundForm component to enhance clarity and user experience. The "Start Fresh" action has been renamed to "Create Form" and the icon has been updated from a check-circle to a rocket-launch icon, better reflecting the action's purpose.
- Minor formatting adjustments were made to the template for improved readability.
These changes aim to provide users with clearer navigation options and a more intuitive interface when encountering a not found scenario.
---------
Co-authored-by: Julien Nahum <julien@nahum.net>
- Introduce conditional rendering for help text in CheckboxInput.vue and ToggleSwitchInput.vue, allowing help text to be displayed either above or below the input based on the helpPosition prop.
- Update the structure of the help slot to improve flexibility and user experience.
These changes enhance the usability of the form components by providing clearer guidance to users.
* Add regex matching filters to open_filters.json
- Introduce new regex-based filters: matches_regex and does_not_match_regex
- Add support for string-based regex matching in both API and client filter configurations
- Update filter schemas to include new regex filter options with expected string type
* Add barcode comparators and regex filters to open_filters.json and validatePropertiesLogic.js
- Introduce new barcode comparators: equals, does_not_equal, contains, does_not_contain, starts_with, ends_with, is_empty, is_not_empty, matches_regex, does_not_match_regex, content_length_equals, content_length_does_not_equal, content_length_greater_than, content_length_greater_than_or_equal_to, content_length_less_than, content_length_less_than_or_equal_to.
- Add regex matching filters: matches_regex and does_not_match_regex to open_filters.json.
- Remove console log statements from validatePropertiesLogic.js and FormPropertyLogicRule.js for cleaner code.
This update enhances the filtering capabilities and improves the validation logic by removing unnecessary debug outputs.
* Refactor Vue Components for Improved Readability and Consistency
- Update CameraUpload.vue to enhance formatting and maintain consistent indentation for better readability.
- Modify OpenFormField.vue to improve tooltip component formatting, ensuring consistent styling across the application.
- Refactor FormSecurityAccess.vue to enhance the layout of the conditional rendering for captcha providers.
- Adjust RegisterForm.vue to improve the formatting of the terms and conditions section, ensuring consistent indentation and readability.
These changes aim to enhance code maintainability and visual consistency across the components, contributing to a cleaner codebase.
---------
Co-authored-by: Julien Nahum <julien@nahum.net>
- Replace SVG icon in BarcodeInput with a new Icon component for improved visual consistency.
- Update CameraUpload component to enhance styling and functionality, including:
- Add a barcode scanning overlay for better user experience during scanning.
- Refactor video and canvas elements to improve layout and responsiveness.
- Adjust button sizes and styles for better accessibility and usability.
- Implement more robust camera handling logic, including improved facing mode management and error handling for mobile devices.
These changes aim to enhance the user interface and overall functionality of the barcode scanning feature, ensuring a smoother experience for users.
* Hidden field can never be required. Skip that validation
* Refactor form logic editor UI with improved text and styling
- Replace UAlert with plain text description
- Update action description text
- Remove help text from select input
- Simplify note about hidden field requirements
* Add test for form logic field visibility and validation
- Implement test case for fields hidden by logic conditions
- Update AnswerFormRequest to use new FormLogicPropertyResolver method for hidden field check
- Ensure required fields are skipped when hidden by form logic
---------
Co-authored-by: Julien Nahum <julien@nahum.net>
- Implement extended token lifetime for "Remember Me" functionality
- Add token expiration details to authentication responses
- Update client-side token handling to support dynamic expiration
- Modify authentication middleware to handle token initialization more robustly
- Configure JWT configuration to support longer token lifetimes
* Billing flow redirect
* fix checkout url
* Refactor checkout and subscription flow
- Improve checkout URL generation with ref unwrapping
- Enhance user data handling in subscription modal
- Remove deprecated CheckoutDetailsModal component
- Update form field and register form styling
- Add more robust user data update mechanism
* Refactor checkout and subscription flow
- Improve checkout URL generation with ref unwrapping
- Enhance user data handling in subscription modal
- Remove deprecated CheckoutDetailsModal component
- Update form field and register form styling
- Add more robust user data update mechanism
* Fix accessibility and checkout URL generation
- Add proper label for terms and conditions checkbox in RegisterForm
- Refactor checkout URL generation in SubscriptionModal using computed refs
- Improve form input handling and reactivity
---------
Co-authored-by: Julien Nahum <julien@nahum.net>
- Update FileInput component dark mode text color
- Modify OpenForm dragging state background for dark mode
- Refactor OpenFormField admin preview actions with tooltips and improved styling
- Add z-index and styling improvements for form field action buttons
* Refactor form initialization and data management in OpenForm component
- Add resetAndFill method to Form class for more flexible form data handling
- Update initForm method to use nextTick for better reactivity
- Modify form initialization logic to reset and fill form data more consistently
- Remove unnecessary computed import and add debug console.log
* fix on fill again
---------
Co-authored-by: Chirag Chhatrala <chirag.chhatrala@gmail.com>
- Add conditional rendering for captcha based on site key availability
- Dynamically generate captcha options based on configured providers
- Prevent displaying captcha input when no providers are configured
- Add runtime config checks for captcha site keys
- Update FormPropertyLogicRule to handle operators without values
- Add support for checkbox conditions like 'is_checked' and 'is_not_checked'
- Refactor logic validation in both API and client-side implementations
- Remove unnecessary console.log statements
- Update error modal text for better user experience
- Refactor field options to use default values from blocks_types.json
- Add default values for various form input types in blocks_types.json
- Improve default field initialization logic in FieldOptions and working_form store
- Add camera switching functionality for mobile devices in CameraUpload component
- Add "Show all" and "Hide all" buttons in column settings modal
- Improve column width handling and default width management
- Update OpenSelect and OpenText components to support more flexible prop types
- Add z-index to table header for better visual hierarchy
- Refactor column width property from `cell_width` to `width`
* Clean up empty HTML and help text in form inputs
* Update api/app/Http/Requests/UserFormRequest.php
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
---------
Co-authored-by: Julien Nahum <julien@nahum.net>
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
- Refactor `shouldBeRequired()` method in FormLogicPropertyResolver for clearer logic and better handling of conditional requirements
- Add comprehensive test cases for dynamic field requirement logic
- Update CustomFieldValidation component with improved UI and guidance for validation setup
- Improve error message and validation rule description in form validation interface
- Replace legacy 'equals' and 'does_not_equal' checkbox operators with 'is_checked' and 'is_not_checked'
- Update FormLogicConditionChecker in PHP and JavaScript to handle new operators
- Modify open_filters.json to reflect new checkbox comparator structure
- Add migration logic in ColumnCondition.vue to support legacy operator conversion
- Improve checkbox condition handling with explicit true/false checks
- Update .dockerignore with comprehensive ignore patterns for API and client
- Modify docker-compose files to improve service configurations
- Enhance Nginx configuration for development and production environments
- Refactor Dockerfile.api with improved build process
- Add docker-setup.sh script for simplified Docker deployment
- Update update-credentials.vue page with improved UI
- Remove hCaptcha dependency from package-lock.json
- Update PHP configuration and entrypoint scripts
Enhance CI/CD pipeline by introducing a new job to run ESLint on the client application. This ensures code quality and consistency for the frontend codebase.