plugins_Activities_assets_js_controllers_gw-sharing-controller.js
import { Controller } from "@hotwired/stimulus"
/**
* GW Sharing Stimulus Controller
*
* **Purpose**: Provides automated form submission functionality for GW (Group Warrant)
* sharing toggle switches in Activities plugin authorization management interfaces.
*
* **Core Responsibilities**:
* - Automatic Form Submission - Immediate form submission on toggle change
* - Toggle Switch Integration - Seamless switch state management
* - User Experience Optimization - Instant feedback for setting changes
* - Authorization Configuration - GW sharing preference management
*
* **Architecture**:
* This Stimulus controller extends the base Controller to provide automatic
* form submission when GW sharing toggle switches are changed, ensuring
* immediate persistence of user preferences without manual form submission.
*
* **Controller Configuration**:
* ```html
* <div data-controller="gw_sharing">
* <form data-gw_sharing-target="form" method="post" action="/activities/update-gw-sharing">
* <input type="checkbox" data-action="change->gw_sharing#submit">
* <!-- Other form fields -->
* </form>
* </div>
* ```
*
* **GW Sharing Context**:
* GW (Group Warrant) sharing allows authorization configurations to be
* shared across organizational groups, affecting authorization workflows
* and approval processes within the Activities plugin.
*
* **User Experience Features**:
* - **Instant Persistence**: Changes saved immediately on toggle
* - **No Manual Submission**: Eliminates need for separate save button
* - **Seamless Integration**: Works with existing form infrastructure
* - **Consistent Behavior**: Standardized across GW sharing interfaces
*
* **Toggle Switch Integration**:
* - Responds to switch state changes immediately
* - Preserves existing form data during submission
* - Maintains form validation and security measures
* - Supports multiple toggle switches per form
*
* **Security Considerations**:
* - Maintains CSRF token protection through form submission
* - Preserves server-side validation workflows
* - Respects authorization and permission checking
* - Uses standard HTTP methods for security compliance
*
* **Performance Features**:
* - Minimal JavaScript footprint for efficiency
* - Direct form submission without AJAX overhead
* - Browser-native form handling for reliability
* - No additional network requests beyond form submission
*
* **Error Handling**:
* - Browser-native form validation integration
* - Server-side error handling through standard form responses
* - Graceful degradation if JavaScript disabled
* - Form state preservation on submission errors
*
* **Integration Points**:
* - Activities Authorization Forms - GW sharing configuration
* - Toggle Switch Components - Automatic submission trigger
* - Authorization Workflows - Group warrant sharing settings
* - Form Infrastructure - Standard form submission handling
*
* **Usage Examples**:
* ```html
* <!-- GW sharing toggle with automatic submission -->
* <div data-controller="gw_sharing">
* <form data-gw_sharing-target="form" method="post">
* <label class="form-check">
* <input type="checkbox" class="form-check-input"
* data-action="change->gw_sharing#submit"
* name="gw_sharing_enabled">
* Enable GW Sharing
* </label>
* </form>
* </div>
* ```
*
* **Accessibility Features**:
* - Preserves keyboard navigation functionality
* - Maintains screen reader compatibility
* - Supports assistive technology integration
* - Follows WCAG guidelines for form interactions
*
* **Browser Compatibility**:
* - Uses standard DOM APIs for broad compatibility
* - No modern JavaScript features requiring polyfills
* - Graceful degradation in older browsers
* - Progressive enhancement approach
*
* **Troubleshooting**:
* - Verify form target configuration is correct
* - Check form action URL and method settings
* - Validate toggle switch event binding
* - Monitor network requests for form submission
*
* @see ActivitiesController GW sharing configuration endpoints
* @see Authorization Authorization entity with GW sharing settings
* @see ToggleSwitch UI component integration patterns
*/
class GWSharingController extends Controller {
static targets = ["form"]
/**
* Submit Form Automatically
*
* Triggers immediate form submission when GW sharing toggle switches
* are changed, providing instant persistence of user preferences.
*
* **Automatic Submission**:
* - Called by toggle switch change events
* - Submits form using standard browser mechanisms
* - Preserves all form data and validation
* - Maintains CSRF protection and security measures
*
* **User Experience**:
* Eliminates need for manual save actions by automatically
* persisting toggle changes when users interact with switches,
* providing immediate feedback and seamless preference management.
*
* **Form Integration**:
* Uses browser-native form submission to maintain compatibility
* with existing server-side validation, error handling, and
* security measures without additional AJAX complexity.
*/
submit() {
this.formTarget.submit();
}
}
// add to window.Controllers with a name of the controller
if (!window.Controllers) {
window.Controllers = {};
}
window.Controllers["gw_sharing"] = GWSharingController;