Commit Graph

28 Commits

Author SHA1 Message Date
Julien Nahum 5cb07191db
Stripe Payment (#679)
* 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>
2025-04-10 12:04:25 +02:00
Chirag Chhatrala aa5c1acf3a
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>
2025-03-21 16:59:18 +01:00
Chirag Chhatrala 37a10cbdfa
Add regex matching filters to open_filters.json (#722)
* 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>
2025-03-15 13:55:42 +08:00
Julien Nahum cf4688d75e Improve numeric condition handling in form logic checker
- Add robust numeric comparison for zero and negative numbers
- Implement safe numeric parsing and validation
- Enhance condition checking for numeric fields across PHP and JavaScript
- Add comprehensive test cases for edge case numeric comparisons
- Fix 'is_not_empty' operator logic in JavaScript condition checker
2025-03-03 19:29:40 +08:00
Julien Nahum 28248259be Improve form property logic validation for checkbox conditions
- 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
2025-02-19 15:11:27 +01:00
Julien Nahum f5b9b86c16 Refactor checkbox condition logic with new operators
- 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
2025-02-10 22:03:19 +01:00
Chirag Chhatrala 75f82b3bc7
Refactor form components (#659)
* Add Barcode Input Component and Integrate Quagga for Scanning

- Introduced a new BarcodeInput component for scanning barcodes using the Quagga library.
- Updated package.json and package-lock.json to include Quagga as a dependency.
- Enhanced form themes to accommodate the new BarcodeInput component.
- Added localization support for barcode scanning actions in English.
- Updated blocks_types.json to register the new barcode input type.

These changes improve the application's functionality by allowing users to scan barcodes directly within forms, enhancing user experience and data input efficiency.

* Update Barcode scanner UI

* Barcode decoder as user selection

* improve barcode

* Refactor form components and update Tailwind configuration

- Removed unused box shadow styles from tailwind.config.js.
- Enhanced DateInput, FileInput, MatrixInput, RichTextAreaInput, and VSelect components with improved styling and error handling.
- Updated theme settings in form-themes.js to include new styles for MatrixInput and other form elements.
- Adjusted labels in FieldOptions.vue for clarity.
- Improved overall UI consistency and responsiveness across form components.

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2025-01-03 16:15:47 +01:00
Chirag Chhatrala 1285dc18d3
Support for Barcode reader (#650)
* Add Barcode Input Component and Integrate Quagga for Scanning

- Introduced a new BarcodeInput component for scanning barcodes using the Quagga library.
- Updated package.json and package-lock.json to include Quagga as a dependency.
- Enhanced form themes to accommodate the new BarcodeInput component.
- Added localization support for barcode scanning actions in English.
- Updated blocks_types.json to register the new barcode input type.

These changes improve the application's functionality by allowing users to scan barcodes directly within forms, enhancing user experience and data input efficiency.

* Update Barcode scanner UI

* Barcode decoder as user selection

* improve barcode
2025-01-03 16:07:58 +01:00
Chirag Chhatrala 09c4417731
Embed form flickering bug (#658)
* Embed form flickering bug

* fix issue when remove hidden class
2025-01-03 16:03:02 +01:00
Chirag Chhatrala 28019fc7a0
Implement regex validation conditions in form logic (#645)
* Implement regex validation conditions in form logic

- Added support for 'matches_regex' and 'does_not_match_regex' conditions in FormPropertyLogicRule and FormLogicConditionChecker.
- Updated validation logic to handle regex patterns, including error handling for invalid patterns.
- Enhanced tests to cover scenarios for successful and failed regex validation, ensuring proper feedback for form submissions.
- Updated JSON schema to include new regex condition types.

These changes improve the flexibility of form validation by allowing regex-based conditions, enhancing user experience through more robust validation mechanisms.

* update resource filters

* Remove ray

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-12-16 17:17:29 +01:00
Chirag Chhatrala 8a1282f4b0
Form Editor v2.5 (#599)
* Form Editor v2.5

* Remove log debug

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-10-23 10:34:51 +02:00
Favour Olayinka fa8c264cd4
fix phone input height (#585)
* fix phone input height

* fix width classes

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-10-10 10:45:01 +02:00
Julien Nahum 79d3dd7888
Feature flags (#543)
* Re-organize a bit controllers

* Added the featureflagcontroller

* Implement feature flags in the front-end

* Clean env files

* Clean console.log messages

* Fix feature flag test
2024-08-27 16:49:43 +02:00
Favour Olayinka 1adac8e00f
Dc3e4 new matrix field (#484)
* fix password reset bug

* wip: matrix input

* wip: matrix input

* wip: matrix input

* Fixed matric input component logic

* matrix input cleanup

* fix lint errors

* table border and radius

* cleanup, linting

* fix component methos

* wip matrix input

* matrix condition for contains and not contain

* patch matrix input condition logic

* linting

* refactor and cleanup

* fix syntax error

* Polished the matrix input

* Fix linting

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-08-23 15:28:21 +02:00
Favour Olayinka edf4d4bfe4
fix date condition logic (#510)
Co-authored-by: Julien Nahum <julien@nahum.net>
2024-08-05 14:19:00 +02:00
Julien Nahum 2ca2d97e8e
Better form themes (#465)
* Working on custom radius + input size

* Fix date input clear vertical align

* Moslty finished implementing small size

* Polishing larger theme

* Finish large theme

* Added size/radius options in form editor

* Darken help text, improve switch input help location

* Slight form editor improvement

* Fix styling

* Polish of the form editor
2024-06-27 17:52:49 +02:00
Chirag Chhatrala 795fcfc973
Select Design Changes (#409)
* Select Design Changes

* update theme file for SelectInput

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-05-16 14:50:40 +02:00
Favour Olayinka bcd45ce8a6
0351d front end linting (#377)
* feat: disable custom script for  trial users

* after lint fix

* frontend linting

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-04-15 19:39:03 +02:00
Chirag Chhatrala ae18bcbb8d
Fix Dark mode (#376)
Co-authored-by: Julien Nahum <julien@nahum.net>
2024-04-15 15:19:37 +02:00
Chirag Chhatrala 4f4f7128fa
New Date input (#368)
Co-authored-by: Julien Nahum <julien@nahum.net>
2024-04-15 15:09:19 +02:00
Daniel Roe d9996e0d9d
fix: opt in to `import.meta.*` properties (#364) 2024-03-28 17:59:41 +01:00
Favour Olayinka 659dc5086e
20334 implement desktop camera upload feature (#335)
* wip: camera upload

* Handle camera permissions

* remove console logs

* fix camera theme, hide on small  screen,

* video sizing on camera  upload

* camera feature minor fixes

* Package.json update

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-03-25 11:00:00 +01:00
formsdev c8628ed840
Separate input type for Rating,Scale,Slider (#351)
* Separate input type for Rating,Scale,Slider

* rating, scale, slider add in test cases

* Allow field type change for new types

* Added options to db factory

* Fix linting

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-03-19 15:27:21 +01:00
Julien Nahum 91911bc6e5 Multiple bug fixing 2024-02-10 12:20:45 +01:00
Favour Olayinka 0c88c9842a
Input Slider Feature (#292)
* feat: input slider feature

* Polish slider label

---------

Co-authored-by: Julien Nahum <julien@nahum.net>
2024-01-29 12:57:40 +01:00
Julien Nahum 359e993374 Fix darkMode 2024-01-16 15:00:22 +01:00
Julien Nahum e2dd0295ff Remove vform - working on form public page 2023-12-24 20:19:59 +01:00
Julien Nahum 3b798c12fd WI 2023-12-18 10:35:00 +01:00